按照测试手段分类
根据可见度:黑盒测试、白盒测试
根据状态:静态测试、动态测试
根据测试执行的方式:手工测试、自动化测试
1、黑盒测试
其实就是在测试中把被测的系统或软件看成一个不能打开的盒子,在完全不考虑程序内部结构和内部特性的情况下,通过相关暴露出来的接口来对程序进行测试。
黑盒测试只检查程序的功能是否能够按照需求规格说明的规定来正常使用、程序是否能适当的接受输入数据并产生正确的输出信息。
黑盒测试着眼于程序的外部结构,不考虑内部逻辑,一般来说是针对软件外面的界面或者是可见的功能来进行测试。
做黑盒测试更多的是从用户的视角,通过不同的数据和事件驱动系统,并通过输出结果进行判断。
(1)黑盒测试的优缺点
优点:1)容易实施,不需要关注内部的实现。
2)更贴近用户的使用角度。做测试验证的场景和系统中实际使用的场景更加的接近。
缺点:1)测试覆盖率较低,一般只能覆盖到代码量的不到40%。(因为系统黑盒不可见;很多逻辑分支不清楚)
2)针对黑盒的自动化测试,复用率较低,维护成本较高。(因为黑盒测试关注的是功能,而软件产品在研发迭代过程中最经常变化的就是功能;特别是界面UI类的产品或者互联网产品会有频繁的变化,所以针对功能做的自动化测试的测试用例重复率是较低的,而且因为经常变话,所以脚本的维护代价相对较大)
(2)黑盒测试主要测试什么
1)是否有不正确或者遗漏的功能(软件的实现上)
2)在接口上,输入能否正确的接受?能否输出正确的结果?
3)是否有数据结构错误或外部信息(例如数据文件)访问错误
4)性能上是否能够满足要求(功能和性能的区别:功能是一个有哪些用途;性能是在具体事情操作上表现的怎么样)
系统的性能是黑盒测试的重要方面。
一般来说,系统测试阶段更多使用黑盒测试(并不代表其他阶段不使用)。
(3)黑盒测试的主要设计方法
等价类划分:针对程序有很多的输入条件,等价类划分就是把所有的输入中等价的归为一类,最后会形成若干典型的代表性输入。通过这些典型数据进行测试用例设计。
边界值分析法:特殊的等价类划分,关注边界条件(开区间闭区间等)。开发人员在编写程序时候,边界值是很容易出现失误的地方。
错误推测法:根据经验或者直觉判断程序中可能出现错误的地方,从而针对性设计用例(比如界面输入考虑特殊字符,处理文件考虑文件不存在、超大等)。
因果图法:拿到程序需求规格说明书,针对每一种输入和输出看成原因和结果,对输入和输出设置特定的标识符。最终根据规格的语义说明,形成一个判定表,根据判定表设计测试用例。
正交实验法:通过正交性从一组数据中筛选出典型的具有代表性的数据的设计方法。主要用于筛选输入数据。
状态迁移图法:通过梳理软件功能点的状态迁移关系来设计测试用例。比如软件有一个审批的功能,提交审批、待审批、拒绝、通过、退回、审批通过等,画出变迁的关系图来设计测试用例。
流程分析法:梳理程序的逻辑执行路径来设计测试用例。
2.白盒测试
测试人员对内部结构非常了解,逻辑结构对测试人员是可见的。随意白盒测试又称为结构化测试、透明盒测试。
白盒测试是针对程序的逻辑结构来设计测试用例的,用逻辑的覆盖率来衡量测试的完整性。
(1)主要的逻辑单位
语句覆盖:测试用例执行以后会保证程序的每条语句至少执行一次。
判定覆盖:保证每个分支至少执行一次。
条件覆盖:覆盖到条件表达式,所有的表达式都至少计算一次。
路径覆盖:程序当中每一条可能的路径至少执行一次。(分支是路径的一部分)
(2)白盒测试的优缺点
优点:
1)迫使测试人员去仔细思考软件的实现,理解原理(需要对系统有深入的了解)
2)可以检测代码中每条分支和路径
3)揭示隐藏在代码中的错误。
4)对代码的测试比较彻底
缺点
1)昂贵。要做到较高的覆盖率,工作量非常大。
2)无法检测代码中遗漏的路径和数据敏感性错误(代码中本来就少写了一些路径,语句有问题等)
3)不能直接验证需求的正确性
(3)白盒测试的主要测试方法
代码检测法:主要是检查代码和设计的一致性
静态结构分析:分析源代码的系统结构、数据结构、内部的控制逻辑设计测试用例
静态质量度量法:标准质量模型作为基础,构造质量度量模型用于评估软件。
逻辑覆盖法:上面介绍的覆盖法,语句、条件、条件组合、分支、判定、路径、条件和判定的组合覆盖法。
基本路径测试法:程序控制流图基础上,通过分析控制构造的圈复杂度,导出基本可执行路经集合设计测试用例。控制流图是描述程序控制流的一种方法。
3.灰盒测试
4.静态测试
程序不被运行,直接看文档或者代码,可以人工也可以自动化工具来发现程序的不足
静态测试的方法
互审:程序员之间相互检查代码(不正式)
走查:组成一个小组,集体看程序或者文档
会议:召开正式会议,纪要。(正式)
5.动态测试
黑盒测试里的一些方法主要是动态测试
白盒测试中一般都是静态测试
6.手工测试
众包测试、探索是测试。
7.自动化测试
单元测试,结构测试 性能测试等