暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【软件评测师】考点31——人工智能软件测试技术(新版+习题)

昊洋与你一起成长 2021-08-31
447

在最新版的软件评测师教程中,人工智能软件测试技术作为新技术进行了新增,在考试大纲中作为上午场考试的范围。为了应对今后的考试,我们把相应的知识点进行一个总结学习,并在文章末尾配备对应的习题。


一、人工智能的概念

(1)定义:是一种思维和响应方式与人的方式相似的自动化计算技术。

(2)分类:分为狭义人工智能和广义人工智能,目前广泛使用的主要是狭义人工智能,能够完成多种任务的通用人工智能系统还不多见。目前软件测试领域应用的还主要是狭义人工智能,广义人工智能在软件测试领域的运用是未来重要的发展方向。

狭义人工智能:描述或完成具体的任务,例如棋牌对弈、语言翻译、自动驾驶、图像识别等。

广义人工智能:能够完成多种工作,并能够根据推理在这些任务间切换。

(3)应用:虽然人工智能与高科技企业密切相关,但是实际上人工智能正在各行各业得到广泛应用,包括自然语言处理、虚拟现实、语言翻译、广告推送、人脸识别、X光医学影像判读、作曲、案情分析等,其中用于围棋比赛的阿尔法狗系统更是令人吃惊地屡次战胜世界顶尖围棋高手,标志着狭义人工智能已经达到很高水平。


二、人工智能对软件测试技术的影响

(1)测试工作前移:人工智能对软件测试的显著影响之一,就是使测试工作前移成为可能。传统实际测试工作通常在软件研发的后期,一般是在编码工作完成后才开始实施。这种滞后会带来很多问题。人工智能技术支持的基于模型测试,可以更好地在项目的软件需求分析阶段,甚至是系统设计阶段就可以开始建立面向测试的软件模型,并对模型进行测试,以尽早发现软件需求或体系结构方面的缺陷。

(2)自动化程度提高:人工智能技术引入各种测试和管理工具,给工具的自动化水平带来质的飞跃。

(3)测试更可靠:软件测试的可靠性,主要通过测试的充分性和有效性体现。智能自动化软件测试针对性更强,可以保证不同测试充分性准则得到满足。此外,软件测试输出数据的处理分析对于给出可靠的评价至关重要。模式识别、机器学习、数据挖掘等技术可以在统计学的基础上进一步提升测试结论的置信度,降低软件系统使用的风险。


三、人工智能会取代测试人员吗?

人工智能会快速取代很大一部分传统岗位。研究表明,传统类型工作时间中一半以上十年内可能被以人工智能为推手的自动化技术取代,而较高依赖个人技术和经验的工作类型被取代的比例相对很低。

(1)软件测试行业由于其工作类型的性质,不太可能被完全取代。

(2)软件测试中有关数据处理的工作, 未来会被取代。

(3)人工智能在软件测试中的应用还会催生出一些新的富有挑战的工作类型。

人工智能也在创造出新的工作岗位,包括人工智能技术的设计、销售、实现、程序设计和维护。而根据科技发展历史看,新技术的进步都会意味着产生的新兴岗位要多于取代的传统岗位。如果说人工智能将来会取代很多传统上主要由人工完成的软件测试工作,同时也必将在智能化软件测试方面创造出新的工作需求。


四、人工智能辅助测试技术

(1)基于约束的技术:人工智能用于自动化软件测试的一项重要突破,是基于约束技术。基于约束的软件测试技术最早于1991年提出,其基本思想是,将被测程序或其模型,以及测试准则或测试目标转换为约束,然后通过约束消解器消解约束,最终获得测试用例。

(2)启发式搜索算法:人工智能对软件测试的一个重要贡献,是解决软件测试数据的优化选择难题。其中应用最广的是遗传算法、蚂蚁算法和模拟退火算法。

遗传算法:是计算数学中用于解决最优化的一种搜索算法,这种算法借鉴了进化生物学中的一些现象,包括遗传、突变、自然选择以及杂交等,遵循适者生存、优胜劣汰的遗传原则。

蚂蚁算法:主要用于基于搜索的测试用例生成,特别是功能测试和基于UML的模型测试。

模拟退火算法:是基于蒙特卡洛迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。


五、机器学习在软件测试中的应用

与人类学习相似,对于机器学习来说,训练样本的规模和质量至关重要,因此必须精心完成大量的软件测试数据准备工作。机器学习在软件测试中的应用范围较广,主要讨论以下三个方面:

(1)软件测试设计推荐:在测试设计方面,机器学习可以分析挖掘以往的测试数据,发现软件需求、测试需求和测试设计之间的内在关系,通过比对不同测试方案的测试效果,特别是一些失败教训,以向测试人员提供找出更好的测试设计建议,避免重犯类似错误。

(2)使用模式识别:用户使用模式对于诸如图形用户界面测试策略的制定具有重要意义。结合图像和其他用户交互界面处理技术,机器学习可以采集、归纳、分析不同类型用户的使用模式,既可以自动生成和执行覆盖率更高的测试用例,也可以针对用户使用行为对软件质量,比如易用性、易学习性等进行评价。

(3)软件脆弱性测试:对于很多应用系统来说,软件的内部脆弱性是影响系统广泛部署的关键因素。机器学习可以静态分析代码,识别有可能造成软件进入危险状态的潜通路,为程序员改进设计提供依据。




基于以上的知识点,结合可能出现的题目考察形式,给大家出几道练习题加以巩固。

【习题1】以下属于人工智能应用领域的是(  )

①自然语言处理   

虚拟现实

语言翻译   

④广告推送  

人脸识别

X光医学影像判读

A、②③④

B、②③④⑤ 

C、②③⑤

D、②④⑤


解析:本题考查人工智能的应用领域。

①②③④⑤⑥都属于人工智能应用领域。

故正确答案为:B


【习题2】以下对于人工智能测试是否会取代测试人员的叙述中,不正确的是(  )。

A、人工智能会快速取代很大一部分传统岗位

B、软件测试中有关数据处理的工作,未来不会被取代

C、人工智能在软件测试中的应用还会催生出一些新的富有挑战的工作类型

D、软件测试行业由于其工作类型的性质,不太可能被完全取代


解析:本题考查对人工智能测试的认识。

对于软件测试所在的信息行业,最大量的工作是专业知识运用和人员交互,这两部分工作可被自动化的比率很低,而工作时间占比也很大的数据处理和数据采集,则有较高可能被人工智能自动化技术取代。

故正确答案为B



作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101

写于2021年8月31日

作者:昊洋讲师

版权所有,侵权必究


文章转载自昊洋与你一起成长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论