3. 测试用例与测试数据
确定了测试计划后,就可以针对测试计划中确定的需要测试的指标设计测试用例了。同样,设计的测试用例也需要向客户解释清楚并得到客户的认可。一般来说,客户比较关注的“这个测试用例怎么能说明系统达到了性能指标?”和“我怎么检验你的测试结果?”,因此需要通过会议或是其他方式与客户尽可能地沟通,在本项目的测试中,我们在第一轮测试中就出现了因为与客户沟通不够出现的问题,其实在测试用例执行之前,我们已经和客户进行了测试用例的确认,但在执行过程中,用户表示希望能看到更详细的中间结果,导致我们只能重新修改了部分测试工具和测试环境,导致测试执行未能按计划完成。第一轮测试完成后,我们就再次和用户对测试用例进行了详细的审核,包括每个用例的详细输入、输出,以及如何验证输出。
从已确定的测试指标产生测试用例没有单一的法则,这个就是测试设计员(Test Designer)的基本功了,在这里不进行描述。
关于测试用例的书写格式在51cmm和其他很多网站上都有讨论,我个人的感觉是不必要太多拘泥于测试用例的书写方式,一般只要测试用例描述清楚了测试步骤、输入、预期输 用例编号 XXXX_NFT_PT_XX 用例对应功能点
从本测试用例中可以看到,测试用例已经详细定义了用例执行的先决条件、测试输入和输出,以很直观的方式给出了测试用例的各个要素。
设计测试用例的过程中,同时需要关注的是测试数据的产生和维护。
在上一个测试用例的例子中,“特定告警的详细内容”就是一个被选择的测试数据,如何选择具体的测试数据需要根据测试的具体需求而定,没有统一的法则。但在设计测试用例时,一定要明确每个用例的数据需求并将这种需求综合起来,并形成对测试环境的测试数据的维护策略,以便在测试用例执行时能顺利进行。
一般而言,我们可以考虑初始测试数据的需求、考虑测试用例之间的依赖关系、记录每个用例对数据的要求,然后最终确定需要哪些测试数据和如何维护测试数据。
4. 测试环境与测试工具
制定了合理的测试计划、设计了满足需要的测试用例之后,我们就可以开始着手准备测试环境和考虑如何在测试中运用测试工具了。
4.1. 测试环境
测试环境的部署和维护是一件需要详细策划的事情,部署了合理的测试环境是测试达到目标效果的前提条件。一般来说,在考虑部署和维护测试环境时,需要考虑以下内容:
测试网络环境
性能测试一般都是在一个网络中进行,可能是一个单独的局域网,也可能是和生产环境相同的网络,不管实际的情况如何,我们都必须评估网络状况是否会对我们的测试产生影响,也就是说,要保证网络环境能够较好地模拟实际网络环境(包括网络状况、负载等)。当然,在我们的本次测试中,由于网络状况对我们的测试结果没有什么影响,我们的测试是在一个接近生产环境的100M局域网中进行。
初始数据的准备
在执行测试之前,我们需要准备足够支撑测试进行的初始数据,对本测试来说,初始数据包括静态数据、程序运行时必须的配置数据、配置文件、用户帐号信息等,建议将这部分数据按照不同的数据来源分别列出形成CheckList,这样可以避免在测试过程中出现数据准备不充分的情况。
本测试中我使用的CheckList示例如表1所示:
表1 本测试中使用的测试环境CheckList
除了测试环境CheckList外,还需要准备一份更详细的文档,详细记录每一个环境项目的实际数据,这样的一份文档一方面可以便于对数据的审查;另一方面,在测试过程中即使人员发生变动,新参与的成员也能很快熟悉整个测试环境。
测试数据的可恢复性
说到测试数据,就不能不提测试数据的可恢复性。在一次测试过程中,一个用例一般都需要被多次执行,但在多次执行同一个用例时,就必须保证每次执行用例时的环境一致,因此在准备好数据,执行用例之前,必须要计划好测试完成后怎样将整个测试环境中的数据恢复,在本次测试中,我们采用的是为每个测试准备一个“回滚”脚本,该脚本用来恢复数据至测试用例执行之前。
测试环境的时间同步
在性能测试中,尤其需要注意的是测试环境的时间同步问题。性能测试关注的是系统的总体性能表现,这些性能表现又需要通过各个模块的响应时间来体现,在本次测试中,我们在应用程序中增加了部分测试代码,测试代码通过记录关键操作的时间来完成性能指标的记录。
基于以上的要求,整个测试环境中各台计算机的时间同步就非常重要了,如果时间不同步的话,就会造成测试结果的不准确,尤其在本次测试中,部分测试指标要求到秒级,因此,我们必须要对整个环境进行一个精确的时间同步。
本测试的测试环境包括7台HP小型机、两台WEB服务器、一台Windows域服务器和15台加入域的PC机,在时间同步方案上,我们以一台小型机为主时间服务器,采用Windows域服务器作为Windows机器的时间服务器(域内的客户机可以实现与域服务器的自动的时间同步),利用NTP协议在Unix主机和Windows域服务器之间进行时间同步,之所以采用NTP协议,主要是因为NTP是在Internet和Unix系统上被广泛采用的协议,在Windows平台上,也有基于NTP协议的开源软件(NetTime)可以使用。