软件测试概述
一、软件测试的定义
软件测试是为了发现错误而针对某个程序或系统的执行过程,其目的在于检验它是否满足规定的需求。
二、软件测试的原则
1、穷举测试是不可能的
2、测试用例的设计是关键
3、缺陷具有免疫性→测试用例要不断更新
4、对发现错误较多的程序段,应进行更深入的测试
三、测试的生命周期
1、计划:标志测试条件(确定测试什么)和测试的优先级
(1)安排进度
(2)分配资源、人员
(3)确定测试的起始点和结束点
2、设计:设计测试用例(确定怎么测试)
(1)设计测试流程
1)测试过程
2)测试类型(2)设计测试用例
测试用例由输入数据 和预期结果组成
1)数据
2)文件
3)操作序列
4)预期结果测试用例的特性:有效性、经济性、可修改性
测试用例的基本要素:(1)用例编号
(2)用例名称
(3)测试背景
(4)前置条件
(5)优先级
(6)重要级
(7)测试数据
(8)测试步骤
(9)预期结果
(10)实际结果
(11)备注
3、开发:测试开发(设计脚本、数据等)
4、执行:执行测试用例
5、评估:将测试结果与期望结果进行比较
测试结果的评估:
(1)错误数据统计
(2)缺陷报告单:缺陷的编号、被测软件版本、优先级、严重程度、缺陷描述、测试步骤、修复缺陷人员等
软件缺陷的级别:
(1)致命的
(2)严重的
(3)一般的
(4)微小的
(5)建议
四、软件测试的分类
1、方法
(1) 白盒测试
(2)黑盒测试
2、测试阶段或层次
(1)单元测试
(2)集成测试
(3)系统测试
(4)验收测试
3、目标或特性
(1)功能测试
(2)强壮性测试
(3)性能测试
(4)适用性测试
(5)可靠性测试
4、是否执行被测试软件
是:动态测试
否:静态测试
5、执行时是否需要人工干预
手工测试
自动化测试
6、测试实施组织
开发方测试(α测试)
用户测试
第三方测试
7、其他
回归测试
随机测试
变异测试
蜕变测试
组合测试
8、非功能性测试
安装测试
兼容性测试
性能测试
文档和帮助测试
保密性测试
压力测试
故障恢复测试
静态测试
静态测试:通过检查和评审对软件进行测试的方法。
评审的目的:在项目早期发现缺陷;降低项目失败风险;分享知识
评审分类:培训评审;预备评审;同行评审;状态评审
一、同行评审
1、类型
审查
小组评审
走读
桌面评审
临时评审
白盒测试
基本路径测试
基于控制流的测试
针对循环的测试
基于数据流的测试
变异测试
白盒测试又称为结构测试或逻辑驱动测试,是针对被测试程序单元内部如何工作的测试,特点是基于被测试程序的源代码,而不是软件的需求规格说明
一、基本/独立路径测试法
1、流图
流图又称程序图或控制流图,流图只有两种图形符号:结点和控制流线。结点用带标号的圆圈表示,可以代表一个或多个语句、一个处理框或一个判断框。控制流线用带箭头的弧线表示,代表程序中控制流。流图是一个可表示为G=<N,E>的有向图,其中,N表示图中的结点,而E表示图中的有向边
2、圈复杂度
计算公式:
① V(G)=m-n+2 其中:m表示有向图G中有向边的个数;n表示有向图中的结点数
② V(G)=强连通的流图在平面上围成的区域数
③ V(G)=二值判定结点数+1
3、基本(独立)路径法
一条路径是独立路径,那么其应满足:
(1)是一条从入口节点到出口节点的路径;
(2)该路径至少包含一条其它基本路径没有包含的边
圈复杂度 = 独立路径数的上限
二、基于控制流的测试
1、基于控制流的测试充分性准则
2、基于控制流的覆盖准则
语句覆盖
判定覆盖(分支