《静态测试和动态测试》由会员分享,可在线阅读,更多相关《静态测试和动态测试(7页珍藏版)》请在金锄头文库上搜索。
1、静态测试与动态测试1、静态测试 静态测试不实际运行软件,主要是对软件的编程格 式、结构等方面进行评估。 静态测试包括代码检查、静态结构分析、代码质量 度量等。它可以由人工进行,也可以借助软件工具 自动进行。 因为静态测试方法并不真正运行被测程序,只进行 特性分析。所以,静态方法常常称为“分析”,静 态测试是对被测程序进行特性分析方法的总称。代码检查 代码检查包括代码走查、桌面检查、代码审查等,主 要检查代码和设计的一致性,代码对标准的遵循、可读 性,代码的逻辑表达的正确性,代码结构的合理性等方 面。 代码检查的具体内容:变量检查、命名和类型审查、 程序逻辑审查、程序语法检查和程序结构检查等。
2、代码检查的优点:在实际使用中,代码检查比动态测 试更有效率,能快速找到缺陷,发现30%70%的逻辑设 计和编码缺陷;代码检查看到的是问题本身而非征兆。 代码检查的缺点:非常耗费时间,而且代码检查需要 知识和经验的积累。静态结构分析 静态结构分析主要是以图形的方式表现程序的内部结构。 例如函数调用关系图、函数内部控制流图。其中:函数调用关系图以直观的图形方式描述一个应用程序 中各个函数的调用和被调用关系;函数内部控制流图显示一个函数的逻辑结构,由许多 节点组成,一个节点代表一条语句或数条语句,连接结点的 叫边,边表示节点间的控制流向。函数调用关系图函数内部控制流图代码质量度量 软件质量包括六个方
3、面:功能性、可靠性、易用性、效率、 可维护性和可移植性。软件的质量是软件属性的各种标准度 量的组合。 针对软件的可维护性,目前业界主要存在三种度量参数: Line复杂度、Halstead复杂度和McCabe复杂度。 (1)Line复杂度以代码的行数作为计算的基准。 (2)Halstead以程序中使用到的运算符与运算元数量作为计数 目标,然后可以据以计算出程序容量、工作量等。 (3)McCabe复杂度 一般称为圈复杂度,它将软件的流程图转 化为有向图,然后以图论来衡量软件的质量。静态测试阶段的任务(1)检查算法的逻辑正确性。 (2)检查模块接口的正确性。 (3)检查输入参数是否有合法性检查。 (
4、4)检查调用其他模块的接口是否正确。 (5)检查是否设置了适当的出错处理。 (6)检查表达式、语句是否正确,是否含有二义性。 (7)检查常量或全局变量使用是否正确。 (8)检查标识符的使用是否规范、一致。 (9)检查程序风格的一致性、规范性。 (10)检查代码是否可以优化,算法效率是否最高。 (11)检查代码注释是否完整,是否正确反映了代码的功能。静态测试与动态测试(续) 静态测试可以完成以下工作: (1)发现下列程序的错误:错用局部变量和全局变量、未 定义的变量、不匹配的参数、不适当的循环嵌套或分支嵌 套、死循环、不允许的递归、调用不存在的子程序,遗漏 标号或代码。 (2)找出以下问题的根源:从未使用过的变量、不会执行 到的代码、从未使用过的标号、潜在的死循环。 (3)提供程序缺陷的间接信息:所用变量和常量的交叉应 用表、是否违背编码规则、标识符的使用方法和过程的调 用层次。 (4)为进一步查找做好准备。 (5)选择测试用例。 (6)进行符号测试。静态测试与动态测试(续)2、动态测试 动态方法的主要特征是:计算机必须真正运行被测试的程序,通过输入测试 用例,对其运行情况即输入与输出的对应关系进行分析, 以达到检测的目的。 动态测试包括:(1)功能确认与接口测试(2)覆盖率分析(3)性能分析(4)内存分析