近年来,我一直关注 AI 相关的测试,并积极参与多个全国性测试社区和社群。在这些社区中,我与不同公司和领域的测试专家交流探讨 AI 测试相关话题,包括业界顶尖公司的专家和国内知名测试学者。我也参加了多个大会,聆听了许多关于 AI 测试的主题分享,并尝试了多款 AI 相关的测试工具,从中获得了许多知识和感悟。
在这些测试社区和社群中,我遇到了许多关于 AI 测试的问题,例如什么是 AI 测试,如何进行 AI 测试,AI 测试有哪些工具与方法等。然而,当我在网上搜索 AI 测试相关的书籍时,却发现大量的 AI 开发相关书籍,却鲜有专门介绍 AI 测试的书籍。这说明测试业界仍在混沌中不断摸索前进。
为了分享我所学到的 AI 测试相关知识和经验,我梳理了自己的学习经历,尝试回答了一些我遇到的关于 AI 测试的常见问题,并将这些内容整理成文章,与大家一起交流探讨。
AI 测试的迷思
在讨论 AI 测试时,通常存在两种理解:
第一种是利用 AI 辅助当前的软件测试,例如使用 AI 系统学习测试分析和测试设计,进而自动生成测试用例并自动化实现这些测试用例。
第二种则是对 AI 系统进行测试。尽管业界对于 AI 系统进行测试仍然使用常规测试手段,如功能测试、性能测试和安全测试等,但测试其功能有效性时往往难以获取明确的测试数据和验收条件。这种情况下,只能通过对算法的深入理解和根据经验生成或寻找数据,并大致评估功能测试结果的有效性来进行测试。
而利用 AI 辅助当前的自动化测试则是一个新兴领域。使用 AI(如深度学习)系统来帮助测试工作绝对是近几年最热门的测试趋势之一,其中包括自动生成并执行自动化测试、大规模测试结果分析、自动化探索性测试、缺陷定位等。
美国已经有多家公司推出了商用的 AI 测试工具。在朱少民老师的公众号“软件质量报道”中,有一篇名为《未来已来,人工智能测试势不可挡:介绍 9 款 AI 测试工具》的文章,介绍了 9 款基于 AI 的测试工具。但这些 AI 测试工具普遍存在测试用例准确性和大规模测试用例可维护性等问题。
第一个问题:AI 辅助测试真的能用吗?
虽然许多公司已经开始研究 AI 辅助测试,并有许多工具问世,但它们都有一个显著问题:准确性。由于现有的 AI 学习算法本身的限制,学习并生成的测试用例和验证条件的准确率都不是非常高。我曾参加过几个大会,其中一些中国一线互联网厂商分享的 AI 辅助测试的准确率仅略高于 80%,不到 90%。这种准确率在金融等某些对精度要求高的系统中很难得到认可。
其次,当自动化测试用例规模很大时,测试用例的维护工作很难依靠人工完成,只能依靠工具。由于 AI 测试工具的不准确性,导致维护工作的准确性也不是十分理想。
尽管如此,在质量要求不高的大型系统中,AI 辅助测试可以极大地降低测试成本,因此在这些系统中,AI 辅助自动化测试已经得到应用。此外,在质量要求高并且资源充足的项目中,AI 辅助测试可以作为人工自动化测试的扩展,作为自动化探索性测试的一种工具,可以进一步保证软件质量。
第二个问题:AI 辅助测试已经发展到什么程度了?
目前,AI 辅助测试仍处于初级阶段。我将 AI 辅助测试分为三个阶段:
第一阶段是通过深度学习模型自动产生测试用例的输入,然后通过人工验证输出结果的正确性。
第二阶段是通过深度学习模型自动产生测试用例的输入,并通过规则模型自动验证输出结果的正确性。
第三阶段是通过深度学习模型自动产生测试用例的输入和输出,并自动验证输出结果的正确性。
目前业界已经基本实现了第一阶段,有一些公司也已经开始实现第二阶段。然而,只有极少数的大公司已经实现了第三阶段,并且这些公司的准确性还有待提高。因此,AI 辅助测试仍有很长的路要走。
第三个问题:哪些软件系统能用 AI 辅助测试?
理论上,任何软件系统都可以使用 AI 来辅助自动化测试工作。然而,由于目前 AI 测试系统的现状,它还不能真正用于所有类型的软件系统。许多实际项目只在某些特定系统的特定接口层上使用 AI 测试,例如 Web Service API 等。
在不同行业领域中,AI 测试的使用情况也不同。例如,在金融和军工等对质量要求很高的行业中,AI 测试目前只能作为当前已有功能自动化测试的扩展部分。而在互联网等质量要求不高的行业中,一些技术能力强的公司已经将 AI 测试作为主要的自动化测试方式之一。不过,AI 辅助自动化测试无疑是自动化测试的未来!
总结
通过上面对于问题的回答,希望能解决大家对于 AI 测试的困惑,包括了解什么是 AI 测试,自己的项目是否适合使用 AI 测试,以及未来是否需要在 AI 测试上投资等问题。
综上所述,AI 测试目前仍处于发展初期,因此不适合大规模使用,只有在特定项目中才可以考虑使用。无论是使用 AI 还是人工方式实施自动化测试,核心都是测试的有效性和测试结果的准确性,以及测试用例的可维护性。这些是大规模自动化测试成功与否的关键因素。
因此,无论是 AI 自动测试还是人工自动测试,其核心本质都是一样的:靠知识学习、分析、总结等一系列人的思维来解决测试分析、测试设计和自动化测试实现的工作。但目前 AI 系统本身的发展还不足以很好地替代人在测试分析和测试设计方面的工作,导致 AI 实现的自动化测试的准确性以及可维护性比人工方式更差。不过,AI 测试在时间和成本方面有明显的优势,这也是其越来越受欢迎的原因。
因此,在测试领域,AI 需要更加努力才能真正替代人的工作。在考虑使用 AI 测试之前,应该仔细评估项目的特定需求和条件,以确定是否适合使用 AI 测试。未来,随着 AI 技术的不断发展和完善,AI 测试将成为自动化测试的重要趋势,而投资于 AI 测试的相关技术和人才也将是一个明智的选择。