软件测试理论基础:
一、定义和目的:
软件:程序+数据+文档
软件测试:人工和自动化手段进行或测试某个系统的过程(检验是否满足规定需求/弄清预期和实际结果的差别)
目的:找到bug+提高质量+提高用户体验
二、应用软件架构:
B/S架构:浏览器--服务器
C/S架构:客户端--服务器
三、分类:
a、测试阶段划分:(从小到大的4个阶段)
1.单元测试:对模块/函数进行测试(对程序代码测试)
执行者:开发人员
2.集成测试:多个模块组装在一起进行的测试
执行者:开发人员
3.系统测试:程序+外设+网络等其他元素进行的测试
执行者:测试人员
4.验收测试:以用户为主进行的测试(分两种)
a.Alpha测试:用户到开发方对软件进行测试,测试环境受开发方控制,人不多,时间集中
b.Beta测试:测试环境不受开发方控制,人多,时间不集中
执行者:用户
b、测试技术划分:(是否查看代码的3种测试)
1.黑盒测试:只需要关注外部输入输出
2.白盒测试:只需要关注内部的逻辑实现
3.灰盒测试:两者都需关注
c、被测对象是否运行划分:
1.动态测试:运行被测系统下,而进行的测试
2.静态测试:不需要运行被测系统,而进行的测试(界面、文档的检查和代码走查)
d、不同测试手段划分:
1.手工测试:鼠标手动测试
2.自动化测试:通过代码/工具进行测试(postman、selenium、jmeter等等)
e、测试内容划分:
1.功能测试:验证功能是否符合需求
2.界面测试:被测系统界面是否与原型图一致
3.安全测试:对被测系统的安全测试(多次输入密码和SQL注入问题等等)
4.兼容性测试:不同浏览器下测试是否正常
5.易用性测试:各个功能是否易操作、易理解、易上手
6.性能测试:并发用户增加,高并发场景下,软件是否正常
f、其他测试:
1.冒烟测试:正式测试之前对核心功能进行的测试
执行者:开发或者测试主管
2.回归测试:开发修改完存在问题之后的再一次测试(不仅仅只测问题功能,还需要测试其他功能,检查其他功能是否被影响)
3.自由测试:根据经验随意测试
四、业务场景的测试用例设计:
登录功能为例:从多角度分析(一般是测试内容划分)
1.功能角度:通过方法论(像边界值、等价类划分、错误推测法等等)
举例:
a.输入已注册的正确用户名和正确密码,验证是否登录成功;
b.输入已注册的用户名和错误密码,验证是否登录失败,并且提示信息
c.用户密码两者为空是否登录成功,一者为空是否登陆成功,还有未注册和登录功能启用验证码功能等等其他情况
2.性能角度:
举例:
a.单用户响应时间是否小于3s
b.高并发场景下系统是否异常等等
3.兼容性角度:
举例:
a.不同浏览器下运行是否正常(谷歌、火狐、百度等等)
4.用户体验角度(易用性):
举例:
a.是否存在快捷键操作
b.是否易操作、易理解上手
5.安全性角度:
举例:
a多次输入密码,.是否运行输入
b.SQL注入问题等等