• 周二. 6 月 18th, 2024

软件智能自动化测试

admin

11 月 5, 2023 #智能化测评, #测评

对软件工程有所了解的人都知道,手动测试无法取代自动化测试。 但我认为,未来自动化测试可以完全取代手动测试。 (⊙o⊙)! ?

在大家批评我之前,我想说,我所说的情况发生在足够遥远的未来。 机器和软件虽然是人类创造的,但它们的智力并不一定低于人类。 由于计算和存储方面的巨大优势,软件在某些方面已经超越了人类的能力,比如一些国际象棋游戏。 更不用说深蓝这样牛逼的软件了,我自己也曾经用过一款非常强大的五子棋软件来折磨QQ游戏厅的高手。 我还曾经参加过微软编程选美比赛,在《战舰》游戏中编写了一个AI。 当时我准确地定义了我们舰队的行为,具体到我们需要冲锋的生命值,我们需要撤退的生命值,以及当我们遇到敌人时,我们根据距离和位置选择战术等等。后来,尽管我自认为自己的操作还不错,但我已经无法战胜我写的AI了。

因此,凭借强大的处理能力和恐怖的存储能力,计算机VS人脑在某些方面的优势还是很明显的。 然而,在很多方面,人类仍然比计算机更好。 为什么? 因为在今天的软件中,AI的学习和创新能力仍然需要提高。 虽然已经有了神经网络、启发式算法等一系列算法,但还不够。 但即便是现在,我们也可以利用现有的人工智能技术,让我们的测试变得更加“智能”。

现在,我要介绍一个几乎是我自己发明的术语:软件智能自动化测试。 什么是软件智能自动化测试? 这意味着测试人员可以像人类一样进行测试并发现错误。

那么我们如何才能让我们的测试具有类人智能呢?

1.人是善变的,使得自动化测试更具判断性和场景处理性

自动化测试没有被用来促进问题发现的最大原因是它固化了测试用例并且只关注预期的内容。 那为什么手动测试更容易发现问题呢? 您可以想象以下场景:

1)当手工测试遇到问题时,往往会进行一系列相关的操作,以便验证问题。 根据测试中的一个现象:基于80/20原则的缺陷聚类,即在版本发布之前就测试了缺陷。 大多数发现的缺陷都是由少数软件模块引起的,这或许让测试人员在验证过程中更容易发现更多问题。 这样,首先根据功能点进行关键字驱动的封装,当指定关键字验证错误时,它的方向是什么,即需要调用哪些操作来验证该函数,或者另一个关键字函数称为封装。 层层验证,直到某个关键字的验证完全通过,或者另开一个线程来指定和监控搜索周期,否则很容易导致搜索无休无止。 这个机制是为了探索与验证功能点相关的功能点,发现更多的发现问题。 需要注意的是,这种机制是基于关键字测试驱动框架,关键字调用是为了保证验证后恢复到调用前的初始环境。 另外,这种机制与程序异常机制不同。 异常机制是程序运行时抛出的异常。 当遇到异常而测试脚本无法继续进行时,会根据异常跳转到异常处理部分。 一般是清理测试环境,将框架转移到另一个测试。 例子。

2)探索性测试。 写这篇文章的时候,突然简单浏览了一下和分析了探索性测试相关的书籍。 我突然发现探索性测试是一种强调人的主观性的测试,但它是基于一定的原则的。 规则和具体实施可以关注SMART规则、测试目标、指标评估、可实现性、当前上下文切换以及合理且可接受的时间限制。 至于探索性测试,根据我的理解,更多的是一种思维模型。 我个人觉得测试自动化和探索性测试不是相对的。 每个都有自己的优点和缺点。 它们可以相互组合,也可以使用程序建模来完成。 基于自动化测试方法进行一些探索性测试。 当然,这只是一种肤浅的看法。 你需要好好学习和实践探索性测试,实现一定的模型,才有发言权。

2.人有学习能力,让自动化测试变得更容易学习。

当今业务脚本的一大缺点是缺乏动态性。 软件测试具有杀虫作用,人们在测试过程中学习,能够感知软件和产品的变化并快速做出相应的调整。 ,比如:哪些功能模块非常稳定,可以少测试,哪些是关键,需要多测试等等。

1)学习是有特定目的的知识获取和能力增长的过程。 一个学习系统可以分为:环境——学习环节——知识库——执行环节——学习环节。 学习策略可以简单地分为记忆学习(即我们学习过程中常见的死记硬背)、归纳学习(即在学习过程中从大量数据中找出模式,并根据平均值来解决)和概率),以及解释学习(分析学习)过程,通过解决和分析某个问题来学习)

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

3)还有一种机器学习广泛应用于白盒测试中测试用例的自动生成。 我不会详细介绍这一点。 如果您有兴趣,可以查看一下。

另外,我们还可以让测试有一些更人性化的学习智能,比如让软件记录人点击时的动作,纯手动测试一些软件。 例如,诸如loadrunner之类的自动化测试软件就可以做到这一点。 但这只是记录和模仿。 我们现在需要的是记录下来,然后数据挖掘提取出一些点击页面进行测试的方法,然后重新生成测试步骤。

我相信人工智能技术会不断发展,直到在各方面超越人脑。 与此同时,人工智能也达到了难以想象的水平。 每张桌子、每把椅子、每一扇门、每一扇窗户,他们的智商都会比人类高很多。 。 。 到那时,自动化测试的智能化将是无与伦比的。 这时候还需要人手工测试吗? 当然不是。 如果这不起作用,我们只能找到一个比人类更聪明的机器人来进行测试。 当然这不是“智能自动化测试”。

话虽如此,我有预感,随着人工智能的普及,十年内软件的智能化自动测试浪潮即将来临。 你准备好了吗? (*^__^*)

(此观点没有可靠依据,不喜欢的请勿批评。)