软件智能自动化测试

        对于软件工程有所认知的人都会知道,手动测试是无法取代自动化测试的。但是我觉得,在将来,自动化测试是完全可以取代手工测试的。( o )!?

        在大家喷我之前,我想说,我说的情况是在足够远的未来发生的。虽然机器和软件是由人创造出来的,但是他们的智力上的能力不一定比人低。由于计算和存储上的巨大优势,软件已经在一些方面超越了人类的能力,比如一些棋类。像深蓝什么的牛逼软件不说,我本人就曾经拿着一个很厉害的五子棋软件虐遍QQ游戏大厅上的高手们。我也曾经参加过微软的一个编程之美比赛,编写一个战舰游戏中的AI。我当时精确定义了我方舰队的行为,精确到血量多少的时候需要冲锋,血量多少后撤,遇敌时根据距离和位置选择战术等等。到了后来,自以为操作还不错的我,自己也已经无法战胜我写的AI了。

        所以凭借着强悍的处理能力和恐怖的存储能力,计算机VS人脑在某些方面的优势还是很明显的。不过在很多方面,人类还是强于电脑。为什么呢,因为现今的软件中,AI的学习能力和创新能力还有待提高。虽然有着神经网络和启发算法等一些列算法,但是还远远不够。不过就是在现在,我们也完全可以运用现有的人工智能技术让我们的测试更“聪明”。

        现在,我准备引入一个差不多自创的名词,软件智能自动化测试。什么是软件智能自动化测试呢,就是让测试像人一样去测试,去发现bug

        那么怎么样能给我们的测试赋予人一般的智能呢?

        1、人具有变化性,让自动化测试更具有判断性与场景处理

       自动化测试一直不被用来提倡发现问题的最大原因在于他是将测试用例固化实现,只关注期望关注的,那为什么手工测试会比较容易发现问题,可以对以下场景进行想象:

       1 手工测试遇到问题时,往往为了验证此问题,会进行一系列相关的操作,而根据测试中的一项现象就是:基于80/20原则的缺陷集群性,即版本发布前进行测试所发现的大部分缺陷是由于少数软件模块引起的,也许这样测试人员在验证过程往往容易发现更多的问题。而这种方式的话,首先,基于功能点进行关键字驱动封装,并且指定其关键字验证错误时,它的走向如何,即需要去调用哪些操作去验证功能,或者调用另外的关键字功能封装进行验证,这样一层一层套一层,直到某个关键字的验证完全通过为止或者开设另外一个线程规定和监测搜索的期限,否则容易造成搜索无止境。这种机制是为了对与之验证功能点相关的功能点进行探索,发现更多的发现问题。需要注意的是:这种机制是建立在关键字测试驱动框架上,而且调用的关键字注意的是在保证验证后恢复到调用前的初始环境,另外这种机制与程序异常机制还不一样的,异常机制是程序运行时候程序抛出的异常,当遇到异常时,测试脚本无法进行下去,则会基于异常跳转到异常处理部分,一般会是清除测试环境,由框架转到另外一个测试用例。

        2 探索性测试,在写这篇文章的时候,突然简单的浏览分析了一下探索性测试的相关书籍,突然发现,探索性测试就是一种强调以人为主观的测试,但是却又基于一定的规则,具体实施可以围绕SMART规则,测试目标、指标评估、可实现性、当前语境的切换以及合理可接受的时间限度。而探索性测试,按我的理解,更多的是一种思维模型,个人觉得,测试自动化和探索性测试并不是相对的,各有优缺,能相互结合,也可以利用程序建模完成,基于自动化测试手段开展一些探索性测试,当然,这只是浅见,需要再好好的学习和实践探索性测试后,并基于实现一定的模型,才能有发言权。

       2、人具有学习性,让自动化测试更具有学习性

      当今业务脚本的很大的一个弊病在于缺少动态性,而软件测试是具有杀虫剂效应,而人在测试过程中是具有学习性的,能够感知软件和产品的变化,快速做出相应的调整,例如:哪些功能模块是非常稳定的,可以少测试,哪些是重点,需要多测试等。

         1 学习是一个有特定目的的知识获取和能力增长过程,一个学习系统中可分为:环境—学习环节—知识库—执行环节—学习环节。而学习策略则可以简单分为记忆学习(即我们学习过程常见的死记硬背),归纳学习(即在学习过程,由大量的数据统计出规律,基于平均与概率求解),解释学习(分析学习过程,通过对某一个问题求解分析进行学习)

        2 在自动化测试过程中,当测试功能模块越来越多,没有太多的时间去全部覆盖,我们可以采用归纳学习的方式,基于自动化测试的执行结果或者手工测试执行的结果为数据输入,然后基于一定的模型(例如:以通过率和模块的重要率计算的平均值)得出测试推荐模块,或者当要执行一个功能模块时,基于历史数据和模型(bug出现的错误相关性,功能相关性等)计算出与该功能模块相关性最大模块,并推荐测试。

         3 还有一种机器学习广泛用于白盒测试中测试用例的自动生成,这个就不详细说了,有兴趣的可以查阅一下。

        另外,我们还可以让测试拥有一些更人性化的学习智能,比如让软件记录人在纯手动点击测试一些软件的时候的动作,比如loadrunner这样的自动化测试软件就能办到。但是它只是单纯地记录和模仿,我们现在需要的是记录,然后数据挖掘抽取出一些点击页面来测试的方法,然后再重新生成测试步骤。

        我相信人工智能技术肯定会不停发展,直到全方位超越人类大脑。同时,人工智能也回普及到让人难以想象的程度,一桌一椅,一门一窗,他们的智商都会比人高出不少。。。到时候自动化测试的智能也会高的前所未有无人能及,这个时候还会需要人来手工测试吗?当然不用。实在不行我们还可以找一个比人聪明的机器人去搞测试就行了嘛。当然这就不是“智能自动化测试”了。

        话说回来,我有预感,随着人工智能的普遍,十年内软件的智能化自动测试大潮即将来袭。大家准备好了吗(*^__^*)

      (观点无可靠依据,各位大神不喜勿喷噢)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值