在测试自动化中使用数据、分析和机器学习的3种方法
更好的测试意味着更好的软件,使用NLP、测试数据生成和优化测试可以快速改善应用程序。
就在10年前,大多数应用开发测试策略都集中在验证业务逻辑的单元测试、认证用户体验的手动测试案例以及确认性能和可扩展性的独立负载测试脚本。与今天建立在云基础设施、微服务架构、持续集成和持续交付(CI/CD)自动化和持续测试能力上的开发能力相比,功能的开发和发布相对缓慢。
此外,今天许多应用程序是通过配置软件即服务(SaaS)或构建低代码和无代码应用程序来开发的,这些应用程序也需要测试底层业务流和流程。
devops组织中的敏捷开发团队旨在减少功能周期时间,提高交付频率,并确保高质量的用户体验。问题是,他们如何才能在不产生新的测试复杂性、部署瓶颈、安全漏洞或大幅增加成本的情况下,减少风险和转移测试?
Copado的产品线经理Esko Hannula向我介绍了最近对Qentinel的收购以及devops组织面临的测试挑战。他认为机器学习是处理不断增加的测试量的关键。"数字业务的质量是运行它的代码和测试的质量。要测试的代码越多,将机器学习与测试自动化结合就越重要。QA人员和机器智能可以相互支持,根据数据而不是单纯的直觉做出明智的决定。"
我最近写了一篇关于在构建微服务或与许多第三方API对接时,使用服务虚拟化来开发更强大的网络服务测试。然后我又进一步研究了基于数据、分析和机器学习的测试能力,开发团队和QA测试自动化工程师可以利用这些能力来开发和支持更强大的测试。
这些能力正在出现,一些测试平台今天提供了强大的功能,而其他平台还处于早期采用阶段。开发团队应该研究和计划这些测试功能,因为它们都将成为主流能力。
使用自然语言处理生成测试
在过去的十年中,测试质量有了很大的提高,因为QA平台分析了网页的文档对象模型(DOM),利用计算机视觉来检测用户界面的变化,并利用光学字符识别来提取文本元素。但开发测试往往需要测试工程师手动点击用户界面,在表格中输入数据,并在QA平台记录测试案例时浏览工作流程。
一种新兴的方法是使用自然语言处理(NLP)来记录测试案例。Sauce Labs最近收购了AutonomIQ,这个工具使用户能够用自然语言描述测试步骤,然后他们的软件自动创建测试案例。
Sauce Labs的CTO John Kelly描述了为什么这种能力很重要,因为越来越多的组织开发客户关系管理定制、业务流程管理工作流程和低代码应用程序。他从商业角度描述了这种经验:"我有内部业务流程,主题专家可以用自然语言描述,然后NLP机器学习可以将其转换为测试案例,可以根据需要经常运行。然后,我可以向外部审计人员证明控制措施得到了正确的遵循。因此,创建测试案例的无代码方法是记录和验证业务流程的一种新兴方式"。
用合成测试数据生成扩展测试
一旦QA工程师捕捉到测试用例,下一个任务就是生成足够的测试数据来验证基础业务规则和边界条件。测试数据的生成对于开放式的体验来说特别具有挑战性,如搜索引擎、复杂的多字段表单、文件上传,以及对个人身份信息或其他敏感数据的测试。
来自Curiosity Software、Datprof、Delphix、GenRocket、Torana(iCEDQ)、K2View等公司的工具为不同的应用和数据流提供测试数据自动化功能,包括功能测试、API测试、dataops、数据湖和商业智能。
优化持续测试实践
一些平台希望帮助敏捷开发团队和QA自动化工程师优化其测试实践。
失败分析帮助开发团队研究测试失败时的根本原因。Kelly描述了这个挑战:"你有一千个selenium测试,全部运行,得到300次失败。团队不知道是API坏了还是其他原因,也不知道这个问题是否会在生产中发生,要知道测试环境并不能完全反映它。他们对测试失败的根本原因感兴趣。我们的模型与失败的测试相伴,并报告哪些测试与同一问题有关"。
另一个挑战是优化测试套件,并根据一个版本的代码变化来确定运行哪些测试。测试团队可以启发式地设计一个 "烟雾测试",一个围绕基本应用功能和流程的回归测试。但对于实施持续测试的开发团队来说,有机会将测试、代码变更和生产系统之间的数据连接起来,并应用机器学习来选择运行哪些测试。优化构建中的测试是那些在关键任务应用程序上频繁发布代码的开发团队非常需要的能力。
针对这一挑战的一个解决方案是YourBase,它创建了一个依赖性图,将测试用例与它们的代码路径进行映射。当开发人员改变代码时,该工具使用依赖性图来优化需要运行的测试案例。YourBase的首席执行官Yves Junqueira告诉我,"我们看到一些公司有几万甚至几十万个测试。他们希望改善将代码投入生产的准备时间,提高开发人员的生产力。这些团队必须做出明智的决定,哪些测试对他们的变化是真正必要的,并希望更好地了解测试失败的情况。"
第三种方法在测试环境之外运作,帮助设备工程师和软件开发人员追踪生产错误、异常和关键事件。Backtrace提供了这种能力。开发团队使用其汇总的错误报告和重复数据分析,快速发现并解决游戏、移动或其他嵌入式应用中的问题。
开发组织的关键是认识到,推动更多关键任务应用程序的频繁发布,需要同时努力提高测试的自动化、稳健性和智能化。AIops平台通过集中运营数据和启用机器学习功能,帮助IT服务管理团队支持微服务和复杂的应用依赖性。以类似的方式,QA平台旨在为敏捷开发团队提供自动化、分析、NLP和机器学习能力,以改善测试。