软件测试基础知识
什么是软件测试:在规定条件下对程序进行操作,从而发现问题,对软件质量进行评估的过程
目的:里最少的人力、物力、时间找到软件中的缺陷并修改,从而回避商业风险
定义:使用人工和自动手段运行程序,目的在于检验是否满足了需求
原则:
1.所以测试追溯到用户需求
2.把尽早和不断的测试,最为座右铭
3.测试工作要由专业人员来执行
4.80%的错误出现在20%的模块中
5.设计测试用例(测什么?怎么测?)时,要考虑各种情况
6.一定要写缺陷报告
7.制定严格的测试计划
8.完全测试不能可能,测试要终止
9.注意回归测试(修改了旧代码后,要确认没有引入新的问题)
10.妥善保存一切测试文档
软件产品质量模型
六大特性
功能性:合适性、准确性、互操作性、保密安全性
可靠性:成熟性、容错性、易恢复性(出现错误可以很快恢复)
易用性:易理解性、易学性、易操作性、吸引性(软件界面是否流畅、提示是否友好、用户使用功能是否得当)
效率:时间特性、资源利用性软件一定是高效的
可维护性:易分享性、易改变性、稳定性、易测试性
可移植性:适应性(适用不同的系统)、易安装性、共存性、易替代性
软件质量模型保证(SQA)
五个基本目标
1.保证有计划的进行
2.保证遵循了步骤和需求
3.即使通知给对应人员
4.高管可以接触到项目内容
5软件质量需要测试工作来保证
qa和qc
qa:检验产品质量,保证产品符合客户去求
qc:设计过程的质量
关系:qc进行治疗控制,qa确保qc按步骤执行
软件测试基础流程
1.需求分析
2.编写测试用例(测什么,如何测)
将需求➡️测试要点(测试内容)➡️测试点(具体测试细节)
3.评审测试用例
4.搭建测试环境
5.等待开发提交测试包
6.部署测试包
7.冒烟测试(对软件主题基本功能进行基本测试)
8.执行测试用例
9.bug跟踪处理(提交bug回归测试,为测试原则9)
10.多轮之后符合需求
11.测试结果
测试分类
1.按测试阶段划分
(1)单元测试(模块测试):针对软件设计中最小单位-程序模块,可能是一个函数,可能是一个类或者一个界面
(2)集成测试(组装测试):在单元测试的基础上,把多个模块组装到一起进行,重点关注模块和模块之间的接口
(3)系统测试:把整个软件项目看成一个整体进行测试,测试依据是需求说明书(到此阶段,软件基本是完成的)
(4)验收测试:检验软件是否符合用户需求
α测试
1.Alpha内部版本
2.通常只在软件开发者内部交流
3.一般而言,该版本bug比较多
β测试
1.Beta公测版本,对所有用户开发的测试版本
2.版本通常由软件公司发布
3.通过一些专业爱好者的测试,将结果反馈给开发者,开发者进行针对性修改
γ测试
1.Gamma软件版本正式发行前的候选版本
2.是否查看源代码分类
(1)黑盒:只测试功能,不关注功能具体的实现方式
(2)白盒:不但关注功能,还要关注代码如何实现的
(3)灰盒:介于黑盒和白盒之间
3.按照是否运行分类
(1)静态测试:不运行软件,静态观察软件是否符合预期
(2)动态测试:运行软件,在运行过程中测试
4.是否自动化
(1)手工测试:通过测试工程师手工对软件进行测试
(2)自动化测试:通过编程写代码,通过程序自动测试软件是否有bug
5.其他分类
(1)冒烟测试:对软件基本流程功能做粗略测试
(2)回归测试:修复一个bug后,需对之间测试用例在新的代码下再次执行(会出现改新bug,出其他bug,一般阶段性回归)
(3)随机测试:对软件的重要功能进行复测
(4)探索性测试:边了解学习,边测试项目(实习阶段)
软件开发过程模型
开发模型
1.瀑布模型
流程:
(1)需求分析
研发分析需求说明书
判断需求可实现性
(2)概要设计
用到的具体技术点
大致模块划分
(3)详细设计
详细到可以为编码做支持
类和类关系,类的设计
函数设计
各个接口的细节
数据库表的关系,字段关系
(4)编码
依托于详细设计进行编码操作
(5)测试
(6)维护
特点:线性模型、文档驱动
优缺点:
(1)每个阶段很清晰
(2)只需要关注后续阶段
(3)依赖需求,不能适应需求变化
(4)风险到项目后期才体现,失去早期纠正机会
2.快速原型模型
特点:一边确定需求一边实现
优缺点:
(1)避免瀑布模型的缺点,可以适应早期的需求变化
(2)适合小型项目,不适合特别大的项目
3.螺旋模型
特点:引进风险分析活动
优缺点:
(1)引入风险分析
(2)风险分析需要专业知识人员