软件测试
1.什么是软件测试:定义:使用人工或自动的手段来运行或测试软件系统的过程,
以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
2.软件测试的对象:涵盖了软件研发周期的所有步骤,包括(需求,概要设计,源码,运行环境,测试对象)
3.软件测试5大要素,2个目标:
5大要素:质量(核心),人员(决定因素),技术,流程(测试用例),资源(硬件设备,软件环境)。
2个目标:提高测试覆盖率,提高测试效率,保证软件质量。
4.软件测试需遵循的原则:
一.测试显示缺陷的存在,但不能证明系统不存在缺陷。
二.穷尽测试是不可能的,应设定终止条件。
三.测试尽量在前期进行。
四.缺陷具备群集特性。
五.测试的杀虫剂悖论。(测试用例,测试方法需要及时调整)
六.测试的二八原则。(百分之80的时间放在百分之20的重点模块)
七.测试活动依赖于测试背景。
按测试阶段来分:
一.单元测试:
定义:对软件中最小可测试单元进行检查和验证。
原则:1.尽可能的保证各个测试用例是互相独立的。
2.一般由开发人员来实施,用以检测所开发的代码功能符合自己的设计要求。
益处:1.能尽早发现缺陷。
2.有利于重构。
3.简化集成。
4.文档()
5.用于测试。
单元测试框架:XUnit(各种语言的Unit)
二.集成测试
定义:在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明
要求组装成模块,子系统或系统的过程中各个部分工作是否达到或实现相应的技术指标及要求活动。
实习方案:
1. Big Bang
2. 自顶向下
3. 自底向上
4. 核心系统集成
5. 高频集成
集成测试与单元测试的区别:
1.测试的对象不同
2.测试的依据不同
3.测试的方法不同
三.系统测试
定义:将经过集成测试的软件,作为计算机系统的一部分,与系统中其他
部分结合起来,在实际运行环境下对计算机系统进行的一系列严格
有效的测试,发现软件潜在的问题,保证系统的正常运行。
关注点:关注系统本身的使用,与其他相关系统的联通,系统的压力测试
集成测试与系统测试的不同:
测试内容:
集成测试:各个模块之间的接口,偏向于技术
系统测试:整个系统的功能和性能,偏向于业务
四.验收测试
定义:也称交付测试。针对用户的需求,业务流程的正式的测试,确定系统
是否满足验收标准,由用户,客户或其他授权机构决定是否接受系统。
按测试手段分类:
按照测试时对象的可见度: 黑盒测试(关注功能),白盒测试(了解程序内部的逻辑结构)
按照测试对象的状态: 静态测试,动态测试
按照测试执行的方式: 手工测试,自动测试
黑盒测试:
1.是否有不正确或遗漏的功能
2.接口上,输入是否能正确接受,能否输出正确的结果。
3.是否有数据结构错误或外部信息访问错误。
4.性能是否能够满足要求。
黑盒测试的主要方法:
1.等价类划分法:程序有很多输入条件,把所有的条件等价的划分归类,形成若干典型的代表性输入。通过这些典型进行测试用例的设计
2.边界值分析法:特殊的等价类划分法,关注各种边界值条件
3.错误推测法:根据经验或直觉判断程序中容易出错的地方,设计测试用例。
4.因果图法:拿到程序的需求规格说明书,将输入看做原因,将输出看做结果,赋予这些特殊的符号,形成因果图
5.正交试验分析法:从一组数据中选出典型的代表性输入数据,然后设计测试用例。
6.状态迁移图法:根据软件的状态迁移关系,设计测试用例
7.流程分析法:通过梳理程序的逻辑执行路径,来设计测试用例。
白盒测试的主要方法:
1.代码检测法:多面检查,代码审查,走查,测试代码的一致性。
2.静态结构分析法:通过使用工具,分析代码的内部结构,数据结构
3.静态质量度量发
4.逻辑覆盖法:语句,条件,条件组合,分支,路径,条件和路径的组合判定
5.基本路径测试法:程序控制流图的基础上,
灰盒测试:介于黑,白测试之间,关注输出对于输入的正确性
同时关注内部表现。
静态测试:
定义:无需执行被测程序,通过评审软件文档或代码,度量程序静态复杂度
检测软件是否符合编程标准,借以发现程序的不足之处,减少错误出现概率。
方法:
1.互审:相互检查代码
2.走查:小组集体走查
3.会议:召开会议,
动态测试:
定义:通过运行被测程序,检查运行结果与预期结果的差异,
并分析运行效率,正确性和健壮性。
手工测试:
定义:有专门的测试人员从用户的视角验证软件是否满足设计要求的行为
更适用针对深度的测试和强调主观判断的测试。
自动化测试:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
(单元测试,接口测试,性能测试)
1.瀑布模型:
项目计划-需求分析-软件设计-程序开发-软件测试-集成维护
2.V模型(使用最广泛的模型):
需求分析-概要设计-详细设计-软件编码
-单元测试-集成测试-系统测试-验收测试
3.W模型:
4.H模型:
5.敏捷模型:遵循敏捷宣言的一种测试模型
敏捷宣言:
个体与交互 重于 过程和工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划
次宣言中后者并非全无价值但更看重前者