Web services 如何在服务器端对使用JSON restful web服务构建的web应用程序进行负载测试?

Web services 如何在服务器端对使用JSON restful web服务构建的web应用程序进行负载测试?,web-services,rest,testing,performance-testing,load-testing,Web Services,Rest,Testing,Performance Testing,Load Testing,这个问题不是关于使用哪些工具进行负载测试 这是一个关于应该测试什么的更一般的问题 背景: 几年前,大多数企业web应用程序设计为前端和后端混杂在一起,任何类型的业务逻辑都在服务器端完成。而前端的责任只是显示UI 在对此类应用程序进行负载测试时,无论是Oracle EBS还是SAP的产品,还是使用Struts等框架构建的应用程序 我们要做的是: 1.设计一个用户测试用例。(如登录、搜索、将某物放入购物车,然后查看日志) 2.编写测试脚本来归档这样的测试用例(下划线,这是对服务器端的纯http调用)

这个问题不是关于使用哪些工具进行负载测试

这是一个关于应该测试什么的更一般的问题

背景:

几年前,大多数企业web应用程序设计为前端和后端混杂在一起,任何类型的业务逻辑都在服务器端完成。而前端的责任只是显示UI

在对此类应用程序进行负载测试时,无论是Oracle EBS还是SAP的产品,还是使用Struts等框架构建的应用程序

我们要做的是:
1.设计一个用户测试用例。(如登录、搜索、将某物放入购物车,然后查看日志)
2.编写测试脚本来归档这样的测试用例(下划线,这是对服务器端的纯http调用)
3.使用LT工具一起生成大量虚拟用户来运行这样的测试。 (它的行为就像有很多用户一起执行相同的业务逻辑)

而现在,在前端和后端完全分离之后,整个事情发生了变化

很多业务逻辑可以放在前端,而服务器端只有单独的RESTfulWeb服务

我发现我们不能像以前那样进行负载测试

只是因为用户的测试用例无法映射到http通信。因为有些任务完全是在前端完成的

但是在这样一个新的世界里,如何进行性能测试呢?只是测试JSON restful web服务的性能?从服务端传输到浏览器的静态资源如何


我需要这些人的建议,他们为这种JSON restful web服务应用程序进行了大量的性能/负载测试。

您的负载测试不应仅限于后端。性能良好的负载测试需要尽可能地代表坐在真实浏览器后面的真实用户,包括(但不限于):

  • 与标识浏览器的用户代理一样,接受用于内容压缩的编码,等等
  • 用于身份验证和跟踪用户会话
  • -浏览器用于下载嵌入网页中的图像、脚本和样式,并将其存储在本地,因此在后续请求中,这些“重”实体不会重新下载,而是从浏览器的磁盘缓存中返回
  • 这是异步JavaScript驱动的调用,用于动态更新页面内容,而无需重新加载整个页面。棘手的一点是AJAX请求是并行执行的(即一个主请求“生成”多个并行AJAX请求),大多数负载测试工具无法处理这种情况

因此,您的测试目标需要是前端,而不是后端,因为仅后端测试不能说明全部情况,您可能会错过一些重要的内容。有关适用于免费和开源负载测试工具的更详细的解释和示例配置,请参阅文章(不过,该方法应与工具无关,无论在后台使用什么负载测试工具,都应遵循相同的步骤)

您的负载测试不应仅限于后端。性能良好的负载测试需要尽可能地代表坐在真实浏览器后面的真实用户,包括(但不限于):

  • 与标识浏览器的用户代理一样,接受用于内容压缩的编码,等等
  • 用于身份验证和跟踪用户会话
  • -浏览器用于下载嵌入网页中的图像、脚本和样式,并将其存储在本地,因此在后续请求中,这些“重”实体不会重新下载,而是从浏览器的磁盘缓存中返回
  • 这是异步JavaScript驱动的调用,用于动态更新页面内容,而无需重新加载整个页面。棘手的一点是AJAX请求是并行执行的(即一个主请求“生成”多个并行AJAX请求),大多数负载测试工具无法处理这种情况

因此,您的测试目标需要是前端,而不是后端,因为仅后端测试不能说明全部情况,您可能会错过一些重要的内容。有关适用于免费和开源负载测试工具的更详细的解释和示例配置,请参阅文章(不过,这种方法应该与工具无关,无论在引擎盖下使用什么负载测试工具,您都应该遵循相同的步骤)

我同意测试“现实”变得越来越困难富客户端的流量模式。同样的情况是,随着越来越多的事情转移到客户端,可伸缩性测试变得越来越关注测试后端API

与Dmitry编写的一样,测试整个内容交付系统总是很有用的,但是考虑到在测试自己的API和交付图像的CDN之间的选择,我认为测试API更为重要。这是您最有可能发现可伸缩性问题的地方

我们已经意识到,许多人根本不进行负载测试的一个原因是因为“工作量太大”,而对实际测试的需求是导致这种情况的一个主要因素。我们已经编写了一份即将发布的“以开发人员为中心的负载测试”宣言,该宣言主张“简单的测试总比没有测试好”。可能看起来很明显,但今天大多数人根本不进行负载测试。出于这个原因,我们提倡从非常简单的开始,使用小的“单元负载测试”来达到单个API端点。编写两个非常简单的测试,并开始定期运行它们(理想情况下是在CI系统上的夜间构建中),只需单独运行API端点,看看每秒可以执行多少个请求(或您想要测量的任何指标)

这些简单的测试将为您提供大量的价值,只需很少的努力