基于Windows的API自动化测试框架的设计与实现
2010-04-12黄哲
黄 哲
同济大学软件学院,上海 201804
0 引言
随着软件测试技术的发展,软件的自动化测试得到了越来越多的重视[1]。现代软件规模不断的扩大,基于面向对象的软件架构为了提高独立性和复用性采用了多层结构。API是处于上下层之间的接口,是开发者提供给使用者的工具[2]。API的测试直接关系到了软件的整体质量。API测试是验证组成软件的单个方法的正确性。包括逻辑的正确性,功能的正确性等。测试需要首先初始化测试的环境,然后需要调用API,最后需要对结果进行验证。如果对API实行手工测试那么测试工作量是非常大的,而且API本身的特点适合自动化,所以API测试的自动化研究有很大的价值。
1 设计概述
本文针对实际的软件测试设计并实现了一个API自动测试的框架,这次设计的API自动化测试框架主要分成4个部分,分别是对API的分析提取处理,测试用例的生成,用例的执行,以及执行结果的验证。
系统主要应用于windows平台,整个系统采用C++ .NET设计实现。XML(Extensible Markup Language)在整个框架的作用十分关键,它是框架中的各个模块之间的接口,增加模块的独立性,降低耦合度。XML也要用来存储驱动用例的数据以及配置信息。XML是本文设计的框架最适合的数据存储实现方式,它使用起来快捷方便。
近年对软件测试技术的不断研究评估,得出纯自动化的测试能发现的软件漏洞是相当有限的,特别在专业知识比较强的软件更是要大大低于手工的测试。因此,本文选择了开发一个API测试的自动化框架。而对于测试用例的生成采用生成对应的模板,测试人员可以结合测试的重点进行配置。
2 功能实现
框架主要是使用c++语言编写实现,提供了简单的操作界面,框架示意图如图1。
图1
2.1 代码分析
系统的代码分析模块,分析模块首先需要从源代码的头文件中提取出需要使用的API信息,然后生成XML文件。由于系统设计时针对的软件对应功能模块也比较固定,XML中不仅包含了简单的API头文件信息,还包含了相应API是否有显示等信息。
2.2 测试用例生成引擎
测试用例生成引擎是用来生成系统的C++用例,LISP用例,以及C#用例的生成,生成的是一个基本模板,只需要进行简单的扩展就能生成实际的用例。
1)用例的自动生成配置管理
用例自动生成需要对XML中的信息进行读取,本文工具中实现了对应格式的XML解析工具。用例是划分在各个功能模块下的,生成是可以按照功能模块的不同来生成对应的用例模板,用例最终在执行时需要分层,按模块来执行,需要人工的对用例配置文件的XML进行更改配置。
2)用例的自动生成策略
相对于某一功能的用例代码是有较大的重复区域的,本文的系统对这不同的功能模块系同来生成用例的。首先需要判定属于哪个功能模块,从功能模块数据存储的XML中读取功能模块数据。判定了功能模块,用例生成引擎由不同的生成机制来生成不同的用例模板。测试人员可以根据经验来进一步的完善配置用例。由于测试的用例较多因此由测试人员进一步的完善用例是可行的[3]。
2.3 测试用例执行引擎
用例执行引擎,通过分析用例生成引擎中的XML配置文件来完成对各个用例的测试配置,然后需要制定运行待测用例的执行程序和执行环境。在执行引擎中还提供了调试模式可以方便测试人员及时的对生成的用例进行调试。
2.4 测试结果分析
测试的结果分析则是对调用了API应该达成什么样的预期效果的对比。测试的结果将被记录成为数据模式。方便结果的检测。用例红色在用例执行控制台标出测试出错的用例。输出错误的数据。供测试人员调试分析。
3 实例应用
这里仅给出一个简单的测试函数分析。
产生了包含API信息的XML ,然后根据测试数据源的XML生成对应的测试用例。生成的测试用例则需要实现对draw函数中的line,circle,rectangle功能实现调用。Size默认是small。也可以由测试人员进行调试。由于篇幅所限本文不给出完整的用例代码。
4 结论
本文实现了API测试的自动化框架的设计,并且实现了针对具体软件的API自动化的测试。相比传统的API自动化测试框架,本文提出的框架更加强调了自动与手动的结合。利用手动的灵活性好,和针对性强的特点增强用例的测试功效。对软件的质量能提供更大的保证。
[1]张磊,王晓军.基于STAF框架下的自动化测试[J].计算机技术与发展,2010,3.
[2]崔红军,饶若楠,邵培南.一种API自动化测试工具的设计与实现[J].计算机工程,2007,2.
[3]Brian Marick, When Should a Test Be Automated.Reliable Software Technologies.