基于结构的动态测试技术2(单元测试)

基于结构的动态测试用例设计方式可分为基于控制流数据流两大类。上一篇介绍了基于控制流的测试设计,本篇将介绍基于数据流的测试设计。

1、基于数据流设计用例是通过选择的定义-使用的覆盖率来导出测试用例集,以覆盖测试项中变量定义和使用间的路径。不同的数据流覆盖准则要求执行不同定义-使用对和子路径。

2、“使用”可以进一步划分为“P-use”(谓词使用)和“C-use”(计算使用)。谓词使用是指使用变量来确定判定条件(谓词)的结果;计算使用是指一个变量作为其他变量定义或输出的计算输入。

3、在基于数据流的测试中,测试特征集都是被测的代码段,测试条件则是代码中的定义-使用对,不同的用例设计方法体现在测试覆盖项的不同上,导致后续测试用例的不同。。

下面,通过举例来演示上述不同测试覆盖标准 所对应的测试设计:

 分析代码,列出测试项中所使用的变量,并为其分配一个类别(定义、谓词使用或计算使用),如下图

 识别定义列中的每个条目到该变量的谓词使用或计算使用列的每个条目之间的路径,如下图,每个定义-使用对就是一个测试条件

 (1)全定义测试——所有变量定义都覆盖从定义到其谓词使用或计算使用的至少一个定义到任意类型使用的子路径。

 (2)全计算使用测试——所有相关变量定义都覆盖从定义到其每个计算使用的至少一个自由定义子路径。

 

 (3)全谓词使用测试——所有相关变量定义都覆盖从定义到其每个谓词使用的至少一个自由定义子路径。

 方法同全计算使用测试

(4)全使用测试——要求包括从每个变量定义到它的每个使用的至少一条子路径(不包括变量的中间定义)。

 

 

 (5)全定义-使用路径测试——要求包括从每个变量定义到它的每个使用的所有子路径(不包括变量的中间定义)。

全定义-使用路径测试不同于全使用测试,后者只需要从每个变量定义到其使用的一条路径进行测试。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我们来复现一个简单的神经网络,包含卷积层和全连接层。 首先,我们需要准备一些数据。假设我们要训练一个识别手写数字的神经网络,那么我们可以使用MNIST数据集。MNIST数据集包含60000张28x28像素的训练图像和10000张测试图像,每个图像都是黑白的,标签为0到9之间的数字。 在MATLAB中,我们可以使用以下代码加载MNIST数据集: ``` % Load MNIST dataset [XTrain, YTrain] = digitTrain4DArrayData; [XTest, YTest] = digitTest4DArrayData; ``` 接下来,我们可以定义我们的神经网络模型。我们将使用一个包含卷积层和全连接层的简单模型,其中卷积层用于提取图像特征,全连接层用于分类。 ``` % Define model architecture layers = [ imageInputLayer([28 28 1]) convolution2dLayer(5, 20) reluLayer maxPooling2dLayer(2, 'Stride', 2) fullyConnectedLayer(10) softmaxLayer classificationLayer]; ``` 这个模型包含以下层: - 输入层:接受28x28像素的黑白图像作为输入。 - 卷积层:使用5x5的卷积核对输入图像进行卷积操作,提取特征。该层包含20个卷积核,每个卷积核产生一个特征图。 - ReLU激活层:对卷积层的输出进行非线性变换,增强模型的表达能力。 - Max pooling层:降低特征图的尺寸,减少模型的参数数量。 - 全连接层:将所有特征图展平成一个向量,并将其输入到全连接层中进行分类。 - Softmax层:对全连接层的输出进行归一化,得到每个类别的概率。 - 分类层:将概率转换为类别标签。 接下来,我们可以使用以下代码来训练我们的模型: ``` % Train model options = trainingOptions('sgdm', ... 'MaxEpochs', 10, ... 'MiniBatchSize', 128, ... 'Plots', 'training-progress'); net = trainNetwork(XTrain, YTrain, layers, options); ``` 这将使用随机梯度下降算法(sgdm)对模型进行训练,迭代10轮,每批次处理128个样本。我们还将输出训练进度图表。 最后,我们可以使用以下代码对测试集进行评估: ``` % Test model YTestPred = classify(net, XTest); accuracy = sum(YTestPred == YTest) / numel(YTest); disp(['Test accuracy: ' num2str(accuracy)]); ``` 这将使用训练好的模型对测试集进行分类,并输出分类准确率。 希望这能帮助你复现神经网络的卷积和全连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值