软件测试/人工智能|人工智能与自动化测试结合实战-探索人工智能在测试领域中的应用

简介: 软件测试/人工智能|人工智能与自动化测试结合实战-探索人工智能在测试领域中的应用

人工智能与测试结合现状

最近在各个行业技术会议上,出现了越来越多的人工智能与测试结合的topic。比如最近几个跟人工智能相关的内容。

议题 公司
基于AIGC的蚂蚁新一代测试用例自动生成技术 蚂蚁集团
百度单元测试智能生成实践 百度
基于代码地图的组件测试用例自动生成实践 华为
类chatGPT大语言模型在自动化测试的前沿应用与案例分享 腾讯
大模型助力智能单测生成 字节跳动
华为云基于失败率预测及优化算法的回归用例优选一精准测试实践 华为云

人工智能与测试的结合话题风头一度盖过了精准测试,无疑成为了2023年测试行业最亮的技术方向。为什么人工智能会突然爆火,又会给大家带来哪些价值呢?接下来给大家做个分析。

为什么人工智能与测试的结合话题开始火爆

image.png

第一个推动力是无疑是chatgpt,它从年初一直火爆到现在,大语言模型(LLM)给我们提供了一个非常强大的人机交互方式,让机器的语言理解能力追上了人类,它能相对准确的理解人类语言,并基于GPT的方式为用户提供准确的预测结果。他恐怖的一百层以上的神经网络具备千亿级别以上的参数,这意味着人类复杂的多语言体系他已经可以信手拈来了。这么复杂的人类语言可以掌握,那么作为编程语言更是不在话下,在chatgpt推出后,基于代码分析的codex项目也自然顺势推出。具备敏锐嗅觉的github很快与openai合作推出了IT届的王炸 GitHub Copilot,实现了文生代码、代码转换、代码补全等各种炸裂效果。随着文生文、文生图、文生视频、文生直播的火爆,不少客服、设计、文案被淘汰。有2家公司的人告诉我,因为使用了人工智能效率提升,公司裁掉了部分岗位的80%的人员,只留下少部分的设计专家与使用人工智能的人员。Openai的创始人也明确说明了,人工智能会显著地影响就业。基本上可以预见,一个会写代码的超级智能体将会诞生,帮我们实现比较大的效率提升,同时也会给测试与开发圈带来比较大的影响。

image.png

第二个推动力是测试生成技术的发展,测试技术的发展先后经历了测试用例数据驱动、测试用例自动生成等发展阶段。测试用例数据驱动使用yaml、json等数据化手段来实现自动化测试,比如国内李隆开源的httprunner,就是一个典型的数据驱动测试框架,用户使用数据驱动可以更简单更容易的维护测试体系,降低了使用成本,提高了测试效率,提高了测试的可维护性。测试用例自动生成技术则是通过转化其他的输入源比如har抓包数据、openapi接口规范、ui dom结构等数据到测试用例,实现测试用例的自动生成。测试用例的数据化与生成技术可以让测试人员扩大自己的能力边界,实现更全面的测试体系构建,它是测试智能化的一个重要的技术。

image.png

第三个推动力是模型驱动测试技术的崛起,模型驱动这个概念其实诞生很久了,但是因为本身需要一定的建模能力,无论是通过数学公式、有限状态机、或者有向图、知识图谱等技术,都是具备一定门槛的,所以模型驱动测试一直未在行业里得到大范围的推广。制约模型驱动测试的发展的另外一个因素是生态,行业里已经有一些模型驱动测试的工具了,比如graphwalker之类的,但是使用上不够简单,交流也少。一些bdd、atdd测试框架比如cucumber、RobotFramework等也想构建领域模型,只是没有完全做到,导致了行业里应用模型驱动测试比较难。

看似没有什么联系的三个方向在2023年突然就破局了。大语言模型LLM代表的是业务知识认知能力,测试用例生成技术是融合了测试设计与测试执行分析的关键测试落地技术,有了类似chatgpt这样的人类语言理解能力与代码理解能力,自然就可以去搞测试用例的生成,无论是手工测试,还是自动化测试。所以第一个爆发点就是测试用例的理解与生成。

领域模型与模型驱动

image.png

但是如果事情就这么简单,就不会有我提到的第三个推动力了。直接使用大语言模型去生成测试用例,是可以做到,但是不够完备。它无法严密的按照测试领域的规则去生成我们想要的内容,只能生成demo级别的场景,之所以如此,第一个原因是因为大语言模型缺乏测试专业的完整训练,第二个是缺乏合适的提示词引导。缺乏测试领域完整训练这个瓶颈需要通过提供足够的业务和领域资料进行微调(Fine-tuning),涉及到安全性和隐私问题,自然离不开本地的大语言模型部署,第二个瓶颈的解决则需要靠不断优化提示词工程技巧,这是个长期的过程。如果坚持从业务文档直接生成测试用例这个方向,无疑会是一个投入产出比例不确定的大坑。那如何解决这个问题呢?正好就是我提到的第三个推动力模型驱动测试方向。

大语言模型本身的输出是片段的,无法很好的生成测试体系完整结构,所以他是适合补充和完善细节。测试用例又是一个严谨的工程,两者直接转化的效果是不会太好的。这个时候我们就可以加入一个中间层。让大语言模型帮我们生成可以解释的中间结构体,然后我们通过中间结构体就可以很好的实现测试用例的生成与推理了。这层中间结构要易于维护、易于理解、支持增量更新不断完善,同时要具备可编程、可推理。能满足这些特点的技术,其实就是我前面提到的模型驱动测试。正确的做法是先由大语言模型生成领域模型,再根据领域模型生成可执行的测试用例。有了这层中间模型,很多之前无法很好实现的事情就可以落地了。

而领域模型的构建方式,比较常用的办法就是知识图谱。

人工智能会如何影响软件测试

image.png

手工测试用例生成,以前我们通过excel、思维导图、jira、禅道等工具管理测试用例,这种方式其实都是有问题的。手工测试虽然看起来简单,但是它仍然是一个严谨的工程师,登录帐号、测试数据与后续的测试用例存在逻辑关联,这些关联通常会散乱的管理,excel与jira、禅道等工具本质是通过简单的一维列表的方式管理的,具备一点点的层次结构展现而已。手工测试的用例维护问题是很多公司比较头痛的问题,我之前接到过多家银行的咨询请求,其中一个比较集中的问题就是手工测试用例的复用、继承、重载问题。如果手工测试用例没有很好的维护方式,到了一定规模就很难维护,就成了面子工程。这类问题的解决方案首先是要使用一个优秀的用例框架,用于构建用例模型,思维导图是早期大家用的一个方式,方向是靠谱的,只是形式不太合适,使用模型驱动+数据驱动的方式,就可以很好的维护了。手工测试用例中业务模型的生成,就可以利用大语言模型生成了。把推理和路径分析交给业务模型去完善。

image.png

image.png

自动化测试用例生成,跟手工测试用例生成是类似的过程,区别在于手工测试用例是由领域模型结合人类语言规则生成,而自动化用例是领域模型结合自动化领域的模型进行生成。自动化测试依赖更细节的接口与UI的定义,所以除了领域模型,我们还得提供更多UI设计与接口设计的素材才能生成。除了前置的测试用例生成,基于实时上下文的测试用例生成或者遍历测试也会有很大的发展。之前思寒开源的appcrawler、字节跳动开源的fastbot都对行业里带来了比较大的反响,它们本身就是模型驱动测试的一个特例,随着智能化的发展,这些工具会有更大的发展。

image.png

视觉自动化测试,大模型一定程度上快颠覆cv领域了,过去一些视觉自动化技术依赖于截图与sift等相关算法,或者使用侵入式的SDK,这种方式的用例要不就是不易于维护,要不就是不通用。基于深度学习框架可以解决基本的视觉分析与物体探测,可以做到更通用,但是依赖训练数据。而多模态的大语言模型则是彻底解决了这个问题,可以让视觉自动化测试的技术更成熟更通用,是一个非常有利的补充。

image.png

缺陷预测,在产品中我们是根据自己的业务经验发现缺陷的,有些有规律的缺陷也会被定义成更严谨的代码规则,然后通过编程或者数据的方式进行记录和检测,比如测试左移中会通过sonarqube平台的规则,并结合findbugs的规则,以及pmd的基于xpath的语法树扫描规则进行分析。自动化测试和手工测试依赖测试执行的上下文数据进行判断,基于断言、新老版本diff测试、行业经验等手段验证。无论是各类的文档规格要求、设计素材,研发写的代码语法树,还是bug规则、领域知识,大模型都可以进行分析和分类判断。

image.png

精准测试的发展,过去精准测试关注代码与测试用例的关联,这种关联使用了基本的知识图谱理论中的图数据库可以很好的解决。但是其中的测试用例也存在变更,导致关联关系断掉。现在有了业务模型,大模型会帮我们把需求关联到业务模型,业务模型再生成测试用例,测试用例关联手工测试用例与自动化测试用例,再关联到覆盖代码。我们就可以建立领域模型到所有测试关键因素的关联关系,甚至包括执行上下文等。这将对精准测试、diff测试、bug原因定位带来比较大的变化。不仅可以从代码中反推测试用例,还能反推出关联需求与引导定向测试用例生成,这无疑是精准测试能力的进一步提升。

展望未来

虽然人工智能对我们的工作与生活带来了很多的冲击,但是对于开发与测试方向的影响,我是持乐观的态度。与在其他行业的摧枯拉朽式的生产力革命不同,人工智能对测试与开发的影响,会稍微小一些。因为研发与测试本身具备复杂的领域知识与技术支持,人工智能一时仍然难以取代,更多是辅助提升。效率的提升并不会引发企业降本的想法,积极的使用人工智能并结合一定规模的团队,反而是可以帮助企业获得更大的竞争优势。人力密集型的岗位会被重塑,但是技术密集型的岗位会获得更大的发展。而且相对于领域宽泛的测试方向,特定领域的开发被人工智能取代的可能性更大,人工智能生成的产品也许不需要开发,但是会需要测试完成功能测试、性能测试、安全测试、用户体验测试、合规测试等工作

鉴于人工智能对社会的影响如此之大,我们还是要谨慎的面对未来不确定的各种变化,并提前布局。说个大家都听过的故事,两个人在山里走惊动了一只熊,一个人拼命跑,另外一个人站在原地说:“跑有什么用,你跑得过熊吗?”,跑的那个人一边跑一边说:“我只要跑得比你快就行。如果人工智能是那只熊,我们就得提前准备健身了。

我给大家推荐几个技术方向,让大家可以提前布局,迎接人工智能给我们带来的变化。

  • 大模型提示词工程,让你做事可以实现事半功倍,比别人跑的更快
  • 大模型私有部署与微调技术,帮担心涉密的企业落地人工智能,让你得到晋升机会
  • 领域建模与知识图谱能力,让你具备分析任何复杂领域快速学习的能力
  • 测试用例自动生成能力,让你具备领先的自动化测试能力,扎实维护好测试体系
  • 缺陷预测能力,扩大你的能力与影响力,成为质量保障里的顶梁柱
相关文章
|
7天前
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在医疗诊断中的应用
【4月更文挑战第20天】 随着人工智能技术的迅猛发展,其在医疗领域的应用日益广泛,特别是在疾病的早期诊断和治疗方案的制定上。本文将深入探讨人工智能如何通过机器学习和深度学习技术辅助医生进行更精准的诊断,同时分析其面临的挑战和潜在的伦理问题,并展望人工智能在未来医疗健康领域的发展可能。
|
1天前
|
人工智能 自然语言处理 搜索推荐
【AIGC】人工智能在教育领域的场景应用
【4月更文挑战第10天】人工智能对教育领域的发展有哪些应用及影像
|
3天前
|
Java 测试技术 持续交付
深入理解与应用Selenium WebDriver进行自动化测试
【4月更文挑战第25天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速市场发布的关键步骤。Selenium WebDriver作为业界广泛采用的自动化测试工具之一,提供了一种灵活且高效的方式来模拟用户与Web应用程序交互。本文将探讨Selenium WebDriver的核心概念、架构以及实际应用中的技巧和最佳实践。通过深入分析其工作原理及常见问题解决方案,旨在帮助测试工程师提升测试效率,确保测试结果的准确性和可靠性。
|
3天前
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在医疗诊断中的应用
【4月更文挑战第24天】 随着技术的迅猛发展,人工智能(AI)在医疗领域的应用正逐步成为现实。本文将深入探讨AI技术在医疗诊断中的实际应用,包括图像识别、疾病预测和个性化治疗方案推荐等方面。通过分析具体案例,我们展示了AI如何提高诊断的准确性和效率,同时讨论了实施过程中的挑战与未来的发展前景。
|
4天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
12 2
|
9天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用
【4月更文挑战第18天】 随着人工智能技术的迅猛发展,其在医疗领域的应用日益广泛,尤其是在疾病诊断方面。本文旨在探讨人工智能技术如何辅助医生进行更准确的诊断,并分析其对未来医疗行业可能产生的深远影响。通过实例分析与最新研究成果的结合,揭示了AI在处理复杂数据、图像识别及预测模型构建方面的潜力。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在当代社会中的应用与未来发展趋势 摘要:
人工智能(AI)作为一种新兴技术,在当代社会中扮演着越来越重要的角色。本文将探讨人工智能的基本概念、当前在各个领域的应用情况以及未来的发展趋势。首先,我们将介绍人工智能的定义和分类,然后详细讨论人工智能在医疗、金融、制造业、交通、教育等领域的应用案例。接着,我们将分析人工智能发展面临的挑战,包括数据隐私、伦理道德等问题,并探讨如何解决这些问题以推动人工智能的发展。最后,我们将展望人工智能的未来发展趋势,包括深度学习、自然语言处理、机器人技术等方面的进展,以及人工智能对社会和经济的影响。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:人工智能在创造性问题解决中的应用
【4月更文挑战第14天】 随着人工智能(AI)技术的不断进步,其在模仿和增强人类创造力方面的潜力正逐渐被挖掘。本文章探讨了AI如何通过机器学习、深度学习和自然语言处理等技术,在音乐创作、艺术设计和复杂问题求解等领域中展现出其独特的创新能力。我们分析了当前AI在创造性任务中所采用的方法,并讨论了这些技术如何推动新领域的发展,同时指出了目前存在的挑战和未来的发展方向。
|
15天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用及挑战
【4月更文挑战第13天】 随着人工智能技术的迅猛发展,其在医疗领域的应用已成为推动健康科技革新的关键力量。本文旨在深入剖析AI技术在医疗诊断中的实际应用案例,探讨其提升诊疗效率、准确性的潜力,并针对当前面临的数据隐私、算法透明度、以及跨学科合作等挑战进行详细讨论。通过分析现实案例和最新研究成果,本文揭示了AI在辅助诊断、影像学、基因组学等方面的进步,同时指出了实现全面临床应用所需的关键步骤和政策建议。
20 1
|
15天前
|
人工智能 自然语言处理 搜索推荐

热门文章

最新文章