你知道一个测试API性能的好工具吗



我需要模拟来自不同地理位置的3G网络和http请求

API:HTTP restful-JSON

地理位置:欧洲、美国

客户端:移动设备

听起来你在问两个不同的问题:

  • API服务器的性能特征是什么?最有用的表述是:在响应时间超过您可接受的水平之前,它可以服务多少并发用户
  • 您的客户端设备的性能体验如何

我鼓励您将这两个问题分开,并对它们进行独立测试。在3G上运行的设备很难产生足够的负载来给配置良好的网络服务器带来压力,而且在世界各地委托数千个负载测试节点通常是不划算的。此外,一旦流量到达您的网络服务器,它就不应该真正关心它是否来自同一个城市、国家或大陆,或者它是否来自移动设备、PC或负载测试服务器。

因此,我将使用您喜欢的任何负载测试工具来测试web API的性能。ApacheJMeter是免费的,但有一点学习曲线;然而,它可以从几个云提供商那里获得,这允许你在不同的大陆进行测试和运行。谷歌"Jmeter云"了解更多详细信息。

如果性能是一个关键问题,您可能希望有一个连续的测试制度,在这个制度中,您每隔一周左右对代码进行性能测试,并在进行优化时进行优化——将优化留到项目结束通常是相当危险的。。。

下一个问题是"好吧,我知道我的API服务器可以在平均响应时间<1秒的情况下处理1000个并发请求"(或其他什么)-这如何转化为最终用户体验?

只有当你真正清楚你的网络服务器不是瓶颈时,攻击它才有意义——因为你为优化性能而做出的大多数决策都是非常重要的。

从逻辑上讲,如果您知道您的Web服务器在某个级别上响应,那么最终用户的性能会受到网络延迟和吞吐量的影响。延迟通常通过ping次数的粗略统计来衡量:网络数据包在客户端和服务器之间传输需要多长时间?如果不重新审视你的整个托管策略,很难或不可能提高ping时间;这取决于光速、主机场与客户端和服务器之间的数十个其他网段之间的连接。

吞吐量通常以字节每秒为单位。通常,这是你可以影响的事情——例如,通过减少API的冗长,使用压缩等

3G设备通常具有相对较差的网络延迟特性,但在正常情况下具有相当不错的吞吐量。然而,有许多情况会影响延迟和吞吐量,这是完全不可预测的——繁忙的地点就是一个典型的例子:一个充满3G设备的足球场意味着个人用户的连接往往很差。

测试这一点很困难。我会将其分为3G设备测试和地理差异测试。为了在3G设备上测试性能特征,我会在专用测试套件(可能基于JMeter)前使用带宽调节器来模拟网络条件。

拼图的最后一部分可能很昂贵——有来自世界各地的专业公司可以测试网络性能。他们在世界各地都有节点,可以在那里执行测试脚本;他们经常为您编写脚本,并为您提供运行和测量测试的web界面。我过去使用过Keynote,发现它们非常好。这种测试是昂贵的,所以我只在项目结束时使用它,一旦我排除了所有其他性能方面的考虑。

对于JSON负载测试,json简单

对于一般的REST,您可以使用loadUI-"用于负载测试多种协议的工具,如Web服务、REST、AMF、JMS、JDBC以及网站。loadUI使用高度图形化的界面"

最新更新