按测试手段来分类
黑盒测试、白盒测试
静态测试、动态测试
手工测试、自动化测试
黑盒测试
较多用于系统测试。不了解内部结构。
针对界面或可见的功能。
优点
容易实施,不需要关注内部的实现;
更贴近用户的角度。
缺点
测试覆盖率低,一般只有不到40%;
针对黑盒的自动化测试,复用率较低,维护成本较高。
主要测试:
是否有不正确或遗漏的功能;
在接口上,输入是否能正确的接受,输出正确的结果;
是否有数据结构错误或外部信息访问错误;
性能上是否能够满足要求。
主要设计方法:
等价类划分: 将等价的输入归成一类,形成若干有代表性的输入
边界值分析: 各种边界条件,特殊的等价类划分
错误推测: 根据经验推测错误
因果图法: 针对输入和输出辅以特定标识符
正交试验分析: 筛选输入数据
流程分析: 梳理程序
白盒测试
针对程序的逻辑结构。了解内部结构。
优点
迫使测试人员去仔细思考软件的实现,理解原理;
可检测代码中的每条分支和路径;
揭示隐藏在代码中的错误;
对代码的测试比较彻底。
缺点
昂贵;
无法检测代码中遗漏的路径和数据敏感性错误;
不能直接验证需求的正确性。
主要测试方法
灰盒测试
介于黑、白盒之间。
静态测试
无需执行被测程序,通过评审软件文档或代码,度量程序静态复杂度,发现程序不足。
互审、走查、会议
动态测试
通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性。
手工测试
专门人员从用户视角验证软件是否满足设计要求的行为。适用于针对深度的测试和强调主观判断的测试。
众包测试、探索式测试
自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
单元测试、接口测试、性能测试