当前位置: 首页 > 质量专栏 > 测试可观察性对 DevSecOps 的好处
测试可观察性对 DevSecOps 的好处
2023-04-13 浏览次数854

  想象一下,您正在开发物联网产品。它可能是连接到安全警报器的门铃,或者可能是从您的手机到您的汽车的连接。无论哪种方式,系统都由一系列复杂的 Web 服务组成。这些产品通常有一个连接到外部服务的本地“集线器”(您的路由器或车辆),以及一个位于数据中心的后端,需要身份验证。现在想象出了什么问题。邻居按了门铃,或者你点击打开车门,然后……没有任何反应。什么地方出了错?

  这可能是手持移动设备、路由器、设备、互联网、与后端的连接、后端服务或什至是我们不知道的其他依赖项的问题。我们大多数寻求测试帮助的人都是在构建复杂的产品。当出现问题时,我们需要了解哪个组件发生故障、它处于什么状态以及它发送了什么输入。

  输入可观察性。可观察性是系统状态的内部元素可以从给定的交互中被理解的程度。高度可观察的系统是“黑匣子”的对立面;你可以看到它的内部。本博客将从调试和测试开始深入探讨可观察性的好处。

  调试

  这是第一步——哪个组件失败了?是门口的硬件、路由器还是互联网?对于简单的程序,程序员有一个“调用堆栈”,可以跟踪错误发生的位置、调用了哪些方法以及传入了哪些调用值。API 调用堆栈没有什么不同——我们可以看到消息来自设备到路由器,然后……什么都没有。

  当然,有时软件会注册一个合法的错误。其他时候,事情只是需要太长时间。在一个汽车项目中,我们会看到一切正常,但门解锁或喇叭鸣笛可能需要两分钟的时间来处理。在没有可观察性的情况下,故障单是“车门解锁速度慢”。通过可观察性,我们可以看到消息在流程的每个步骤中何时离开。为了提高性能,我们需要这些数据,这样我们就可以找到过程中花费时间最长但不应该花费的步骤,并减少它。没有它,团队基本上只能猜测、戳戳和刺激。

  测试设置

  没有可观察性,我们不知道究竟出了什么问题。相反,程序员必须尝试重复场景并重新运行练习,直到出现问题,将软件作为一个系统进行测试。有时,问题可能出在网络、无线连接或路由器上,导致“不稳定的测试”或“无法重现”错误。

  可观察性为我们提供了软件的完整踪迹。在闰年为 GETNEXTDAY 函数调用 API 时,API 本身会锁定。不要笑得太厉害;这导致了顶级公司的失败。

  可重复的错误有助于进行出色的自动化检查。一旦检查到位(并且失败),程序员就可以修复代码——并且“代码在测试运行时完成”。这意味着当生产中出现问题时,程序员可以从编写测试开始,然后编写代码修复它,然后运行回归套件,接近本质上持续交付的修复时间。

  为此,程序员需要知道哪个组件因什么输入而失败。为了快速(有时甚至完全)获取该信息,团队需要可观察性。

  扩展和增长

  任何简单的系统,例如汽车或自行车,其强度取决于最薄弱的部分。首先发生的事情——轮胎破裂或链条断裂——将破坏整个系统。软件系统也是如此,尤其是性能方面。过载的单个组件(如数据库)可能会导致整个网站瘫痪。在该组件损坏之前,它会显示出压力,它会变慢。客户可能不会抱怨;如果他们这样做,客户服务将无能为力。大多数可观察性工具都提供性能仪表板,因此您可以查看哪些子系统正在减慢速度。按响应时间排序(平均值,或者更好的是,中值),查看异常值,甚至计算减速度——模块减慢了多少。

  这为准确的性能测试提供了数据,也为准确的性能改进提供了数据。想象一下,在发生迫使您离开公路的事故之前,加固自行车链条或更换轮胎。就软件而言,我们可以使用延迟成本来计算改进的价值。这意味着我们可以计算可观测性项目的投资回报率!

  流量图的另一个优点是可以防御中间人攻击和其他攻击。该图表可以显示离开网站的流量,并允许您深入了解它。一个配置良好的系统实际上可以在第一个无效数据包开始传输数据时发出警报,例如中间人攻击。

  建立弹性

  “高可用性”正迅速变得不再是一种竞争优势,而是越来越多的业务成本。大多数公司获得高可用性的方法是减少平均无故障时间 (MTTF)。这可能意味着部署之间的延迟以及更严格的测试。该测试非常昂贵。在软件交付之前,公司无法获取软件的价值。持续交付变得不可能。

  实现该结果的另一种方法是专注于减少平均发现时间 (MTTD) 和平均恢复时间 (MTTR)。一个传统的 scrum 团队每两周修复一次错误,并在每个冲刺结束时进行部署,这将比一个可以在一小时内找到并修复缺陷的团队慢三百倍。能够更快响应的团队的缺陷数量可能是传统 Scrum 团队的 30 倍,但负面客户体验却只有传统 Scrum 团队的十分之一。

  一小时的停机时间听起来很雄心勃勃——但想象一下,一个仪表板会报告 500 个错误、登录错误和其他出现的 API 错误。不仅是报告,还有带有文本的警报。毕竟,500 错误意味着某些东西被破坏了。这可能意味着更多的操作时间,但如果消除了调试和指责,实际上可能意味着更少。

  底线

  即使是一个简单的现代 Web 应用程序也由组件组成——网页本身、javascript 胶水、前端 API、后端 API、第三方身份验证等等。那就是分布式系统,分布式系统有多个故障点。如果我们观察到这些故障点,我们可以快速发现并修复问题。另一方面,如果我们把整个系统当作一个黑盒子,那么当有什么东西坏了时,我们所能做的就是戳戳。

  缺乏可观察性是最近失败的一种模式。例如,在 1 月份,空中任务失败通知导致美国所有航空公司的航班停飞 20 小时,但没有人知道究竟出了什么问题。有了可观察性,故障只需几分钟到几分钟就能被隔离和发现。想象一下,如果商业航空停机一个小时或三十分钟。有几个人会迟到,但大部分行程都可以在空中补上。

  您愿意让您的网站停机半小时还是一天?这是你的选择。

        卓码软件测评是一家[ 具备CMA、CNAS双重资质 ]的专业做软件测试的第三方软件测试服务机构, 可根据您的需求提供各类软件测试服务,并出具合格有效的软件测试报告。点击→→可了解测试报价

        部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。负责人:曾菲       电话:4006070568


文章标签: 软件测试
咨询软件测试