至于如何实现,如果你有编码能力,可以将开源代码引入到自己的测试代码中(需是标准协议),否者可能需要让程序的开发人员实现一个测试程序。不要不敢开口,开发人员协助进行性能测试是很正常的,而且这种工作量不会很大,只是把程序中的一些代码封装成一个可配置可方便调用的执行文件。

  让开发人员来实现测试工具不丢脸,怕的是你自己不知道测试工具应该实现成什么样。(当然,如果自己可以看源码来实现工具那更好了)

  第二个问题,同样的,所谓的B系统调用A系统这个动作,是如何实现的?

  会不会只是一个简单的HTTP请求?

  或者是调用A系统的一个webservice接口?

  你要测的是A的这个功能么?

  如果是,那我们为什么一定要通过B系统来录制这A的这个功能呢?完全可以直接向A发送请求或者是调用接口(如LR中的webservice协议)。

  至于具体如何做,可能有很多现成的接口测试工具,也可能仍然需要开发人员的协助。比如B与A之间传递的数据是经过加密的,那对(黑盒)测试来说会非常困难,这种情况下,确实有可能通过B来录制会更简单。

  在51Testing上看到的一个问题,问如何测试一个统计报表的另存为(excel)功能。

  点这个按钮后,服务器会生成一张报表,然后弹出浏览器的另存为对话框,保存为本地文件。提问题的这个人遇到的困难是,LR中好像没法录制“另存为”这个动作。

  之所以会有这样的问题,根本原因还是没有理解系统的运行原理,没有区分哪是服务器、哪是客户端。

  一般来说,这个过程是这样的:

  1、点另存为按钮时,向服务器发送了一个计算报表的请求,这个请求中会包含一些参数,如报表类型、统计时间等等。

  2、服务器计算完成后,将结果数据返回给客户端(浏览器)。

  3、浏览器本身的功能,将数据保存为一个本地文件。

  (这里假设了计算过程是另存为按钮触发的,如果是打开页面时计算完,那点按钮时甚至有可能根本没与服务器进行交互)

  如果明白了这个过程,那么不会纠结于录制“另存为”这种事情了,你要做的只是向服务器发送一个请求,然后接收响应数据。

  那么不需要生成本地文件了么?当然不是,否则怎么验证返回的数据没有问题呢。只不过这个文件的操作需要自己来实现了,创建文件、写入数据、关闭文件。

  后再总结一下要点:

  ● 理解系统的运行原理

  ● 区分服务端和客户端

  ● 弄清楚你要测的是什么,哪些东西其实是可有可无的

  ● 要模拟的是服务器的压力,而不是客户端的操作

  ● 录制只是一种手段,很多情况下并不是佳选择

  ● 开发人员的协助是应当的,但前提是你要明确的知道应该如何测试