基本概念
一. 测试开发基本概念
1. 什么是软件测试?
软件测试就是软件测试工程师验证软件是否满足用户的需求
2. 软件测试和软件开发的区别?
(1)开发:广度小,专业度高
测试:所需技能广泛,但是专业度低
(2)软件测试和软件调试
目的不同
–测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。
参与角色不同
–测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。调试由开发人员完成。
执行的阶段不同
–测试贯穿整个软件开发生命周期,调试一般在开发阶段。
3.你为什么选择软件测试?
综合能力:沟通能力,学习能力,开发能力,文字能力,自动化测试技术,编写测试用例的能力,探索性思维
感兴趣
承受压力,承担责任
4. 什么是需求?
用户的期望和满足合同(文档,规则,标准)规定所需要的条件和权限
用户需求和软件需求
软件需求是用户需求转化而来的,它是用户需求的细化
用户需求比较粗略,直接实现会有困难,因为没有细节,所有需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程文档。
二. 测试开发基础
1. 需求是软件测试的依据
验证需求,保证需求正确可实现。细化需求,从需求中提炼出一个个测试项。
问题:软件测试人员如何深入了解需求?
从需求分析阶段就开始介入了解需求,站在用户需求的角度
2. 用户名和密码登陆测试用例
2.1 功能角度:
- 用户名和密码是否大小写敏感
- 页面上的密码框是否加密显示
- 后台系统创建的用户第一次登陆成功时,是否提示修改初始密码。
- 忘记用户名和忘记密码的功能是否可用。
- 前端页面是否根据设计要求限制用户名和密码的长度
- 如果登陆成功需要验证码,点击验证码图片是否可以更换(更新)验证码,更新后的验证码是否可用。
- 刷新页面是否会刷新验证码
- 如果验证码具有时效性,需要验证时效内和时效外的验证码是否有效。
- 用户登录成功,但是回话超时后,继续操作,是否会重新定向到用户登录页面。
- 不同级别的用户,登陆系统后权限是否正确。
- 页面登陆的焦点是否定位在用户名输入框中(易用性)
- 快捷键Tab和Enter键是否可以正常使用。
2.2 非功能需求维度:
- 用户密码后台(数据库)存储是否加密。
- 用户密码在网络上传输中是否加密
- 密码是否具有有效期,密码有效期到期之后,是否提示需要修改密码。
- 不登陆的情况下,在浏览器中直接输入登陆后才可以访问的URL地址,验证是否会重新定向到用户登录界面。
- 密码输入框是否不支持复制和粘贴。
- 密码输入框内输入的密码是否在页面源码模式下别查看。
- 用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的行为是否被篡改。
- 用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统的行为是否被篡改。
- 连续多次登录失败的情况下系统是否会阻止后续的尝试以应对暴力破解。
- 同一用户在同一终端的多种浏览器上登录,验证登陆功能的互斥性是否符合设计预期。
- 同一用户先后在多台终端浏览器上登录,验证登录是否具有互斥性。
2.3 性能:
- 单用户登录的响应时间是否小于3s
- 高并发场景下用户登陆的响应时间是否小于5s.
- 高并发场景下服务端的监控指标是否符合预期。
- 高并发场景下,是否出现死锁和不合理的等待。
- 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。
2.4 兼容性:
1.不同浏览器下,验证登陆页面的显示以及功能的正确性。
2. 相同浏览器的不同版本,验证登陆页面的显示以及功能的正确性
3. 不同移动设备终端的不同浏览器下,验证登陆页面的显示以及功能的正确性。
4. 不同分辨率的界面下,验证登陆页面的显示以及功能的正确性。
3. 测试用例
测试用例就是向被测试系统发起的一组集合,包含测试环境,测试数据,测试步骤,预期结果,(重要性、优先级、操作方式、标题等)