作为国内权威的评测机构,中国软件评测中心一直应用美国Compuware(康博)公司开发的 QALoad软件作为并发性能压力测试工具。软件针对各种测试目标提供了MS SQL Server、 Oracle、ODBC、WWW、NetLoad、Winsock等不同的测试接口(Session),应用范围相当广泛。例如在测试基于C/S运行模式、客户端通过DBLib访问服务器端SQLServer数据库的系统时,QALoad通过模拟客户端大数据量并发对服务器端进行查询、更新等操作,从而达到监控系统并 发性能和服务器端性能指标的目的。
在操作方法上,QALoad提供了录制与回放机制。例如在测试中我们录制客户端对数据库执行的查询操作,QALoad通过模拟大量客户端来回放此查询操作,以达到并发的目的。整个测试过程用户完全在黑盒环境下进行,不需要对代码有任何的了解。但是为了达到理想的测试效果,这样的测试是远远不够的。
在实际测试中,我们必须对其录制生成的C脚本进行编辑。编辑可以采用两种方法:一是利用QALoad提供的内部函数;二是它完全兼容C、C++和Visual C++。根据我们的经验,手工编辑录制的脚本,或者自己写脚本,是一种更灵活的方法,更能贴近实际需求。编辑录制脚本在以前的测试漫谈中已经介绍过,这里着重谈谈手工编写脚本。
通过一个录制动作(可以什么实质操作都没有)产生一个脚本,删去无关的东西,这样就得到一个“框架”。接下来就可以在此框架上编写脚本了。脚本的编译工具和Visual C++是一样的,所以关于类、事件、对象、封装、继承、重载等概念都是有效的,但是有关MFC (Microsoft Foundation Class)的使用我们将在以后作进一步探讨。如果在实际应用中,能够适当灵活的在脚本中定制、应用QALoad提供的内部函数将大大提高脚本的质量,这对测试结果起着至关重要的作用。
QALoad提供的Session看上去是独立的,但在使用时却可以结合起来应用,以达到特殊的测试目的。我们知道,在Windows环境下,应用程序可通过Windows Sockets接口在一个TCP/IP网络上发送或接收数据,这种Winsock编程给程序员提供了极大的方便,也普遍应用于各种软件系统。QALoad同样也提供了这种Session。我们曾经利用此功能成功的录制了基于Winsock规范的中间件应用。而对于一个开发中不单纯使用Winsock编程技术的系统,最佳的方法无疑是将其它的Session和Winsock Session结合起来使用。测试中,我们曾将SQLServer和Winsock作为一个总Session录制对应测试目标的操作,得到的脚本和单独使用一个Session录制的脚本比较,不仅脚本的质量有质的飞跃,而且测试结果也更接近于实际情况。
成功的录制脚本只是并发测试的第一步,它对测试结果有着很重要的影响,但并不是影响测试结果的唯一因素。我们利用对比测试发现,在环境变量不同时,即使应用编译和校验都正确的脚本,其结果也有着明显差异。可见合理配置动作之间的时间间隔,虚拟用户的递增频率等环境参数也是确保测试结果正确性的关键。
测试工作本身就是一个反复实践的过程,只有经过多次实验和总结才能找出最为行之有效的测试方法。可见要充分灵活的利用QALoad的各种功能,并非一朝一夕之事!