您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    负载测试的端到端指南(2)
    时间:2021-08-07 12:01 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    该脚本会向一个复杂的测试站点(其URL为https://test.k6.io)发送一个HTTP的GET央求。请将该代码复制到文本编辑器中,并存为test.js文件。接着,您便可以运用命令--k6run test.js,来运转它,并失掉如下显示结果:

    负载测试的端到端指南

    在k6中运转复杂的本地测试示例

    从上述截图中,我们可以看出,本地主器上的1个虚拟用户执行了1次脚本的迭代。而该HTTP测试央求的照应时间为128.2毫秒(即:http_req_duration)。

    使测试脚本愈加真实

    显然,上述脚本的GET央求过于复杂,无法到达用负载测试脚本在数量、以及天文散布上模拟真适用户的拜访状况。而假设负载测试脚本不够真实,则会在测试时期产生误报,甚至无法让用户发现运用组件潜在的功用成绩。下面,我们来讨论一下如何让测试脚本更为真实。

    添加静态资源

    假设页面上带有可被阅读器自动检索到的图像或脚本等静态资源,那么请确保测试脚本也会去检索此类资源。毕竟它们会影响到您取得页面的照应时间。当然,假设您曾经取得了来自第三方提供商的容许,那么您也可以思索从第三方处获取静态资源。

    设置缓存和cookie行为

    虽然站点的初次拜访者无法调用本地的缓存资源,但是重复拜访者则会从缓存中检索相应的资源。对此,我们应当反省负载测试工具的默许缓存和cookie管理的设置,并经过按需更改,来婚配真实的测试场景。

    添加“思索时间”

    真正的用户通常不会不停地重复刷新相反的URL。他们在导航到目的网站后,会花一些时间阅读页面上的内容,与页面上的某些组件停止交互。这些用户的“思索”时间其实就是各个央求之间的延迟。因此,经过添加1到5秒的“思索时间”,我们可以让运用效劳器免于遭受外挂机器人收回的央求轰炸。

    运用不同的用户途径

    用户途径是指用户如何与运用顺序停止交互的流程,其中包括:他们会拜访哪些页面,输入哪些信息等。我们前面在方案阶段所树立的任务负载模型,可以直接反映出系统中最常见的用户流程,例如:运用不同的阅读器停止登录,或是从购物车中选择商品付款等。在k6中,我们可以经过添加不同的场景来完成,而其他工具则能够称之为线程组或执行组。

    添加测试数据

    正如普通用户是不会一遍又一遍地搜索相反的关键字,也不会运用同一个测试帐户在各处同时登录那样,我们的测试脚本也不应该重复地运用相反的数据。假设多个虚拟用户运用同一帐户停止登录,那么就能够招致其照应被缓存,进而延长照应的时间,或添加错误率。对此,您需求将脚本修正为从某个CSV文件中获取测试数据,以添加真实的随机性。

    设置测试参数

    测试参数往往可以经过调整测试用户数的激增与骤降,来改动用户负载的时间变化趋向,进而协助您绘制出虚拟用户数与时间变化的曲线图表。

    负载测试的端到端指南

    在k6中表现的负载测试时期虚拟用户的数质变化

    设置失败的判定标准

    模拟真适用户的一个重要环节便是发现有哪些要素会招致用户拜访的失败。您可以经过添加照应验证、反省和阈值(包括照应时间或错误率的阈值),将失败的判定标准添加到测试脚本中。同时,您也可以依据实践状况,灵敏地调整这些与功用相关的标准。

    依据上述讨论的要点,我对最后的k6基本脚本停止了修正,让它更贴近真实的测试状况。在参考链接--https://gist.github.com/nicolevanderhoeven/fb74cd9769c8abf95eeb8765a49398cb中,也包含了一个带有登录凭据的CSV文件。

    执行负载测试

    让我们延用下面的k6脚本,并经过执行如下命令,来触发负载测试的运转:

    k6 run test.js 

    该命令将依据文件中已有的测试参数在本地执行k6脚本。此类小型验证性测试,通常被称为震荡测试(shakeout tests)。当然,我们接上去会在基础架构上运转愈加复杂的负载测试。

    测试的真实性

    当您在数据中心的主机上运转负载测试时,由于测试与运用效劳器同属一个网络,其照应时间会比用户真实体验到的要快得多。因此,我们应当设法将负载生成器的位置,与用户的物理位置相婚配。对此,在云端运转测试便是一种添加测试真实性的简便办法,尤其是当您的大少数最终用户是在组织外部的时分。

    针对上述例子,您可以经过链接--https://app.k6.io/account/register,注册一个k6的云端帐户(其中,前50个测试是收费的)。由于k6本身是开源的,因此您也可以在本人的云端基础设备上运转它。当然原生的k6云效劳会愈加直接且便于上手。

    在拥有了帐户之后,您可以经过链接--https://app.k6.io/account/api-token,复制API令牌,然后在终端中运转如下命令,以授权本地的k6运转您的帐户:

    k6 login cloud –token 

    而成功地经过了身份验证之后,您便可以选择在云端运转如下命令了:

    k6 cloud test.js 

    下图展现了k6执行的负载测试结果。图中的执行形式(execution)则表明您是在云端运转该测试的。

    负载测试的端到端指南

    由于您的测试默许会在美国Ashburn区域的k6 AWS账户中运转,因此您可以运用云端执行选项(cloud execution options,请参见--https://k6.io/docs/cloud/creating-and-running-a-test/cloud-tests-from-the-cli#cloud-execution-options),将此设置按虚拟用户的比例,指定到其他区域。

    剖析负载测试的结果和报告 (责任编辑:admin)