2.用TestStudio模拟用户模式
Rational TestStudio提供了很多种创建和模拟虚拟测试用户的方法,但就是因为有太多的方法,有时也会变得难以选择。下文将以在线书店为例,描述并论证三种用户模式的模拟方法,这同时也是个人觉得最简单和最通用的方法:
- 全路径脚本方法:为每条浏览路径录制单独的脚本,并在测试套件(suite)中分配适当的用户比例。
- 路径片段方法:为图形中的每一段线录制单独的脚本,并在测试套件中正确的组织起来。
- 灵活的脚本方法:在录制的脚本中创建灵活的脚本,处理大部分浏览路径中的少数例外。
每个方法都可以与其它方法结合起来使用,模拟更复杂的用户模式。每种方法都有其固有的优点和缺点,下文将会提到。
2.1.全路径脚本方法
三种方法中全路径脚本方法最容易描述和执行。这种方法为每个可能的浏览路径录制单独的端到端脚本,然后创建测试套件以适当的分布组织执行这些脚本。图2展示了购买小说的脚本中所包括的三种可能的路径。
?
图2 全路径脚本方法的购书路径
录制3个这样的脚本是相当简单的事情。请注意,图中主页访问和购书活动在所有的脚本中都是重复的,这会在其它方法的论述中再次提到。图3展示了脚本在TestManager测试套件中的用户比例情况。
图3 全路径脚本执行方法的测试套件
这是模拟简单用户模式的一个好方法,只需少量的脚本就能覆盖所有可能的用户路径。而且,也不需要手工修改任何脚本来模拟用户模式。由于每种用户都直接匹配一个脚本,当测试有安全的会话ID或cookie的站点时比较容易处理安全问题,也许这就是这种方法最大的优势。(我会在后续的文章中论述关于安全会话的处理)
但另一方面,这种方法也有较大的缺陷。首先,脚本中重复的功能意味着更多的开销,会降低当前测试环境下的虚拟测试用户数。如果你的测试实验室和我一样的话,你需要为这些消耗巨大的测试保留所有的资源,而你当然不希望硬件设备成为瓶颈而使得性能测试结果变得很糟糕。就个人而言,在大多数情况下我会尽量使每个套件的测试脚本数量少于12个。在不影响性能测试结果的情况下,你的主站点和代理站点的硬件越好,测试套件中就能容纳更多的脚本。
其次,还有关于动态数据方面的缺点。脚本中的冗余部分有时会包含一些每个虚拟用户都不同的数据(例如登录信息),可能会用到数据池。这会导致每个脚本都有独立或非常相似的数据池,以及用于控制这些数据逻辑的共享变量或持久变量。如果管理不当的话,这些将产生大量的开销。通常,尽可能地消除持久变量,并减少数据池的数量和大小,只产生必要的数据,是一个不错的做法。
最后,如果脚本中主页或者购书部分发生了变化,所有脚本都需要修改。如果变动较大的话,3个脚本都需要重新录制。对于已经稳定的已发布应用来说,这可能不会有这个问题,但如果测试的系统还在开发当中,那要好好考虑一下了。