### 基于程序插装的动态测试技术实现 #### 概述 动态测试作为一种重要的软件质量保证手段,主要用于检测程序在运行时的行为特性。它能够帮助开发人员和测试工程师发现那些仅通过静态分析难以发现的问题。本文主要探讨的是在北京航空航天大学计算机科学与工程系所研发的一个白盒软件测试工具——56789:系列中,基于程序插装的动态测试技术实现方式。文章详细讨论了动态测试模型、数据流模型、动态跟踪数据的编码和解码技术、插装库设计以及插装策略等内容。 #### 程序插装技术 程序插装(Instrumentation)这一概念最早由教授?/@/ABCD提出。其核心思想是在不改变原程序逻辑完整性的前提下,在程序中插入一系列“探针”(也称为探测仪),通过这些探针收集程序运行时的信息。通过分析这些信息,可以了解程序的控制流和数据流,从而获得逻辑覆盖等动态测试数据。 - **探测信息的选择**:确定需要收集哪些信息是关键的第一步。 - **探针位置的选择**:决定在程序的哪个位置插入探针对于获取有效的动态测试数据至关重要。 - **探针的设计**:探针需要精心设计,确保其能够高效准确地捕捉所需的数据。 - **数据的编码和解码**:为了便于存储和传输,捕获的数据通常需要经过编码处理;而在分析阶段,则需要对其进行解码。 #### 动态测试内容 56789:软件测试工具系列自上世纪八十年代中期以来,一直由北京航空航天大学软件工程研究所研发。这套工具支持多种编程语言,如@、@JJ、?6K6等,并且随着技术的发展不断更新,以支持新的编程环境。该测试工具集成了多种功能: - **数据流跟踪**:监测变量值随程序执行的变化。 - **程序结构分析**:包括模块间的调用关系和控制流程图的构建。 - **对象模型逆向提取**:从源代码中提取类和对象的关系。 - **程序执行时间评估**:静态评估程序各部分的执行时间。 - **复杂性度量**:计算程序的复杂度指标。 - **中断检测**:识别程序执行过程中可能出现的异常中断。 此外,作为动态测试工具,56789:支持以下几种测试信息的收集: - **程序覆盖率**:包括语句覆盖率和分支覆盖率,它们是动态测试的基础。 - **动态数据流分析**:跟踪变量值域的变化,有助于识别潜在的数据错误。 - **断言的执行情况**:检查程序中设置的断言是否按预期执行。 - **语句调用频度**:统计特定语句或函数的执行次数,对性能优化有指导意义。 - **动态执行时间**:测量特定代码片段的实际执行时间,对于实时系统尤为重要。 #### 动态测试的框架 56789:软件测试工具的动态测试框架主要包括以下几个步骤: 1. **插装交互与动态测试信息分析**:用户通过测试工具的界面选择待测试的程序模块,并指定需要收集的动态测试信息类型。 2. **插装过程**:根据用户的配置,将探针插入到程序的适当位置。 3. **插装库制作过程**:构建包含探针的库文件,以便在程序编译链接时使用。 4. **测试实施过程**:运行带有探针的程序,收集动态测试数据。 通过上述过程,56789:软件测试工具能够有效地实现基于插装的动态测试,并帮助开发者和测试人员更好地理解和优化程序的行为。
- yaojun11092012-07-27还不错的,可以借鉴
- 粉丝: 17
- 资源: 58
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助