近年来,人工智能(AI)和机器学习(ML)技术正在蓬勃发展,诸如:自动驾驶汽车、机器人、以及Amazon的Alexa等应用,都深刻地影响和改变着我们的日常生活。当然,随着此类智能应用和设备使得我们的生活越来越轻松,大家对于软件产品的质量需求日益增长,并且对于产品缺陷的容忍度越来越低。一旦出现了功能或性能上的问题,用户会很快切换到市场上的同类替代产品中。因此,面对此类苛刻的要求,应用开发公司一方面不得不根据复杂的服务流程,不断迭代软件结构,一方面又要以更快的交付速度,推出高质量的软件。
对此,人工智能和机器学习正好能够发挥作用。它们能够以更快的速度、更好的质量、以及更高的效率,通过高度自动化的测试方式,为企业提供合适的端到端解决方案。据此,开发团队能够在有限的时间范围内,创建出专有的测试用例,以避免从头开始编写测试脚本,并能够涵盖尽可能多的关键性、高风险性的测试场景。可以说,使用AI和ML进行自动化测试的方式,正在逐渐成为整个开发和测试过程中,不可或缺的一部分。
下面,我将和您讨论通过使用由AI和ML带来的自动化智能测试技术,是如何解决传统测试中的痛点,并协助项目团队减少测试工作量,以及提高测试覆盖率的。
1.针对自动化测试的自愈(Self-Healing)技术
自动化测试自愈的流程图
自动化测试中的自愈技术,能够有效地解决测试脚本的维护问题。通过基于动态定位的策略,此类自动化脚本会在对象属性(包括名称、ID、CSS等)出现变化的每个阶段产生中断,以便程序能够自动检测到各种更改,并在无需人工干预的前提下,动态地修复它们。据此,项目团队能够在他们的敏捷测试中,利用左移的方法(shift-left approach),加快产品的交付速度,并提高生产率。
例如:开发人员在对HTML页面中的各种对象标识符进行更改时,AI将自动纠正测试用例中相应的UI标识符。也就是说,AI引擎会在属性发生变化时,及时找到此类元素,然后根据源代码中的更改情况,做出相应的修改。可以说,这种自愈技术,节省了开发人员花费在识别更改,并对UI做出相应变动的大量时间。
在具体应用中,基于AI的测试平台会按照端到端的处理流程,利用AI引擎发现那些由对象属性的变更所导致的测试项中断,进而凭借着自愈技术提取整个DOM,以深入研究各个属性。由于各项测试用例都是被自动化运行的,因此该过程无需任何人干预,便可使用动态定位策略,做出相应的更改。
2.自动生成测试脚本
自动生成测试脚本
过去,当我们需要开发自动化测试脚本时,往往需要开发人员具备Java、Python、Ruby等高级编程语言的相关技能。显然,这是一个既耗时又耗力的过程。如今,AI和ML技术,则能够大幅简化测试脚本的设计与开发全过程。
目前,市场上有许多此方面的测试工具,其中selenium是最常见的一款。用户既能够手动构建各种自动化的测试脚本,又可以通过平台去读取、并自动生成各种自动化的脚本。在实际应用中,它能够通过自带的各种AI算法,使用自然语言处理(NLP)技术,在完成了全面、良好的训练后,可以理解用户的意图,进而模仿Web应用的各种动作。值得一提的是,在整个操作过程中,用户无需亲自编写任何代码。有数据表明,该工具能够让常规测试脚本的设计时间和人员的工作量减少80%左右。套用当前流行的概念,此类自动化测试可被称为“非接触式测试(Touchless testing)”。
3.有效地利用大量测试数据
许多使用敏捷(Agile)和DevOps方法实施持续测试的组织,每天都会在其软件开发的生命周期中,多次采用端到端的严格测试方法,对其软件应用的单元、API、功能、可访问性、集成效果等其他方面予以测试。
而相对于上述测试内容的增加,待测数据在体量上的增多,则更让项目团队无法通过软件应用做出更好、更准确的决策。对此,机器学习却能够通过可视化那些极不稳定的测试用例,协助开发人员轻松地关注大数据对于软件关键功能与服务的影响。
在实际应用中,AI和ML系统能够轻松地对海量数据进行切片、切块和分析,为目标项目提供模型的解读、业务风险的量化、以及决策过程的提速。同时,开发人员还可以用AI和ML系统,来确定有待优先处理的持续集成作业,或是发现待测环境中目标平台的潜在错误,以及获得如下方面的“测试红利”:
- 测试影响分析
- 安全漏洞
- 平台的特有缺陷
- 测试环境的不稳定性
- 测试失败中的重复模式
- 应用组件的漏洞位置
4.使用自动化视觉验证工具,执行基于图像的测试
软件开发过程中的可视化测试(也称为用户界面测试),可以确保即将构建出的Web、或移动应用的UI,能够给用户带来流畅的体验。过去此类测试往往难以实现自动化,而需要人员进行繁琐的手动测试。如今,使用基于ML的视觉验证工具,使得测试人员可以识别出那些,过去在手动测试过程中容易遗漏的元素。实际上,在不少自动化网络社区中,大家正在流行着利用最新的机器学习技术,以及自动化视觉验证工具,执行基于图像的测试。
这种基于图像的测试,可以动态地改变软件公司在任何系统中,提供自动化测试服务的方式。据此,测试专家不必再将各项输入,隐式地插入目标系统中,而只需通过创建ML类测试,以自动化的方式,验证待测软件在显示效果(或称视觉)上的正确性,及时发现各种错误与不足。
5.利用AI进行爬取
如今,不少开发人员也会使用基于AI的自动化技术,采用爬取的方法,自动为应用程序编写测试用例。也就是说,一些新颖的AI/ML工具能够针对Web应用开启爬网功能。
在实际爬取过程中,此类工具首先会通过类似屏幕截图,为每个页面下载HTML代码,以及测量流量负载等方式,来收集数据,并且持续重复前面的步骤。接着,它们会基于收集到的数据构建出全量数据集,并根据待测应用的预期模式和行为,去训练出可供机器学习的模型。然后,此类工具将当前阶段观察到的模式与先前输入的模式进行比较。如果结果出现偏差,它们会将其作为测试中的错误予以标记。最后,由具有该领域知识的人员,对这些标记出的问题进行验证。可见,尽管ML工具主要负责错误的检测过程,但是人工核查仍然必不可少。
小结
目前,大多数公司都已将AL和ML之类的新技术,应用到了软件测试的自动化流程中。当然,您和您的测试团队,应当通过学习该领域的专业知识,了解如何将复杂的数据结构进行分解与分析,以增强针对测试的判断与决策能力,并提高项目的总体效率与服务水平。希望上述五点经验,能够更好地为您实现该目标。
原文标题:5 Great Ways To Achieve Complete Automation With AI and ML,作者:Mohit Shah