我有一个微服务架构设置,我正在寻找压力测试它。我有一个非常复杂的设置,其中包含一些同步的HTTP请求和一个消息队列系统(RabbitMQ)。
当我使用另一家公司的API服务器时,我不想冒给他们的服务器施加压力的风险。该请求是一个同步调用,它询问API提供者并返回相当大的响应。相反,我希望有一些存根/模拟将返回类似的响应并具有类似的延迟。例如,假设该服务器的响应为5s并返回2kb的数据,那么我想引入5s延迟并以我具有的格式或多或少地返回一些相对大小的数据(换句话说,我想要一些自定义)准备好了。
为此,我需要(a)捕获相当大的响应并进行编辑。特别是,我想对其进行编辑以过滤掉一些敏感数据,并增加其大小并使其更大,以便强调系统的带宽方面。 (b)我需要尽可能地靠近本机解决方案,以便从此方面更好地掌握响应时间,并且我还希望在进行压力测试时尽可能减少开销。我一直在研究一些解决方案,例如WireMock,如果我的理解是正确的,则可以设置一个假服务器进行测试。这对我不起作用,因为我需要使用自己的服务器(基于TomCat)来保持与我的体系结构的距离尽可能近。
答案 0 :(得分:1)
您可以在Servlet容器(包括Tomcat)中运行WireMock。您将失去对某些配置属性的访问权限,但是在您描述的情况下这可能无关紧要。
有关详情,请参见此处:http://wiremock.org/docs/getting-started/#Deploying-into-a-servlet-container
或者,您可以使用MockLab,它是基于WireMock的完全托管的服务。
答案 1 :(得分:1)
是的,Wiremock听起来是个不错的建议。对于我的团队而言,wiremock非常有效。
我建议采用以下方法: 安装Docker 使用docker-compose up在docker容器中启动Wiremock。 docker-compose.yaml示例:
version: "3"
services:
wiremock:
image: rodolpheche/wiremock:latest
ports:
- "8181:8080"
volumes:
- ./__files/:/./home/wiremock/__files/
- ./mappings/:/./home/wiremock/mappings/
command:
- -verbose
- -global-response-templating
docker-compose up(在保存yaml的目录中,并接受文件系统访问请求) 那么你应该准备好了。
Api的网址应指向http://localhost:8181
之后,使用真实数据(http://localhost:8181/__admin/recorder)进行记录
并在录制时输入您的http作为外部api。
将正文拆分为单独的文件,并将其放置在__files文件夹中。 指向请求文件中的“ bodyFileName”文件(映射)
将Wiremock数据文件(__files)与请求文件(映射)分离后,您可以使用模板逻辑在响应中启用日期计算(现在+ 1天)之类的功能,以及使测试数据持久且可重用的其他重要功能
我在这里有一些建议。 mobileera_wiremock_kb
另外,在捕获了一些外部api场景之后,您还可以设置一个共享的Wiremock,以供其他开发人员访问。