按照测试手段分类:黑盒测试、白盒测试、静态测试、动态测试、手工测试、自动化测试
一、黑盒测试:
有点:
1.容易实施、不需要关注内部实现
2.更贴近用户使用的角度
缺点:
1.测试覆盖率较低、一般只能覆盖到代码量的不到40%
2.针对黑盒的自动化测试,复用率较低,维护成本较高(黑盒测试关注的是,功能,在软件开发中,最经常变化的就是功能,互联网产品,做个活动,UI页面功能,都会修改,经常变,脚本的维护较高)
黑盒测试主要测试什么?
1.是否有不正确或遗漏的功能(重点是,软件的实现上,或者还没有实现的功能)
2.在接口上,输入是否能正确的接受?能否输出正确的结果
3.是否有数据结构的错误或外部信息(例如数据文件)访问错误?
4.性能上是否能够满足要求?
黑盒测试的主要设计方法:
1.流程分析法:
是处理软件的逻辑处理的路径,来设计测试用例
2.等价类划分发:
针对程序有很多的输入条件,我们把所有的输入,等价的归为一类,这样就会形成若干典型的代 表性的输入,通过典型的数据,来进行测试用例的设计
3.边界值分析法:
边界值划分其实是特殊的等价类划分,关注的是我们各种的边界条件,例如数据的区间,开区间,闭区间,边界值分析重要是因为,开发人员编写程序的时候,边界值是很容易出现失误的地方,比边界小一点、大一点、等于边界值,经常会出现错误
4.错误推测法:
错误推测法是根据经验、直觉,来判断程序可能出现错误的方法,从而针对性的来进行用例的设计,例如我们的界面输入的时候,我们要考虑特殊字符的处理,处理文件的时候,考虑文件不存在,文件超大,这样特殊的情况
5.因果图法:
因果图是指我们拿到程序的需求规格说明书,那针对每一种的输入和输出,在我们的因果图中,把输入和输出看做原因和结果,对输入和输出赋予特定的标识符,将这些情况形成因果图,最终根据我们的语意的说明形成一个判定表,更具判定表来编写测试用例
6.正交试验分析法:
通过正交性,通过重一组数据中,筛选出一组具有代表性的数据的设计方法,主要是筛选我们的输入数据,然后在来设计我们的测试用例
7.状态迁移图法
通过处理我们软件功能点里面的状态迁移关系来设计测试用例,所谓的状态迁移,例如我们的软件有审批的功能,这个就涉及到状态的迁移,我提交审批,到待审批、审批完成,他有通过、拒绝的状态,退回到提交者,然后在修改,在重新提交,然后审批通过,这样的各种的状态
画出这些状态的变迁的关系图来设计我们的测试用例
二、白盒测试:
白盒测试,我们说的黑盒测试,内部是不可见的,白盒测试是测试人员对立面的内部结构是非常了解的,逻辑结构对测试人员是透明的,白盒测试又称为结构化测试和透明盒测试,白盒测试是针对软件的逻辑结构来设计测试用例,用逻辑的覆盖率来衡量测试的完整性
主要的逻辑单位:
语句:测试用例设计出来执行后,保证我们的每一条语句至少执行一次。
判定:判定覆盖,保证每一个分支执行一次
条件:覆盖到我的条件的表达式,所有的表达式都要执行一遍
条件组合:覆盖我所有条件的不同的组合情况
分支:其实是路径的一部分
路径:程序中,每一条可能执行的路径都要执行一遍
白盒测试优点:
1.迫使测试人员去仔细思考软件的实现,理解原理
2.可以检测代码中的每条分支和路径
3.可以揭示隐藏代码中的错误
4.对代码测试比较彻底
白盒测试的缺点:
1.昂贵
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不能直接验证需求的正确性
白盒测试的主要方法:
1.代码检测法
2.静态结构分析法
3.静态质量度量法
4.逻辑覆盖法
5.基本路径测试法
三、灰盒测试:
介于黑盒、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
更多的是在系统组件
四、静态测试:
静态测试是指无须执行被测试程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率
静态测试方式:
互审:同事之间的相互检查,代码文档
走查:一个小组,集体检查代码文档
会议:形成纪要
五、动态测试:
动态测试是指通过运行被测试程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、和健壮性
前面我们说的黑盒测试和白盒测试,黑盒测试里面用的到测试方法主要的是动态测试,而白盒测试里面的代码检查发、静态代码分析法,都是典型的静态测试方法
六、手工测试:
由专门的测试人员从用户的视角来验证软件是否满足设计要求的行为,更适用针对深度的测试和强调主观判断的测试
众包测试、探索测试
七、自动化测试:
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查
单元测试、接口测试、性能测试