风韵雪ForCSDN 2017-04-19
传统的测试工具,通过让电脑执行一系列步骤,并根据预先定义的预期来检查结果。 那么,人工智能会在软件测试里扮演一个什么角色呢,机器软件测试人员?
也许。
想像一下按揭计算器的测试,不是按照预定义的几个例子,而是随机选择有效数据。 也就是说,选择随机利率从0%到5%,随机贷款金额,贷款期限等。 然后,编写另一个称为oracle的算法,计算结果。 运行软件,看看oracle和软件本身是否匹配。 这种测试工具的方法是非常明确的,这是模型驱动测试的一个简单例子,它可以扩展到诸如随机遍历应用程序之类的事情,为每个输入提供随机数据,并预测结果应该如何。 通宵运行这些测试,或许可以找到一些有趣的错误。
这样运用人工智能是很诱人的,但实际上计算机没有真正的学习,应用程序正在遵循预定义的规则。 像人工智能和机器学习这样的术语意味着计算机发现规则,或创建自己的规则。通过机器学习,该软件可以查看一千个甚至一百万个例子,并创建自己的算法。这是不是很像机器软件测试人员?
举一个简单的例子:当你在Google上搜索“软件测试”时,你没有办法知道算法是否正确。 例如,你不知道顶部的页面是不是最相关的或具有最大权威性的,你也不知道Google是如何基于你的位置,搜索记录和过去的点击改善你的搜索结果的。 然而,如果结果都是一些关于大学备考的内容时,基于你的生活经历,你会知道结果是错误的。
通过为计算机提供大量数据集,以及对每条数据的一些判断规则,人工智能能帮助计算机尝试找出其中的关联。 例如,保罗·格雷厄姆曾经提出过一个用于电子邮件的贝叶斯过滤器,人们首先将数千个电子邮件识别为垃圾邮件和非垃圾邮件,并将该信息提供给计算机。归纳算法会尝试找出垃圾邮件的共同点,并预测收到的邮件是否为垃圾邮件。 Gmail正是利用这种方法来识别垃圾邮件的,同时还提供了一个“报告垃圾邮件”的按钮,为过滤器提供了更多的信息。
现在,思考一下人工智能在软件测试中的潜力:你可以训练你的应用程序来发现问题。
网络爬虫和链接检查工具可以遍历整个网站,寻找404错误。基于模型的软件可以识别崩溃,比如包含一些错误文本的页面。用不同的方法来训练你的软件,找到那些看起来不正确的东西。结合机器学习,我们可以拥有常用的有效输入集,用模型驱动的技术来随机遍历一个应用程序,让机器具有感性的专业知识。这似乎听起来还只是一个梦想,还不存在这样的软件。
不过,我们不必等待这种理想的机器学习,而是进一步发展软件测试中的人工智能思想。 视觉测试是一个记录测试的过程,然后在新构建中重新运行该测试,测试人员可以使用工具快速地验证差异,将每个更改标记为错误(需要返回到之前的状态),或作为新功能(成为新的标准)。大多数视觉测试工具允许用户训练软件来忽略那些变化的字段,比如自动生成的日期,而只专注在不应该改变的内容上。
所有编程本质上都是创造变革,这些可视化工具提供变更检测。 这可能看起来是多余的,告诉计算机,“是的,这种改变是我们预期的”,但它也提供了一种非常快速的方式来检查任何视觉变化,而不仅仅像传统测试工具那样去检查预期结果。
未来,人工智能会取代软件测试人员么?当收音机出现时,人们认为报纸应该消失,然而一百年后,报纸依然运作良好。即使使用机器软件测试人员,仍然需要一个人来运行它们。 自动发现问题的机器学习将会发现常见的通用问题,但不具备专业和定制化的知识能力。 当然,软件测试中的人工智能还不存在。今天测试中大多数成功的机器学习项目,更像分析生产日志中的一系列错误,以确定是哪些行为产生了这些错误。
翻译原文链接:
http://searchsoftwarequality.techtarget.com/tip/Is-artificial-intelligence-in-software-testing-coming-to-you