人工智能如何帮助测试设计

人工智能算法的类型

人工智能如何帮助测试设计_第1张图片
智能人工

现今,人工智能的算法,已在垃圾邮件的处理、智慧医疗、数据分析、智能驾驶、语音识别、图像识别等诸多领域得到广泛应用。其中一些算法理论,可以追朔到上世纪50年代,近年来越发为各个行业广泛应用,内因是其具有的强大的函数拟合能力带来的机器学习的潜力;外因得益于现今更强的计算能力,更多的数据,以及更好的训练方法的驱动。

常见的人工智能的算法,有KNN算法、BP算法、卷积神经网络算法(CNN算法)、深度神经网络算法(DNN算法)等KNN算法在机器学习里面非常经典,不仅因为它本身的算法逻辑比较简单易懂,更因为它是基于实例的学习算法中的代表,是将新样本与已知的样本进行比较,通过已知样本局部的标签属性来为新样本打标签完成新样本的分类。

而BP算法、卷积神经网络算法(CNN算法)、深度神经网络算法(DNN算法)是训练网络模型来学习,是通过已知样本训练出一个可靠的模型,用这个模型来为新样本打标签完成新样本的分类。

下面我们就以这两种算法为例子,介绍他们为软件测试设计带来的帮助。

机器学习的实现最佳分类

我们以神经网络算法为例子,简单看看什么是机器学习。

神经网络的理论基础之一是多层的神经网络可以逼近任意的函数,也就是说,面对任何复杂的非线性分类任务,多层神经网络可以通过已有样本来调整参数实现任何分类。

下图是一个典型的神经网络单元的模型:包含有3个输入,1个输出,以及2个计算功能。注意中间的箭头线。这些线称为“连接”。每个上有一个“权值”。

人工智能如何帮助测试设计_第2张图片

连接是神经元中最重要的东西。每一个连接上都有一个权重。一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

一个典型的神经网络,由几个、上百个、上千个甚至几百万个上面这样的“单元”构成,它们排列在一系列的层中,每个层之间彼此相连。这些层可以分为输入单元(下图红色),隐藏单元(下图蓝色)和输出单元(下图黄色)组成。神经网络就是通过学习渐渐调整每两个单元(神经元)连接的力度,就是权重值,达到对新的样本各个属性的分析,得出其最佳的不同类别。 例如,在文件测试中,不用的测试用例,不同的测试路径,用多个属性来标示,作为一个经过训练的神经网络的输入,得出那个测试用例属于可提高覆盖率,发现缺陷的分类,帮助我们设计新的测试用例。

人工智能如何帮助测试设计_第3张图片

测试用例设计中的分类问题

人工智能如何帮助测试设计_第4张图片

上图是一个旅游助手网站,我们将希望的功能用右面的功能模块来表现。对应的每一个具体的功能,即我们之前称之为活动的内容,包含一个独立的测试模块。

在上面的模型化的模块图中,我们可以看到,每个可以并列的活动分配在各个不同的应用状态中,而各个不同状态间,活动之间有多种可能的测试工作流程。我们都知道,即使在一个简单的模型中,也确实有数十亿用户执行流程。我们不能全部执行。所以我们需要优化。用户可以在活动上设置优先级来实现业务上的优先需求。同时,我们也使用人工智能、机器学习算法来选择最佳路径来优化覆盖和发现缺陷。

人工智能如何帮助测试设计_第5张图片

人工智能算法辅助测试用例设计

我们以KNN算法为例,首先看看人工智能算法是如何工作的,再看看这个算法如何帮助我们做测试路径选择的决策。

KNN算法的逻辑就是选择离测试样本最近的K个邻居,根据邻居们的属性,设置新样本的属性,从而实现分类。例如如图,

人工智能如何帮助测试设计_第6张图片

我们有一组现有样本,它们被以某种方式分类;在这种情况下,我把它们分类为蓝色圆圈和红色三角形。然后,当新的样本出现时,算法通过查看k近邻来分类它们(假设k为5),并且选择哪个分类在该集合中更常见。因此,在这种情况下,我们将新样本归类为蓝色,因为在它的5个最近邻居中有更多的蓝色点而不是红色三角形。

同样的算法,也可以帮助我们选择下一步执行哪一个用户活动。在这种情况下,每个已有样本都是先前已经执行的测试,并按照测试是否通过或失败来分类。

蓝色圆圈是经过的用户执行流程,红色三角形是显示缺陷的用户执行流程。下一步,可能执行的活动,有三个可能,

人工智能如何帮助测试设计_第7张图片

我们可以做的是比较这三个不同的用户执行流程使用K近邻,并选择一个最有可能被归类为缺陷的下一步活动。因此,在这种情况下,我们再次使用k=5,并且您可以看到两个选项将被分类为PASS,而其中一个将被归类为失败。因此,我们执行选项“3”,因为它最有可能导致我们想要的缺陷。

这就是我们如何使用人工智能算法,来利用已有测试结果,帮助用户从模型中自动生成最有可能发现缺陷的执行路径的基本思路。

在实践中所做的当然更为复杂。我们有多个算法工作,有很多属性来分类路径,并且我们还需要在不同的测试要求之间做出权衡。但以上体现了人工智能在测试领域中的新的应用前景。

软件测试机器人的工作流程:

1.业务知识以知识图谱的方式进行存储

人工智能如何帮助测试设计_第8张图片

2.用户只需要输入自然语言

3.软件测试机器人智能生成测试用例

4.执行测试并发送报告

人工智能如何帮助测试设计_第9张图片

Android端的用例自动生成案例:

人工智能如何帮助测试设计_第10张图片

你可能感兴趣的:(人工智能如何帮助测试设计)