软件测试流程word版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.软件测试流程
1.1.软件测试整体流程
首先看一下软件生命周期。
软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析,软件设计,编码,测试,软件发布维护的过程。如下图所示:
在学习软件测试整体流程的过程中,我们要明确这样几个问题:
➢测试计划的前期是否需要需求调研?
➢测试具体分几个阶段,每个阶段执行的依据是什么?
➢每个阶段的作用是什么?
➢每个阶段都需要生成哪些文档,这些文档对整个测试工作和产品的质量保障起到哪些作用?
测试工作的各个阶段:软件测试工作必须要通过计划测试、设计测试、执行测试、评估测试几个阶段来完成。
➢计划测试阶段需要整理测试需求、制定测试计划;
➢设计测试阶段要设计测试用例和测试过程,要保证测试用例完全覆盖测试需求;要根据测试用例实现具体的自动化脚本或者手工的操作步骤;
➢执行测试阶段则通过自动化测试工具或人手工来执行那些自动化脚本或手工的操作步骤;
➢评估阶段则要对软件的质量和测试工作自身的质量做出一个客观的评价。
软件测试的整体流程具体如下图所示:
需求阶段:
设计编码阶段:
集成、系统、验收阶段:
开发生命周期中的验证活动:
测试阶段编写人员编写依据生成文档
测试计划测试经理或测试组长《需求规格说明书》或界
面原型
《测试计划》
测试设计测试设计人员《需求规格说明书》或界
面原型《测试用例》设计测试策略
测试实施测试执行人员《需求规格说明书》《测
试用例》
《缺陷报告》
测试评估测试经理或测试组长《测试总结报告》
测试阶段测试类型执行人员
单元测试模块功能测试,包含部分接口测
试、路径测试
开发人员
集成测试接口测试、路径测试、含部分功能
测试
开发人员,测试人员
系统测试功能测试、健壮性测试、性能测试、
用户界面测试、安全性测试、压力
测试、可靠性测试、安装/反安装
测试
测试人员
验收测试对于实际项目基本同上,并包含文
档测试;对于软件产品主要测试相
关技术文档
测试人员,可能包含用户
1.2.单元测试
目标:
➢检验程序最小单元有无错误(类、文件、窗口、函数、菜单、报表或一个存储过程)
◆接口、数据结构、边界、覆盖、逻辑
➢检验单元编码与设计十分吻合
依据:详细设计,编码
方法:白盒测试
测试执行人:开发工程师
进入条件:代码无错误地通过编译或汇编。
测试内容:
(1) 模块接口:对被测模块,信息是否能正确地流入和流出。
(2) 局部数据结构:模块的工作过程中,其内部的数据能否保持其完整性。
(3) 边界条件-----在边界上模块是否能正常工作。
(4) 覆盖条件------模块的运行是否达到了规定的逻辑覆盖。
(5) 出错处理-----检查模块的错误处理设施是否有效。
具体要求:
(1) 在进行单元测试之前,由项目负责人决定是否进行静态分析。
(2) 单元测试的主要形式是结构测试。
(3) 单元测试的测试计划应该根据被测单元的性质而制订:如对系统控制单元应主要采用结构测试;对复杂的计算单元应主要采用算法分析测试用例;对界面单元就应该测试各种选项的组合。
(4) 语句覆盖率应达到100%。
(5) 分支覆盖率应达到85%。
(6) 单元测试由开发部负责开展。
单元测试执行:
在进行单元测试时,需设置若干辅助测试模块。
辅助模块有两种:
➢一种是驱动模块(Driver),用以模拟被测试模块的上级模块。
➢另一种是桩模块(Stub),用以模拟被测模块工作过程中所调用的模块。
驱动模块和桩模块都是“替身”模块,而不是软件产品的真正组成的部分。
下图显示了一般的单元测试环境。
4、兼容性,检查引入一个模块后,是否对其他与之相关的模块产生负面影响;
5、全局数据结构是否正确,是否被不正常的修改;
6、集成后,每个模块的误差是否会累计扩大,是否会达到了不可接受的程度。
集成测试方式:
将模块连接起来组成一个可运行的系统,有两种方法;非渐增式测试和渐增式测试。
(1)非渐增式测试(Non-incremental testing)
当每个模块都进行单元测试后,按照软件结构要求把所有模块连接起来织成一个完整的程序,对全程序进行测试。这种测试方法叫非渐增式测试。
例如,有一块系统结构,如图(a)所示,其单元测试和集成顺序如图(b)所示。
模块d1、d2、d3、d4、d5是对各个模块做单元测试时建立的驱动模块,s1、s2、s3、s4、s5是为单元测试而建立的桩模块。
这种一次性集成方式将所测模块连接起来进行测试,但是一次试运行成功地可能性并不大。其结果如果存在错误,不易找到原因,查错和改错都会遇到困难。
(2)渐增式集成方式
逐次将未曾测试的模块和已测试的模块(或子系统)结合成程序包,然后将这些模块集成为较大系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。最后逐步集成为要求的软件系统。
根据集成的过程又可以分为
➢自顶向下集成
➢自底向上集成
➢三明治”集成法
●自顶向下的集成方式
这种集成方式是将模块按系统的程序结构,沿控制层次自顶向下进行集成。
步骤:
(1)以主模块为所测模块兼驱动模块,所有直属于主模块的下属模块全部用桩模块进行模拟测试。
(2)采用深度优先或宽度优先的策略,用实际模块替换相应桩模块,再用桩代替它们的直接下属模块,与已测试的模块或子系统集成为新的子系统。如下图
(3)进行回归测试(即重新执行以前做过的全部测试或部分测试),排除集成过程中引起错误的可能。
(4)判断是否所有的模块都已集成到系统中,是则结束测试,否则转到(2)去执行。
●自底向上的集成方式
这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。因为模块是自底向上进行集成,对于一个给定的模块,它的子模块(包括子模块的所有下属模块)已经集成并测试完成,所以不再需要桩模块。自底向上集成的步骤如下:
(1)由驱动模块控制最底层模块的并行测试,也可以把最底层模块组合成实现某一特定软件功能的簇,由驱动模块控制它进行测试。
(2)用实际模块代替驱动模块,与它已测试的直属子模块集成为子系统。
(3)为子系统配备驱动模块,进行新的测试。
(4)判断是否已集成到达主模块,是否结束测试,否则执行(2)。
下图说明自底向上集成和测试的顺序: