系统测试
目的:以最少的人力和时间发现潜在的各种错误和缺陷。
基本原则
- 尽早并不断地进行测试。以便于在各个开发阶段发现问题,解决错误,消除隐患,降低风险。
- 专人执行,避免由开发小组人员进行测试,保证测试客观性。
- 设计测试方案时,要在确定输入参数,并预期正确情况下的输出结果的情况下进行测试。
- 在设计测试用例时,除了设计合理的输入以预测结果外,也应设计不合理的输入并预期结果。
- 在测试程序时,除去验证程序完成任务时进行的必要操作外,也要注意程序在完成任务时进行的不必要操作。
- 严格按照测试计划进行操作,避免测试的随意性。
- 妥善保管测试计划,测试用例,测试结果,方便软件进行维护。
- 设计测试用例时,注意测试用例的可重复性。
测试过程
- 制定测试计划。
- 编制测试大纲。
- 根据大纲设计和生成测试用例。
- 实施测试。
- 生成测试报告。
测试方法
测试方法分为静态测试和动态测试。
静态测试
被测程序不再机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
动态测试
通过运行程序发现错误,分为黑盒测试和白盒测试。
黑盒测试
也称为功能测试,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性。主要为了发现功能完整性,界面准确性,输入输出正确性,数据结构,数据库访问是否存在异常,性能是否能接受,初始化和终止时是否正常等问题。
常用的黑盒测试技术:
等价类划分
将程序的输入域划分为若干等价类,然后从每个等价类中选一个代表数据作为测试用例,使每一个数据在同类中具有代表性,从而实现用较少量数据去的较好的测试结果的目的。
在等价类划分时,应注意两种情况:有效等价类与无效等价类。
边界值分析
输入边界值比中间值而言更容易发生错误,因此可以用边界值分析来补充等价类划分的测试用例设计技术。
错误推测
基于经验和直觉推测程序中可能存在的各种错误,从而针对性的设计测试用例的方法。
因果图
从自然语言描述的规格说中找出输入条件和输出改变,通过因果图转换为判定表。
白盒测试
也称为结构测试,根据程序的内部结构和逻辑来式设计测试用例,对程序的路径和过程进行测试,检查是否满足设计需求。
白盒测试原则
- 程序模块中的所有独立路径至少执行一次。
- 在所有的逻辑判断中,取“真”和“假”的两种情况至少都能执行一次。
- 每个循环都在边界条件下各执行一次。
- 测试程序内部数据结构有效性。
常用白盒测试:
逻辑覆盖
逻辑覆盖考察用测试数据运行被测程序时对程序逻辑的覆盖程度,主要的逻辑覆盖有:
- 语句覆盖:指选择足够的测试数据,使被测试程序中的每条语句至少执行一次。对程序执行逻辑的覆盖很低。
- 判定覆盖:也称分支覆盖,设计足够的测试用例,使得被测程序中的每个判定表达式至少获得一次“真”和一次“假”值。
- 条件覆盖:指构造一组测试用例,使每一判定语句中的每个逻辑条件的各种可能的值至少满足一次。
- 判定/条件覆盖:指设计足够的测试用例,使判定中每个条件的所有可能取值(真和假)至少出现一次,每个判定本身的判定结果(真和假)至少出现一次。
- 条件组合覆盖:设计足够的测试用例,使得每个判定中各个可能值的组合都至少出现一次。
- 路径覆盖:指覆盖被测试程序中所有可能的路径。
循环覆盖
执行足够的测试用例,使得循环中的每个条件都得到验证。
基本路径测试
在程序控制流程图的基础上通过分析控制流程图的环路复杂性,导出基本可执行路径集合,从而设计测试用例。