一、软件测试概要
主要是为了保证软件的质量,更加安全合理的运行,所以提出了软件测试的概念,目的就是将bug尽可能的扼杀在摇篮中,减少损失。
早期定义
软件测试是对程序能够按预期运行建立起一种信心----BIll Hetzel,1973
经典定义
测试是为发现错误而执行程序的过程。----Myers,1979
IEEE定义(ISO/IEC/IEEE 29119)
使用人工或自动的手段来运行或测量软件系统的过程,已检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
软件测试的五大要素和两个目标
软件测试所遵循的原则
1.测试显示缺陷的存在,但不能证明系统不存在缺陷
2.穷尽测试是不可能的,应设定及时终止的条件。
3.测试应该尽早进行(发现越早,缺陷修复成本越低)
4.缺陷具备群集特性。
5.测试的杀虫剂悖论。(用不同的方法去测试,避免免疫)
6.测试的二八原则
7.测试活动依赖于测试背景。
二、软件测试阶段、手段、模式
1.软件测试阶段
单元测试
对软件中的最小可测试单元进行检查和验证。
单元测试的原则
1.尽可能保证各个测试用例是相互独立的。
2.一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
集成测试
是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
集成测试的主要方案
1.Big Bang
2.自顶向下
3.自底向上
4.核心系统集成
5.高频集成
系统测试
是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。
系统测试的关注点
a.关注系统本身的使用
b.关注系统与其他相关系统间的连通
c.关注系统在不同使用压力下的表现
注意点
集成测试:各个单元模块之间的接口
系统测试:整个系统的功能和性能
验收测试
也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
细分
用户验收测试
运行验收测试
合同和规范验收测试
alpha测试(用户进行,开发方提供环境)
Beta测试(完全由用户来进行测试)
2.软件测试手段
根据测试的可见度分为:黑盒测试、白盒测试
黑盒测试
完全不考虑程序内部结构,根据报出的接口,只看外部结构,不考虑内部逻辑,只看功能是否可以实现。
优点
1.容易实施,不需要关注内部的实现
2.更贴近用户的使用角度
缺点
1.测试覆盖率较低,一般只能覆盖到代码量的不到40%。
2.针对黑盒测试的自动化测试,复用率较低,维护成本较高。
黑盒测试的主要测试问题
1.是否有不正确或遗漏的功能
2.在接口上,输入是否能正确的接受,能否输出正确的结果。
3.是否有数据结构错误或外部信息(例如数据文件)访问错误
4.性能是否能够满足要求。
黑盒测试的主要设计方法
白盒测试(结构化测试、透明盒子)
内部结构以及逻辑单位都会呈现出来。
主要逻辑结构
优点
1.迫使测试人员去认真仔细思考软件的实现以及原理
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底。
缺点
1.昂贵
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不能直接验证需求的正确性
白盒测试的主要测试方法
灰盒测试
介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部的表现。
根据测试的状态分为:静态测试、动态测试
静态测试
静态测试是指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。
动态测试
通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。
根据测试的执行的方式:手工测试、自动化测试
手工测试
由专门的测试人员从用户的视角来验证软件是否满足设计要求的行为。主要针对深度的测试和强调主观判断的测试。
众包测试、探索式测试。
自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
单元测试、接口测试、性能测试
3.软件测试模式
按测试模式来分类
瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。
传统的瀑布模型
瀑布模型的优缺点
V模型
w模型
x模型
H模型
4.敏捷测试
用户体验为王道,强调从客户角度进行测试,重点关注迭代测试新功能,不在强调测试阶段。尽早测试,不间断持续。(边开发边测试、实时反馈)
基于脚本的测试---SBT
Script-based Testing
Scripted Testing(ST)
Exploratory Testing(ET)
完全抛开测试脚本的测试
它是一种测试风格、测试思维而不是一种测试技术。
ST vs ET
三、软件测试类型
1.性能测试
负载测试、压力测试、稳定性测试(持续性稍大访问量的访问)
性能指标
1.并发用户数VU 2.每秒事务数TPS;3.设备性能 4.统响应时间
2.安全测试
渗透测试
通过模拟对系统软件系统的恶意攻击行为来模拟。