RELATEED CONSULTING
免费使用
下列产品全部免费使用
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
通过智能测试避免黑色星期五、网络星期一的灾难
  • 发表时间:2020-08-23 22:02
  • 来源:数度域

许多在线企业依靠黑色星期五和网络星期一来提高利润率。在这四天的时间里,零售商将会看到他们网站的流量飙升。

零售商如何确保他们的网站在这个关键时期是稳健的,不会失败?答案在于智能测试的应用。

传统上,黑色星期五是零售商一年中最后收支平衡的日子。在这种情况下,“黑色”指的是最终变成黑色的账户。在线商务的兴起将黑色星期五推向了新的高度。现在,销售现象持续了整个周末,并延续到了网络星期一。

从感恩节到2018年网络星期一的五天里,1 . 65亿购物者平均每人花费超过300美元。

大多数网上零售商将会在黑色星期五周末看到大规模的流量激增。事实上,他们会看到双重打击。不仅有更多的人来参观——他们为了寻找最好的交易而反复参观。结果,零售商的后端服务承受了巨大的压力。

这一时期的失败将是毁灭性的,带来坏的头条新闻和收入损失,并可能失去宝贵的未来客户。那么,如何避免这些陷阱呢?答案是确保你的网站是完全防爆的,能够毫无问题地处理激增的负载。

压力测试

压力测试是指增加网站负载的过程,直到它失败,或者直到性能下降到可接受的水平以下。

通常,压力测试有两种类型。首先,检查您的站点是否能够处理预期的高峰流量负载。在第二种情况下,你不断增加负载,试图让你的站点失败。这很重要,因为您需要检查它是否正常失败。传统上,这种测试是以非常静态的方式进行的,但是正如我们将看到的,这并不现实。

基于api的压力测试

压力测试的最早形式包括创建一个脚本来重复调用api。api,或应用程序接口,是用户的客户端(浏览器或应用程序)与后端服务器连接的方式。您可以通过使用像 curl这样的命令行工具或像 soapui或 panel这样的特殊工具直接调用来模拟用户。

这个想法是在你的后端放置太多的负载,以至于失败。这种方法具有简单的优点,尽管编写脚本可能很困难。每个会话都需要自己的api密钥,因此您需要一个具有足够智能的脚本来处理所有的密钥和会话。

然而,这种方法有三大缺点:

  • 现代web应用依赖于几十个相互连接的API。这种方法不能正确地测试所有这些交互。
  • 所有会话都来自同一个物理(和逻辑)源。这意味着您的负载平衡器将无法正常工作。
  • 真正的用户不会以可预测的方式互动。在测试脚本中模拟这种随机性非常困难。
  • api测试仍然有用,但通常只用于验证api的行为。

    现实主义的重要性

    曾几何时,网站是一只简单的野兽。它通常使用带有linux服务器、apache webserver、mysql数据库和php前端的lamp栈。这些服务都在一台服务器上运行,可能是为了处理故障而复制的。问题是,这种模式无法扩展。如果你有一群闪客,apache会很快被淹没,用户会看到一个错误页面。

    如今,网站要复杂得多。通常,它们从多个位置运行(例如东海岸和西海岸)。使用负载平衡器在站点之间共享会话。这确保了您的所有站点使用各种试探法来分配负载,例如源ip地址,从而获得相等的负载。

    许多站点现在都是集装箱化的。应用程序不是由一台服务器构建的,而是由一组容器构建的,每个容器提供一种服务。这些集装箱通常能够扩大规模,以应对不断增长的需求。如果所有的流都来自同一个位置,负载平衡器将很难正常工作。

    基于会话的测试

    像 load ninger和 webload这样的工具旨在提供基于完整会话的更智能的测试。当用户访问网站时,他们会创建一个用户会话。现代网站的设计使得这些会话与实际的连接无关。例如,从wifi热点移动到蜂窝数据的用户不会经历会话中断。你们中的极客会知道“会话”是osi模型的第5层。这一层的测试比api测试好得多,因为它确保了所有API都以正确的顺序被调用。

    一般来说,这些工具需要您定义一些标准的用户交互或用户旅行——例如,登录流程、产品搜索和购买。该工具通常会记录这些用户旅程。在其他情况下,您可能不得不手动定义测试,就像在ui测试中使用selenium一样。

    定义了用户旅程之后,你就可以用它们来进行压力测试了。这些测试肯定比api测试方法更好。它们更现实,尤其是如果你很好地定义了你的场景。然而,它们仍然有一个主要的缺点,即它们是从一个位置运行的。他们还受到影响所有基于脚本的测试的问题的困扰,即选择器的改变。

    选择器的重要性

    自从selenium展示了这种方法之后,基于脚本的测试工具就使用javascript选择器来识别被测系统中的ui元素。元素包括按钮、图像、表单中的字段和菜单项。对于负载测试工具,这些元素用于创建简单的场景,以可预测的方式测试系统。例如,查找并单击登录按钮,输入有效的登录详细信息,然后提交。

    问题是,javascript选择器不够健壮。每次你改变你的css或者ui布局,所有的选择器都会改变。就像使用不同的浏览器一样,即使以不同的分辨率呈现ui也会引发变化。这意味着您需要不断更新您的脚本。像webload这样的工具试图通过忽略页面上的大部分元素来提供帮助,但是如果布局发生变化,您仍然会遇到问题。

    智能测试

    人工智能的最新进展彻底改变了测试。诸如 mabl、 smartbear和 functionize等工具已经开始应用机器学习和其他技术来创建智能测试工具。

    这些工具中最好的使用智能测试代理来复制熟练的手工测试人员的行为——例如,提供几乎免维护的测试,以及直接从英语测试计划中创建工作测试。

    通常,这些工具使用智能来识别正确的选择器,允许它们对大多数ui更改保持健壮。甚至有可能通过分析真实的用户交互来创建测试,以发现新的用户流。智能测试代理不仅可以测试简单的用户旅程,还可以创建极其丰富和真实的用户旅程,考虑真实用户如何与您的网站交互。

    智能选择器

    ai允许你为网页上的元素构建复杂的选择器。这些选择器结合了许多属性——比如元素的类型,它与其他元素的关系,元素的名称,css选择器,甚至复杂的xpaths。

    每次运行测试时,智能测试代理都会了解页面上每个元素的更多信息。这意味着它的测试对于css和布局的改变是健壮的——例如,如果buy now按钮移动到页面的顶部,并且被涂成绿色以使它更加突出。

    复杂的用户旅程

    测试脚本通常使用简化的用户旅程。这是因为创建每个脚本需要几天时间,调试需要几天时间。智能测试工具支持创建更丰富的用户体验。

    它们通常分为两类:智能测试记录器和自然语言处理系统。第一个记录了用户与网站互动的过程,使用人工智能来处理不必要的点击、错过元素中心的点击等等。智能测试代理使用nlp来获取简单的英语测试计划,并将这些计划用作测试系统的一组指令。

    基于云的测试

    人工智能需要大量的计算资源,因此大多数智能测试工具作为基于云的服务运行。每个测试通常在一个虚拟服务器上运行。这些虚拟服务器可能存在于多个地理位置,例如, aws在美国有7个位置,在全球还有15个位置。这意味着对于您的负载平衡器来说,每个测试看起来都像是一个唯一的用户。

    智能压力测试

    智能测试代理将真实的用户体验与来自多个地点的测试相结合,为您提供智能压力测试。每个云位置都会启动一系列测试,稳步提升负载。每次测试完成后,新的测试就开始了。这考虑了每个测试的不同持续时间(考虑到网络延迟、服务器延迟等)。(

    这意味着您可以生成成千上万个看起来和行为完全像真实用户的会话。更好的是,你可以一个接一个地记录你的站点的反应。这使您可以看到哪些页面可能会导致问题,并让您详细了解您的站点在负载情况下的表现。

    这种方法解决了api和基于会话的测试工具的所有问题。测试会话看起来和行为完全像真正的用户,因此它们将生成正确的api调用序列。您的负载平衡器和基础架构将会正常运行,因为每个会话看起来都是唯一的。

    最后,系统是智能的,所以在页面被正确加载之前,它不会尝试调用新的api。这与其他方法形成了鲜明的对比,在其他方法中,您倾向于在开始下一个动作之前使用固定的延迟。

    压力测试对任何电子商务网站来说都是必不可少的,尤其是在黑色星期五和网络星期一之前。传统的方法,比如api和基于会话的测试,当你有一个单一的基础设施时会有帮助,但是现代的网站要复杂得多,值得更好的测试。

    智能测试代理提供更准确有效的压力测试,让你对你的网站在现实条件下的表现充满信心。它也能让你安心,任何失败都会被优雅地处理。

    通过智能测试避免黑色星期五、网络星期一的灾难 相关的文章:

  • 人工智能仍处于形成阶段
  • 通过数字建立销售团队
  • 佐拉副总裁马特·达罗:订阅模式的智能
  • 最佳无线服务和智能手机
  • sugarcrm推出提示,在关系智能系列中排名第一
  • 智能家电和你