论文部分内容阅读
当今软件规模和复杂度急剧增加,手工的软件测试越来越不能满足软件测试需求,促使人们开发测试工具,实现测试自动化。随着网络在应用中的地位越来越重要,分布式结构能更好地整合网络功能,所以分布式系统被日益广泛地使用。国内在测试工具方面相关的研究工作已经展开,但针对分布式软件的测试工具仍然有待进一步实现和增强。本文在分布式软件性能测试工具设计和实现方面进行探讨。论述了分布式软件性能测试的概念。通过分析分布式软件性能测试工具的测试流程确定其系统模块构成和关系,设计出系统总体框架。结合分布式结构的特点,提出了把测试工具设计成总的测试控制台加分布于多台机器上的测试代理的结构。重点讨论了其中测试用例生成模块、脚本生成模块、测试执行和测试结果处理模块的实现。为了利用测试管理工具中对软件建模的UML图,尝试在测试工具中引入由UML顺序图生成测试用例的功能。从Rational Rose的MDL文件中解析出顺序图用XML格式表示,然后从XML格式文件中分析出测试用例。测试开发模块是测试工具中最关键的模块,通过运行被测试程序把被测试程序调用的API记录下来,经过处理形成脚本,这样就记录程序的行为,测试过程中运行脚本便可以模拟程序行为。记录测试程序的API要利用windows API钩子技术,测试工具进程通过安装钩子用代理函数地址把被测试程序中导入地址表中加载的动态链接库函数地址替换掉,这样程序中调用函数的时候转到代理函数地址调用代理函数而不是调用原函数,代理函数具有记录API的功能和调用原函数功能。记录下来的API要经过API封装和代码封装,形成高级语言的脚本文件。接着对脚本进行定制,在其中添加辅助测试的语句,还可以对脚本某些字段参数化,脚本运行的时候用参数文件中的对应值替换脚本的参数。参数文件可以手工建立,也可借助上述生成的测试用例生成。最后把脚本编译成动态链接库形式。在测试执行模块中,提出一种分层的结构,把测试脚本、性能计数器和调度参数组织成测试单位的方案。测试控制台配置好测试并下发到测试代理后,以虚用户为单位调度测试执行。脚本和性能计数器以并发线程方式运行便于收集性能指标。测试结果处理模块以文件上传和整合的方法得出系统总体性能指标。测试结果以图表等友好方式反馈给用户。