软件测试基础知识
- 1.测试模型
- 2.测试分类
- 3.测试目的与原则
- 4.测试流程
- 5.测试发展规划
- 6.单元测试
- 7.黑盒测试
- 8.白盒测试
- 9.缺陷
1.测试模型
-
瀑布模型
开发将系统都做好了,然后测试。最大问题是测试工作后置,导致整个项目开发完成之后如果发现比较重要的问题,修改的成本是非常大的。 -
V模型
将测试过程细化,分为单元测试,集成测试,系统测试和验收测试,但没有解决测试后置问题。 -
W模型
将测试和开发过程分离出来,对整个项目过程中的需求文档,设计文档同样要进行测试,将测试工作前置,大大降低整个项目的质量风险。 -
敏捷模型(目前流行使用)
主要特点就是为了适应现代互联网公司的“短频快”的开发节奏而设计的一种测试和开发的模型。
迭代:每只迭代叫做一个sprint,每个sprint里面选出来要实现的需求会安排到sprint backlog里面。每个sprint一般是以一个月作为一个周期。
-
其他模型
还有H模型,X模型,前置模型
2.测试分类
-
按阶段划分
单元测试:某个特定函数的行为。开发人员进行白盒测试。
集成测试:模块之间的依赖接口。以黑盒测试为主,使用postman进行接口测试。方法有非增量式集成测试(一步到位),增量式集成测试(自顶向下增量式,自低向上增量式,三明治集成)。
确认测试:软件功能,性能及其他特性是否与用户要求一致。以黑盒测试为主,包括功能测试,兼容性测试,压力测试。
系统测试:整个软件系统与计算机硬件。以黑盒测试为主,包括功能测试,兼容性测试,压力测试。
验收测试:用户参与测试。以黑盒测试为主,是用户对软件最终检查。 -
按执行状态划分
动态测试:运行被测试的程序,构造测试实例,执行程序及分析程序的输出结果
静态测试:不运行被测试的程序 -
按测试技术划分
白盒测试:检测产品内部的结构及检验程序中的每条通路是否都能接通,按照预定要求正确工作。
黑盒测试:不考虑程序内部结构和特性。
灰盒测试:测试各个组件之间的逻辑关系是否正确,采用桩驱动把各个函数按照一定的逻辑串起来。 -
按执行主体划分
验收测试:开发者和用户共同去检测与证实。
用户测试:通过用户大量使用的评价,检查软件,用户使用性测试。
第三方测试:第三方测试机构来进行 -
按不同手段划分
手工测试
自动化测试(通过工具或者代码) -
按测试产品划分
移动端测试
web端测试 -
按测试包含的内容划分
功能测试
界面测试
安全测试:关注指标为数据要加密传输,防止溢出,sql注入,抓包工具获取信息,病毒攻击,数据存储。
兼容性测试
易用性测试
可靠性测试
安装测试:下载安装,卸载,重新安装,中断等。
性能测试:关注指标有CPU,内存,响应时间,闪退,卡顿。 -
按测试流程划分
冒烟测试:目的是为了测试这个需求的主流程,主干功能是否正常。
需求测试:测试新开发的需求功能是否正常。
回归测试:测试整个系统功能是否正常,没有被新开发的需求影响出错。
回归测试策略:
1.完全回归
2.选择性回归(3种方法)
a.覆盖修改法:针对被修改的部分,选取或重新构造测试用例验证没有错误。
b.周边影响法:包含覆盖修改法确定的用例,还需要分析修改扩散影响,对那些收到修改间接影响的部分选择测试用例验证它没有错误。
c.指标达成法:类似单元测试的方法,在重新执行测试前,先确定一个要达成的指标,如修改部分代码100%覆盖,与修改有关的接口60%的覆盖,基于这种要求选择一个最小的测试用例集合。
3.测试目的与原则
-
目的
检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 -
原则
证伪而非证真,
尽早地和不断地进行测试,
重视无效数据和非预期的测试,
对测试结果做全面检查,
测试现场保护和资料归档,
程序员应避免检查自己的程序,
注意群集现象,
用例要定期评审。
4.测试流程
测试计划:了解测试需求,安排测试人员,时间及资源。
测试设计:根据测试需求提取测试要点,编写测试用例
测试开发:建立可重复使用的自动化测试过程。(可有可无)
测试执行:冒烟测试,需求测试,回归测试。执行测试用例,提交bug,跟踪bug,验证bug被解决。
测试评估:确保缺陷全部被解决,编写测试报告。
5.测试发展规划
初级测试工程师—中级测试工程师—高级测试工程师—测试组负责人—测试开发
- 技术方向
自动化测试,接口测试,性能测试,测试开发,安全测试,测试架构师 - 管理方向
测试经理,项目经理,SCRUM MASTER,测试/质量总监 - 业务方向
业务测试专家(银行,金融),需求分析师,产品经理
6.单元测试
- 主要任务
模块接口测试:全局变量定义一致性,调用参数
局部数据结构测试:数据的定义和使用
边界条件测试:循环边界,输入边界
执行路径测试:关键路径,重要路径 - 步骤
驱动模块:相当于被测模块的主程序,用于接收测试数据,并把这些数据传送给被测模块,启动被测模块,最后输出实测结果。
桩模块:用来模拟被测模块工作过程中所调用的模块,一般只进行很少的数据处理。
7.黑盒测试
-
黑盒测试划分
功能测试:逻辑测试,界面测试,易用性测试,安装测试,兼容性测试
性能测试:一般性测试,稳定性测试,负载测试,压力测试 -
黑盒测试方法
(1)等价类划分
有效等价类:合理的,有意义的输入数据构成的集合
无效等价类:无意义,不合理
比如:密码8-10位
有效等价类:8-10位密码 。 无效等价类:0-7,10位以上
(2)边界值分析
一般边界值分析:取值为min,min+,normal,max-,max,测试用例数为4n+1。
健壮性边界值分析:取值为min,min+,min-,normal,max-,max,max+,测试用例数为6n+1
比如:8-16位
一般边界值分析取值:8,9,8-16其中一位,15,16 。 健壮性边界值分析:7,8,9,8-16其中一位,15,16,17
(3)决策表
(4)因果图
适用于描述多种输入条件组合,相应产生多个动作的方法。原因-结果图,约束图
(5)场景法:基本流即软件操作步骤,备选流即操作过程遇到的问题。 -
几类错误
功能不正确或遗漏
界面错误
数据库访问错误
性能错误
8.白盒测试
对代码的测试,一般由开发完成。
-
白盒测试划分
静态白盒测试:不执行的条件下审查软件设计,体系结构和代码
动态白盒测试:通过查看并使用代码的内部结构和执行测试 -
白盒测试方法
逻辑覆盖法:语句覆盖,判定覆盖,条件覆盖,条件判定覆盖,修正条件判定覆盖,条件组合覆盖,路径覆盖。
路径分析法:绘制控制流图—计算复杂性—确定独立路径的集合—测试用例生成
控制结构测试:条件测试(<,=,or),循环测试(简单循环,嵌套循环,串接循环),路径覆盖(舍弃一些次因素,减少路径的数量,只考虑通过循环体零次和一次这两种情况)
数据流测试:变量定义测试,程序片法。
9.缺陷
缺陷标识:使用数字序号表示
缺陷类型:功能,用户界面,文档,软件包,性能,系统/模块接口
缺陷严重程度:致命,严重,一般,较小
缺陷产生的可能性:总是,通常,有时,很小
缺陷优先级:立即解决,高优先级,正常排队,低优先级
缺陷状态:激活或打开,已修正或修复,关闭或非激活,重新打开,推迟,保留,不能重现
缺陷来源:需求说明书,设计文档,系统集成接口,数据流(库)
缺陷流程: