![cover](https://img-blog.csdnimg.cn/img_convert/6a0a4e60860f4101fa38804d8a2e3e12.png)
软件测试的分类
一、按测试阶段分类软件测试的步骤:单元测试、集成测试、确认测试、系统测试、验收测试(发版测试)1、单元测试:完成最小的软件设计单元的验证工作,确保模块被正确的编码手段:stub代码、mock代码、驱动代码2、集成测试在单元测试的基础上,将多个模块组装起来进行测试,重点关注模块的接口部分1)增量式集成测试是一种逐步集成和逐步测试的方法,把可能出现的错误分散暴露出来,便于找到问题和修改......
目录
一、按测试阶段分类
软件测试的步骤:单元测试、集成测试、确认测试、系统测试、验收测试(发版测试)
1、单元测试
完成最小的软件设计单元的验证工作,确保模块被正确的编码
(依据概要设计)(白盒测试)
手段:stub代码、mock代码、驱动代码
2、集成测试
在单元测试的基础上,将多个模块组装起来进行测试,重点关注模块的接口部分
(依据详细设计)(黑盒白盒)
1)增量式集成测试
是一种逐步集成和逐步测试的方法,把可能出现的错误分散暴露出来,便于找到问题和修改(对各个模块一边组装一边测试)
优点:更早地发现模块间的接口错误,有利于错误定位
缺点:需要编写驱动模块和桩模块
自顶向下增量式测试:从程序的初始模块开始测试
优点:只需要一个驱动,减少驱动器开发的费用;支持故障隔离;较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能,功能较早证实,带来信心
缺点:桩的开发量大;底层验证被推迟;底层组件测试不充分
自底向上增量式测试:从程序的底层模块开始测试
优点:减少了桩的工作量;支持故障隔离;工作最初可以并行集成,比自顶向下效率高;对底层组件的行为较早验证。
缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能及时发现
桩模块:模拟被测模块所调用的模块,而不是软件产品的组成部分。在集成测试前,要为被测模块编制一些模拟下级功能的替身模块,以代替被测模块的接口,传递或接收被测模块的数据,这些“假”模块称为被测模块的桩模块。
驱动模块:模拟被测试模块的上一级模块,相当于被测模块的主程序。
主模块作为驱动模块,与之相连的模块用桩模块代替。
混合增量式测试(三明治测试)
优点:具有自顶向下和自底向上的优点,运用了一定的技巧,能够减少桩模块和驱动模块的开发
缺点:中间层不能尽早得到充分的测试,或者因为中间层如果选择不适当导致增加驱动模块的和桩模块工作量的设计负担
2)非增量式集成测试
对每个单元进行充分测试后,把所有单元全部集成起来,一次性进行集成测试
优点:减少测试工作量
缺点:难以定位问题,可能会发现很多错误
1)Big-Bang集成测试
也叫一次性组装或者整体拼装。
在辅助模块的辅助下,一次性把所有系统组件集合到被测系统中(不考虑组件之间的相互依赖性或者可能存在的风险),一般一次性成功的几率不大
适用于:在原有稳定系统增加子模块或者系统较小时使用
优点:成本低,测试用例少,幸运的话,可以不需要或者只需要开发少量的辅助模块,就可以完成测试
缺点:不可避免的存在模块间接口、全局数据结构等方面的问题,一次试运行成功的可能性并不大,即使运行成功,也很可能会存在隐患。
3、确认测试
4、系统测试
把项目当做一个整体进行测试
(依据需求说明书)(黑盒测试)(包括:功能、性能、压力、安全、回归等)
手段:GUI手段等
5、验收测试
是一项确认产品是否能满足合同或用户需求的测试
(依据需求说明书/用户需求)
- α版本(内测版本):由用户在开发环境中测试,测试环境可控,并且用户在开发者的指导下进行测试,开发者负责记录发现的错误和使用中遇到的问题
- β版本(公测版本):在软件公司外部展开的测试,测试环境不可控,是由软件的最终用户们在一个或多个客户场所下进行,由用户记录在测试中遇到的问题,并定期报给开发者
- γ测试(接近正式版本)
测试粒度大小排序:单元<集成<系统<验证
二、按是否查看源代码分类
1、黑盒测试
只关注功能,不关注功能具体实现方法
1)黑盒测试方法
- 等价类划分法:将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。可以划分为有效等价类和无效等价类。
- 边界值分析法:是对等价类划分的一种补充(因为大多数错误都在输入输出的边界上)。边界值分析就是假定大多数错误出现在输入条件的边界上,如果边界附件取值不会导致程序出错,那么其他取值出错的可能性也就很小。 边界值分析法是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。
- 正交试验法:是从大量的试验点中挑选出适量的、有代表性的点。正交试验设计是研究多因素多水平的一种设计方法,他是一种基于正交表的高效率、快速、经济的试验设计方法。
- 状态迁移法:是对一个状态在给定的条件内能够产生需要的状态变化,有没有出现不可达的状态和非法的状态,状态迁移法是设计足够的用例达到对系统状态的覆盖、状态、条件组合、状态迁移路径的覆盖。
- 流程分析法:主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法借鉴过来的一种很重要的方法。
- 输入域测试法:是针对输入会有各种各样的输入值的一个测试,他主要考虑 极端测试、中间范围测试,特殊值测试 。
- 输出域分析法:是对输出域进行等价类和边界值分析,确定是要覆盖的输出域样点,反推得到应该输入的输入值,从而构造出测试用例,他的目的是为了达到输出域的等价类和边界值覆盖。
- 判定表分析法:判定表是分析和表达多种输入条件下系统执行不同动作的工具,他可以把复杂的逻辑关系和多种条件组合的情况表达的即具体又明确;
- 因果图法:因果图是用于描述系统输入输出之间的因果关系、约束关系。因果图的绘制过程是对被测系统的外部特征的建模过程,根据输入输出间的因果图可以得到判定表,从而规划出测试用例。
- 错误猜测法:主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例
- 异常分析法:是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,分析发生错误时系统对于错误的处理能力和恢复能力依此设计测试用例。
2、白盒测试
通过检查软件内部的逻辑结构,对软件的逻辑路径进行覆盖测试
1)白盒测试方法
if(a&&b)
{
c=a+b;
}
else
{
c=a-b;
}
1)语句覆盖
确保每条语句在程序中执行一次
2)判定覆盖
每个判断的分支取真分支和取假分支至少经历一次
即a、b 真;a、b 一真一假
3)条件覆盖
使得判定的条件都至少满足一次
a false ,b false
a ture,b ture
4)判定条件覆盖
判定覆盖和条件覆盖必须都满足
a=T,b=T
a=T,b=F
a=F,b=T
5)条件组合覆盖
每个判定的条件的各种取值组合至少出现一次
a=T,b=T
a=T,b=F
a=F,b=T
a=F,b=F
6)路径覆盖
执行所有可能执行的路径
判定条件覆盖一定包含判定覆盖和条件覆盖
路径覆盖肯定包含判定覆盖,与条件没有直接关系。
- 如果某测试用例集实现了某软件的路径覆盖,那么一定同时实现了该软件的判定覆盖
强度排序:语句覆盖<判定覆盖<条件覆盖<判定条件覆盖<条件组合覆盖<路径覆盖
可同时用于黑盒和白盒的测试方法:边界值法(但是边界值法是黑盒测试方法)
例题:
答案:3
解析:ch= -1、3、10
三、按程序是否运行分类
1、静态测试
不用运行程序的测试
包括代码检查、静态结构分析、代码质量度量、文档测试、编写规则检查、程序结构检查、程序复杂度检查、数据流分析、代码覆盖率等等
它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。 (Fxcop是代码分析工具)
2、动态测试
需要执行代码,通过运行程序找到问题
包括功能确认与接口测试、覆盖率分析、性能分析、内存分析、模块功能检查、系统压力测试、内存泄漏等。
四、其他测试
1、冒烟测试:对软件最基本的流程和工作做一个粗略的测试
2、回归测试:当开发修复一个bug后提交代码,测试将测试用例都在新代码上再次进行测试
3、探索性测试:一边学习项目,一边测试
4、压力测试:测试软件的瓶颈和极限
5、负载测试:性能在极限情况下能坚持多久 ---- 验证要检验的能力最高能达到什么程度
(负载测试的目标是确定并确保系统在超出预期工作量的情况下仍然能正常运行)
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)