本节书摘来自异步社区《应用程序性能测试的艺术(第2版)》一书中的第2章,第2.3节性能测试工具集:概念验证,作者【新西兰】Ian Molyneaux(莫得尼克斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 性能测试工具集:概念验证
对于候选的性能测试工具,你需要对它们一一试用以验证工具的可行性,只有这样才能确保你最终选择的工具集能够满足你的需求。在验证过程中至少选择录制两个测试用例:一个只读用例(比如一个返回一条或者多条记录的搜索操作)和一个涉及插入和更新你的应用数据库的写用例。这样你就能验证录制下来的测试用例是否能够正确回放。如果你的应用是只读的,你也要检查脚本回放日志来确保回放过程中没有任何错误。
概念验证完成以下目标。
为验证性能测试工具是否适合目标应用提供了一次技术评估的机会
技术兼容性显然是一个关键目标,否则你将会在测试用例的脚本实现阶段举步维艰(或者根本是不可能完成的任务)!你必须在真实的应用环境来试用性能测试工具,只有这样才能在确定是否在项目中应用该工具之前充分暴露和解决问题。
发现脚本的数据需求
典型的概念验证会构建一些简单的测试用例,这些用例是整个性能测试项目的基础。这是在正式开始编写性能测试脚本之前非常好的一次排演机会,在这个过程中你会发现为了正确执行用例所需要的外部数据和运行时数据。概念验证只会创建两三个测试用例,随着正式用例的增多,你会发现更多的数据需求。但是概念验证经常能够帮你快速定位到一些常用的输入数据需求,比如登录的用户名密码和一些保持用户会话有效的状态数据。
帮助评估脚本编写难度
概念验证还可以帮你评估编写一个典型的测试用例脚本需要耗费多少时间以及评估修改脚本所带来的额外时间。
展示性能测试解决方案是否适合目标应用
相比简单的样例沙箱,针对实际应用的工具测试要靠谱很多。
概念验证检查点
下面列举的检查点为有效地开展概念验证提供了一些指引。就时间而言,每个概念验证都有它的独特性,但是在应用环境可用的前提下,一般不会超过几天的时间。
前提
下面这些需求应当在项目中尽早准备以便在需要的时候能够快速搭建POC环境。
和客户(内部其他项目部门)就POC项目的成功或者退出条件达成一致,你们需要对POC本身是否成功有一致判断。这些条件需要在正式开始POC之前文档化,并且确认签字。
拥有满足性能测试工具最低软硬件需求的一台工作站或者客户端平台。这台机器必须已经安装了应用客户端和相应的支撑软件。
拥有在被测应用环境安装任何需要的监控软件的权限。
最好能够在POC期间独占应用的使用权。
能够联系到一个熟悉应用的负责人(比如一个超级用户),他能够回答可能出现的应用使用问题。
能够联系到一个熟悉应用原理的专家(比如应用开发),他能够回答POC过程中出现的相关技术问题,并且能够解释应用架构在中间件层面是如何运作的。
一个能够正确安装性能测试工具到工作站的账号,并且这个账号需要对被测应用客户端有访问权限。
至少两套针对目标应用的登录信息。之所以需要两套是因为你需要验证并发执行测试用例时不会出现问题。
两个样例测试用例,一个是只读类型的操作,另一个是相对复杂的涉及更新应用数据的操作。这样就能验证脚本在读写模式下是否正常工作。
流程
下面这个列表可以帮助你确保POC项目为后续的正式性能测试打下坚实的基础。
针对同样的测试用例录制两份,然后使用你认为最便捷的方式对这两份脚本进行比较。选择有很多,Windiff就是一个不错的选择,也许你的性能测试工具本身就提供了这样的比较功能。定位两次录制脚本中不一致的地方,这些地方将会是需要重点关注和解决的运行时数据关联需求。
在定位了脚本输入数据和运行时数据关联以及其他一些必要的脚本修改之后,确保脚本在单用户和多用户模式下都能够正确回放。确认任何数据库更新在脚本回放之后都已经生效,并且回放日志没有错误信息。在POC或者后续的正式测试过程中,都需要避免由于手工修改脚本带来诸如内存泄漏等非业务问题。
注意
Windiff.exe是一款用于定位两个文件中不同内容的Windows工具程序;这是一款免费工具并且已经伴随Windows发布有好长时间。如果你需要更加强大的对比功能,可以尝试下面的工具:
prestoSoft的ExamDiff Pro
WinMerge
交付物
下面列表中的内容是POC的交付物,它们是后续有效开展正式性能测试项目的基础。
POC的输出应该针对性能测试工具是否能够对应用测试用例进行脚本化和回放给出明确的结论。
你应该在POC过程中定位到一些脚本输入数据和会话数据的需求并从中了解到后续性能测试项目过程中可能存在的数据需求。
你应该能够了解为了让脚本正确回放所需要做的一些脚本修改工作并且对编写一个能够正确执行的测试用例脚本所需要的时间也有相应评估。
如果这是一个销售过程的POC,你应该能够打动你的客户,并且和客户就之前达成的POC完成条件形成共识——一次完美的销售!