软件自动测试过程改进技术研究
引言对程序的一次测试活动一般包括五个步骤:
(l)确定测试方法,如边界值分析等;
(2)设计测试用例,包括输人值、期望结果等;
(3)建立测试实施,即组织测试脚本、测试输入、期望输出等测试信息;
(4)执行测试实施;
(5)测试结果分析,包括比较真实测试结果与期望结果。
通常,测试活动中的简单重复性测试工作适合自动化,例如上述活动中的后三个步骤川。目前的软件测试工具实现了部分自动化,但主要局限在半自动化建立测试实施、自动执行测试实施、自动比较真实测试结果与期望结果,本文称这些自动化的部分为自动测试过程。
本文首先研究了目前软件测试工具通常采用的自动测试过程,指出它们的瓶颈,然后,针对对象式被测件,提出了改进的白动测试过程,并基于.NET技术,讨论了改进的自动测试过程中关键技术的实现。
1当前测试工具采用的自动测试过程
自动测试过程的核心是测试脚本。当前测试工具产生测试脚本的方式有二种:
(l)手工编写;
(2)工具捕获人工测试场景产生;
(3)工具基于人工提供的信息白动产生。
捕获/回放测试工具通常采用方式(l)和(2)为提供了可执行程序的被测件产生测试脚本,单元测试工具通常采用方式(3)为提供了源代码的被测件产生测试脚本,它们的典型自动测试过程事务流程分别如。可以看出,当前自动测试过程中主要存在如下几个问题:
(l)由于能力和劳动量的限制,利用手工运行或人工分析结果产生测试脚本具有如下的缺点:
l)对于规模较大的被测件,利用人工运行或分析结果产生的测试脚本不可能达到全面测试软件产品的目的;
2)对于经常改变的被测件,产生测试脚本所需的人工劳动量随被测件的改变而剧增。
(2)对于不能单独运行且源代码不可得的被测件,无法产生测试脚本。
(3)完全手工设计测试用例,对测试人员来说是一项任务繁重的工作。
(4)测试信息直接编码成测试脚本,导致每次编辑测试信息后,都要重新调试测试脚本。
(5)集成测试中需要人工分析并构造桩模块,这样的桩模块很难全面精确反映被模拟模块的特点。当前软件测试工具采用的自动测试过程中存在着人工干预过多、测试效率低的缺点,远远不能满足目前软件开发过程中边开发、边测试的要求。改进自动测试过程,尽可能减少人工干预,对于成功实施软件测试是至关重要的。
2改进的自动测试过程
为了解决当前自动测试过程中的瓶颈,本文提出如下的解决办法:
(1)对于被测件(.exe文件或.dll文件),自动获取被测件及被测单元信息,从而避免人工运行和分析的局限性。
(2)依据自动获取的被测单元参数信息,尽可能自动产生或从被测件中获取测试用例,节省完全人工设计测试用例的劳动量。
(3)测试信息保存在独立于测试脚本的数据存储中(例如Excel电子数据表),简化编辑测试信息的复杂性。
(4)依据独立的数据存储,自动编写不需调试的测试脚本。由于任何对测试信息的修改是在独立的数据存储中进行的,数据存储修改后,只需重新自动产生测试脚本即可,从而节省调试测试脚本的劳动量。
(5)在自底向上进行集成测试时,重用低层模块的测试脚本,避免人工构造桩模块的不精确性和劳动量。
依据上面的解决办法,下面针对对象式被测件,设计改进的白动测试过程。
(1)基于被测件(.exe文件或.dil文件),自动获取被测件所包含的类型。
(2)对获取的所有类型进行图3虚线框中所示的操作。
(3)自动获取的及自动产生的测试信息保存到电子数据表中。
(4)由于有些数据无法自动产生、自动产生的数据的检错能力差等原因,因此,有时需要通过人工编辑、修改电子数据表中的测试数据来完善测试信息。
(5)电子数据表中的测试信息驱动产生测试脚本,被测件中的被测类型与测试脚本中的测试类是一一对应的,每个测试类中有一个方法,称为测试方法,测试方法的返回值为被测类型对象。
(6)执行测试脚本,得到测试报告。实施改进的自动测试过程的关键在于白动获取被测件及被测类型信息;依据获取的被测件及被测类型信息,自动产生测试用例,并把测试信息自动保存到独立的电子数据表中;基于保存测试信息的电子数据表,动态编程产生测试脚本。
3改进的自动测试过程中采用的关键技术
白动获取被测件及被测类型信息需要被测件提供元数据。元数据是被测件的白我描述信息,它可以描述被测件的多个方面,包括类、方法、域和程序集。元数据总是嵌入在代码所在的同一EXE和DLL文件中,从而确保代码与元数据保持同步。.NET程序集和经程序集封装的COM组件都带有元数据。下面以.NET程序集和经程序集封装的COM组件为被测件,讨论在,NET环境下对改进的自动测试过程的实现。
简洁易懂!
页:
[1]