• 0
  • 0
分享
  • 人工智能时代的软件测试
  • 恬恬圈 2019-10-17 10:50:55 字数 2581 阅读 1952 收藏 0

1.人工智能与机器学习

人工智能(AI, Artificial Intelligence)与机器学习(ML, Machine Learning)是时下最火热的技术方向之一。准确地讲,人工智能不等同于机器学习,机器学习只是人工智能的一个子集。由于媒体的误用,本文遵循媒体的叫法,文中提到的人工智能,一般泛指机器学习。

人工智能,顾名思义,就是希望创造出拥有像人类那样智能的机器,这是人类的终极梦想之一。该词早在1956年就提出了,当时的科学家曾乐观地估计,二十年左右人类就可以将其实现。然而科学家也很快就发现其难度远大于预估。在此之后的很长一段时间里,人工智能的研究陷入低谷。

通常我们将人工智能分为弱人工智能和强人工智能,前者只专注于完成某个特定的任务,例如2016年战胜围棋世界冠军李世石的Alpha Go,而强人工智能,目前只存在于科幻电影之中。虽然强人工智能仍然道路漫长,但是弱人工智能却有希望取得突破,至少从表现行为来看,它已经拥有了一些"智能"。那么它是如何实现的呢?这主要归功于一种实现人工智能的方法--机器学习。

说到机器学习,我们先来回顾一下计算机程序解决问题的传统模式:根据一套确定的规则编写出计算机程序,接受收入然后获得输出:

1.png 

图1 - [1]

然而现实中,有很多问题无法用确定的规则来定义算法,例如把手写的数字图片用计算机程序识别出来。因为每个人写的都不一样。但是,假如我们有大量的手写数字图片和实际结果数据的话,就可以通过这些数据的学习(训练),使得计算机程序能够自己找到其内在的方法,就好像是计算机程序学习了知识经验一样。这样,下次再遇到手写数字的时候,计算机程序就能够自动识别了。这个过程就是机器学习。其解决问题的模式如下:

2.png

图2 - [2]

机器学习的关键点在是找到训练模型,利用大量的数据进行训练,获得最优模型,以用于对未来的问题进行预测与解决。机器学习当前在很多领域都有了迅速的发展,也有人将其引入软件测试领域。


2.软件测试

软件测试的目的是为了发现软件工程中存在的bug,从而提高软件的质量。

早期软件的规模小,复杂度低,那个时候基本没有什么软件测试,软件测试基本等同于开发人员的软件调试。随着软件规模的扩大和软件复杂度的提升,软件测试变得越来越重要,软件项目中也有了测试人员。

软件测试发展到如今,基本可以分成两类:

手工测试:

通过手工方式完成软件的测试。这种方式费时费力,重复性的工作让测试人员身心倍感疲倦。但是目前来讲,软件测试还不能完全杜绝手工测试,其原因主要在于有些手工测试转换成自动化测试难度太大或者成本太高。

自动化测试:

借助自动化测试工具或者测试人员自己编写测试脚本完成软件的测试。自动化测试极大的提高了软件测试的效率,减轻了测试人员的负担。理论上来说,重复性的测试工作都应该做到自动化。在有些人力资源不充足的团队当中,开发人员本身就要负责单元测试(UT)的开发,这虽然违背软件测试的某些原则,但是却能实实在在地提高软件开发的质量。

不管哪种测试,软件测试的根本是利用预测的结果和实际测试时的结果进行比较来完成测试功能,所以软件测试用例的预期结果在测试前就确定了。

随着软件规模的扩大,这种传统的测试方法越来越难以应对日益增长的测试对测试人员的挑战。

3.png

图3- [3]

如上图所示,随着软件开发时间的增长,功能点可能会按指数级增长,因为新的功能和状态与现有的功能进行交互,而测试却只能一次增加一个,只能线性增长,这中间存在测试无法覆盖的空白。同时,因为确定的测试预期结果,当软件功能发生变化的时候,测试用例也得做出修改,维护自动化测试用例也是软件测试隐藏的成本。


3.人工智能可能将给软件测试带来哪些变化?

人工智能时代,软件测试可能会发生巨大变化。

首先,测试变得更简单了。机器学习擅长的就是通过数据训练来完成新的情形的处理,这意味着测试人员将不需要再大量手工编写自动化测试用例和执行测试,而是利用AI自动创建测试用例并执行!

测试人员的主要工作不再是执行测试,甚至也不是设计自动化测试用例,而是提供输入输出数据来训练AI,最终可以让AI自动生成测试用例并执行。对于某些通用测试,只需要一个被验证过的模型,甚至连数据也无需提供。

这种能够自动生成测试用例的系统叫bot,可以一次生成大量的组合测试用例,有效解决功能点和测试点的覆盖空白问题。大约80%的测试工作到时候将由bot自动完成,而测试人员的主要精力将会被解放出来以放在更有创造性和探索性的测试任务上。

这不是幻想,而是已经变为现实,比如Appdiff是一个基于AI的移动app 自动化测试平台,能够完成一个典型移动app 90%的界面测试,而且它比人手工测试做得更好。

其次,AI bot可以发现更多的软件bug。AI bot一边测试一边时刻不停地新增数据输入,测试能力会越来越好,因而能够发现更多的bug。与此同时,对于迭代频繁的软件开发而言,当一个regression bug发现后,测试人员常常需要确定这个bug是什么时候引入的,这往往需要耗费大量的精力和时间,而AI bot能够持续地跟踪软件开发过程,找出其中bug被引入的时间,从而为开发人员提供有效信息。

最后,基于AI的测试也会让测试人员感到困惑。测试人员可能会怀疑AI测试的有效性,要消除这种不信任,测试人员需要掌握不同于传统测试人员所需的技能,他们需要更多聚焦在数据科学技能上,还需要了解一些机器学习的原理。

说到这里,也许有人会问,测试人员的工作会被AI抢走吗?

笔者总觉得答案是,也不是。说是,因为AI bot比较适合那些重复性较强的测试任务,如果测试人员的工作内容重复性较高,无创造性,那么迟早会被AI取代。然而对于那些需要一些创造性和比较困难的测试任务,AI目前还无能为力。

"AI is the new electricity",这是Stanford教授Andrew.Ng对于AI的一个很好的观点,对于软件测试来说,AI是一个工具,一个聪明的助手。而对于测试人员来说,需要拥抱变化,提升能力,这样才能更好地利用AI带来的能量!


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在日常工作的摸索中,我将如何做好app的测试简单归结为如下内容。(1)功能测试每项开发的新功能都需要进行测试。app测试中功能测试是一个重要方面。测试人员应该要进行手动测试和后期的自动化测试维护。刚开始测试时,测试员必须把app当做"黑盒"一样进行手动测试,看看提供的功能是否正确并如设计的一样正常运作。除了经典软件测试,像点击按钮、提交订单看看会发生什么,测试员还必须执行更多功能的app测试。除了整个手动测试过程,测试自动化对移动app也很重要。每个代码变化或新功能都可能影响现存功能及它们的状态。通常手动回归测试时间不够,所以测试员不得不找一个工具去进行自动化回归测试。现在...
            0 0 1613
            分享
          •        在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/4G/5G/WiFi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。目前移动端产品的使用用户所处的网络并非完全流畅的网络环境,因移动端产品使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。毕竟考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验。本文就和大家分享一下如何上手弱网测试,弱网测试工具的使用。1. 什么是弱网测试?       弱网测试作为健壮性测试的重要...
            12 12 3050
            分享
          •   冒烟测试,刚进公司就接触到了。只是刚开始一直没有体会到冒烟的含义和精髓,一直以为是冒烟测试就是把待测产品的主要功能测试一下就行了。后面回想一下,不是那么回事的。  冒烟测试源自硬件行业,对一个硬件或者硬件组件改动后,直接给设备加电,看看设备会不会冒烟,没冒烟,就表示待测组件是通过了测试。  在软件开发过程中,一直有高内聚,低耦合这样的说法,各个功能模块之间的耦合还是存在的,因此一个功能的改动,还是会影响到其他功能模块。  因此在开发人员修复了先前测试中发现的bug后,想知道这个bug的修复是否会影响到其他功能模块,需要做的就是冒烟测试。  搞清楚冒烟测试的起源,冒烟测试的目的后,不难想到,...
            0 0 2461
            分享
          • 大家好,今天我们一起来学习一下在手机App测试中我们需要关注那些测试点,拿到一款app如何进行测试。一、首先我们拿到一个app的apk包 或者是在testflight下载的app安装包,需要进行安装测试1.软件安装前:空间不足是否有相应的提示;2.软件安装中:安装过程中是否可以取消、暂停;安装是否可以正常进行;安装空间不足是否给予提示;3.软件安装后:是否可以卸载应用,通过桌面卸载或者通过软件设置卸载;卸载是否支持取消功能,取消后是否影响软件的正常卸载;安装完成后是否自动删除安装包;重复安装提示版本已存在、或者是直接覆盖安装,但是能正常使用。二、安装后的app 需要随着迭代版本的更新需要进行升...
            0 0 979
            分享
          •   早些时候,苹果公司被爆阻止了一款使用ChatGPT功能的电邮APP更新,一度在业内引发了不小的争议。而在当地时间周五(3月3日),这一事件有了最新进展,在开发商保证该APP具有内容过滤功能后,这款应用已被允许更新。  此次争议事件的主角是开发商Blix Inc.旗下的电邮应用BlueMail。  BlueMail的新人工智能功能使用的是OpenAI最新的ChatGPT聊天机器人(10.660, 0.00, 0.00%),ChatGPT能让用户与人工智能进行拟人化的交谈,并就各种主题进行高级长篇写作。而BlueMail在内嵌ChatGPT功能后,将可以利用以前的电子邮件和...
            0 0 689
            分享
      • 51testing软件测试圈微信