黑盒测试
定义:不考虑程序的内部逻辑结构而根据程序需求和规格说明,检查其功能是否符合它的功能说明
目的:
- 检查是否有不正确或遗漏的功能
- 检查输入是否能正确的接收
- 检查能否输出正确的结果
- 是否有数据结构错误或外部信息(例如数据文件)访问错误
- 性能上是否满足要求,是否有初始化或终止性错误
方法:黑盒测试常用的方法包括:等价类划分法、边界值分析法、错误推测法、场景法
1、等价类划分法
定义:将输入数据进行分类,选择适当的数据子集代表整个数据集,通过降低测试数目实现合理覆盖类型测试数据。分类类型包括有效等价类(正向)和无效等价类(逆向)
- 有效等价类:对于程序来说有意义的、有效的输入数据的集合
- 无效等价类:对于程序来说不合理、无意义的输入构成的集体,实际测试中,至少有一个无效等价类应用场景
2、边界值分析法
定义:是一种对等价类划分的补充,它在选择元素时不是任意元素,而是选择等价类边界值作为测试用例,原则上选取上点、离点、内点的数据作为测试用例,且开内闭外
- 上点:边界上的点
- 离点:离上点最近的点
- 内点:域范围内最近的一点
3、场景法
定义:模拟特定场景发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而发现需求中存在的问题,可以理解为按照事件发生的逻辑,一步步的操作得到的结果。(一般用在整个测试流程的跑通)
4、错误推测法
定义:是一种基于经验和直觉推测程序中所有可能存在的各种错误,并且有针对性设计测试用例的方法,可以总结为明知不可为而为之,列举出程序中所有可能有的错误和容易发生错误的情况,来设计测试用例
白盒测试
定义:对软件做细致检查,允许软件测试人员利用程序内部的逻辑结构及有关信息设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试主要希望对程序模块进行如下检查:
- 对程序所有模块的所有独立的执行路径至少测试一次
- 对所有的逻辑判定取“真”与取“假”的两种情况都至少执行一次
- 在循环的边界和运行界限内执行循环体
- 测试内部数据结构的有效性
白盒测试又可以分为静态测试和动态测试两个模块
1、静态测试
定义:不要求在计算机上实际执行所测试的程序,主要以一些人工的模拟技术对软件进行分析和测试,主要包括以下两类测试方法:
(1)代码检查法
- 桌面检查:程序员在程序通过编译之后,对源程序代码进行分析、检查,并充分补充相关的文档,目的是发现程序中的错误
- 代码审查:审查小组通过读程序和对对照错误表进行检查
- 代码走查:审查小组需要准备具有代表性的测试用例沿程序逻辑运行
(2)静态结构分析法
在静态结构分析中,测试人员通常通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流程图、内部文件调用关系图等各种图形、图表,清晰的标识整个软件的组成结构。
2、动态测试方法
定义:通过输入一组预先按照一定的准则构造实际数据来动态运行程序达到发现程序错误的过程,主要划分为以下两类:
(1)逻辑覆盖法
逻辑覆盖是以程序内部逻辑结构为基础来设计测试用例的技术,通过对程序内部的逻辑结构的遍历来实现程序的覆盖,主要包括以下几种方法:
- 语句覆盖: 目的:设计足够的测试用例,使得被测试程序中每条语句至少要被执行一次,其缺点 缺点:只测试代码中执行语句(这里的执行语句不包括头文件、注释、空行)无法测试程序中存在的逻辑错误,不考虑各种分支组合情况,是一种弱覆盖
- 判定覆盖: 目的:又称分支覆盖,设计足够的测试用例使得每个判定语句的取真取假分支至少被执行一次(只要满足了判定覆盖就一定满足语句覆盖,反之不然) 缺点:判定覆盖仅仅判定语句执行的最终结果而忽略每个条件的取值,也属于弱覆盖
- 条件覆盖: 目的:设计足够的测试用例,使判定语句中的每个逻辑条件取真与取假值至少出现一次 缺点:在进行条件覆盖时,各个条件的不同组合会使表达式的取值不同,不能保证执行所有的判定路径 ,即不能满足判定覆盖
- 判定-条件覆盖: 目的:设计足够多的测试用例,使得判定语句中所有条件取到各种可能的值,并且使每个判断语句的所有判断结果至少出现一次 缺点:索然满足了判定覆盖准则和条件覆盖准则,弥补了二者的不足,但没有考虑条件组合情况
- 条件组合覆盖:、 目的:设计足够多的测试用例,使得每个判定中的各种组合至少出现一次,满足了判定覆盖、条件覆盖、判定-条件覆盖 缺点:当一个程序中的判定语句较多时,其条件取值的组合数目较多,需要设计的测试用例数目也增多,使得测试效率降低,而且也仍然无法保证所有路径至少执行一次
- 路径覆盖: 目的:设计足够多的测试用例使得程序中的每一条可能组合的路径都至少执行一次,如果存在环形结构,也要保证此环的所有路径至少执行一次
(2)基本路径覆盖法
定义:从一个程序的入口开始,执行执行所经历的各个语句的完整过程
测试步骤:
- 以详细设计或代码作为基础,绘制程序的控制流程图
- 计算得到的控制G的环路复杂性V(G)
- 确定独立路径的集合(独立路径:是指至少包含一条新边的路径,也包含前面路径未包含的语句)
- 设计测试用例,确保基本路径集中每条路径的执行
版权归原作者 Blankzp 所有, 如有侵权,请联系我们删除。