如果从被测试对象是否被运行的角度来划分,测试可以分为静态测试和动态测试两种。
静态测试是指不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。例如:代码走读、文档评审、程序分析等都是静态测试的范畴。常用的静态分析技术包括:控制流、信息流和数据流,但现在这些方法其实用的比较少,因为很多问题在编辑器的时候就解决了。在我们进行测试过程中,关于静态测试用得最多的是对文档进行评审,当然不同文档在评审时所关注的问题是完全不同的。
动态测试是指按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术。如果按阶段来分,单元测试中常见的动态测试方法就是逻辑覆盖的方法,而在系统测试阶段,我们做的测试都属于动态测试,因为我们要运行系统才能验证系统功能是否正确。
动态测试是通过观察代码运行时的动作,来提供执行跟踪、时间分析及测试覆盖度方面的信息。动态测试通过真正运行程序发现错误。通过有效的测试用例,对应的输入/输出关系来分析被测程序的运行情况。
1、静态测试
(1)定义:静态测试是指对系统需求规格说明书、系统设计规格说明书进行评审, 对程序代码进行审查及静态分析等测试活动
(2)在代码审查中,静态测试可发现如下编程缺陷:
Δ1、变量在初始化前使用、变量声明后未使用、变量在两次赋值之间从未使用
Δ2、数组访问越界
Δ3、存在不可到达代码
Δ4、循环中无条件分支
Δ5、接口参数类型或数目不匹配
Δ6、空指针或指针类型错误
Δ7、存在未被调用的函数和过程
2、动态测试
(1)定义:将被测软件程序进行运行,观察该程序运行过程中的系统行为、变量结果、内存、堆栈等数据,来判断软件系统是否存在缺陷的测试活动
(2)动态测试可发现的主要缺陷:
Δ1、程序逻辑错误
Δ2、异常输入的功能失效
Δ3、空指针使用
Δ4、内存没有及时释放关闭的对象资源Session失效
Δ5、没有处理在空输入时点取Enter键情况