【软件测试】白盒测试

本篇日志主要分两个部分,第一部分是对课件中基础知识的整理。然而,虽然课件对白盒测试的覆盖准则讲解得十分细致,但对如何进行实际操作却无涉及,经过前一阶段的探索,我大致掌握了一些方法,希望可以与大家一起讨论,所以第二部分为对应用商店应用中的Visual C#代码进行白盒测试方法初探

【基础知识整理】

一、定义

白盒测试又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow)。并判定其结果是否与预期的结果一致。

二、种类

静态分析测试(Static Analysis Test,Code Inspection)、语句分支覆盖测试(Ctrl  Flow Test)等。

三、控制流测试及覆盖准则

1.语句覆盖准则(Statement Coverage)

是最简单的结构性测试方法之一,它要求测试中,程序中的每条语句都得到运行。即,控制流图中的所有语句都被运行的充分必要条件是,覆盖图中的所有节点。

2.分支覆盖准则(Branch Coverage 或Decision Coverage)

分支覆盖要求在软件测试中,每个分支都至少获得一次真/假取值的经历。

3.谓词测试

一个分支的条件是由谓词组成。单个谓词称为原子谓词。

(1)原子谓词覆盖准则(也称 Condition Coverage)

测试数据集T称为原子谓词覆盖充分的,如果对任意一个分支中的任意一个原子谓词,T中存在一个测试数据使其在运行时为“真”、为“假”各一次。

(2)分支-谓词覆盖准则(也称Branch Condition Coverage 或Decision Condition Coverage )

测试数据集T称为分支-谓词覆盖充分的,如果对任意一个分支所包含的任意一个原子谓词,T中存在一个测试数据在运行时为真/假值至少各一次,并且任意一个复合谓词本身也至少获得真/假值各一次。

(3)复合谓词覆盖准则(也称Multi Condition Coverage)

测试数据集T称为复合谓词覆盖充分的,如果任意一个分支,对该分支所包含的原子谓词的任意一个可行的真/假值组合,T中都存在一个测试数据使该组合谓词运行时,原子谓词的取值恰好为该真/假值组合。即每个复合谓词内的原子谓词的各种可能的组合都至少出现一次。

4.路径覆盖准则(Path Coverage)

测试数据集T称为路径覆盖充分的,当且仅当LT覆盖了GP中的所有完整路径。

四、数据流测试及覆盖准则

1.定义覆盖测试准则

测试数据集T对测试程序P满足定义覆盖准则,如果对具有数据流信息的控制流图GP中的每一个变量x的每一个定义性出现,若该定义性出现能够可行地传递到该变量的某一个引用性出现,那么LT中存在一条路径A,它包含一条子路径A’,使得A’将该定义出现传递到某一引用性出现。

2.引用覆盖测试准则

测试数据集T对测试程序P满足引用覆盖准则,如果对具有数据流信息的控制流图GP中的每一个变量x的每一个定义n,以及该定义的每一个能够可行地传递到的引用n’,LT中都存在一条路径A,它包含一条子路径A’,使得A’将n传递到n’。

3.定义-引用覆盖测试准则

测试数据集T对测试程序P满足定义-引用覆盖准则,如果对具有数据流信息的控制流图GP中的任意一条从定义传递到其引用的路径A,若A是无回路的或A是简单回路,那么LT中存在一条路径B,使得A是B的子路径。

【对应用商店应用中的Visual C#代码进行白盒测试方法初探】

1.在“文件”菜单上选择“新建”,然后选择“新建项目”。

2.在“新建项目”对话框中,展开“已安装”、“Visual C#”,选择“Windows Store”。然后从项目模板列表中选择“空白应用程序”。

3.将项目命名为 Maths1,并确保选中“创建解决方案的目录”。

4.在解决方案资源管理器中,选择解决方案名称,从快捷菜单中选择“添加”,然后选择“新建项目”。

5.在“新建项目”对话框中,展开“已安装”、“Visual C#”,然后选择“Windows 应用商店”。后从项目模板列表中选择“单元测试库(Windows Store 应用程序)”。

6.在 Visual Studio 编辑器中打开 UnitTest1.cs。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;

namespace RooterTests1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
        }
    }
}

(1)每个测试都是使用 [TestMethod] 定义的。测试方法必须返回 void,并且不能具有任何参数。

(2)测试方法必须位于使用 [TestClass] 特性修饰的类中。运行测试时,将为每个测试类创建一个实例。  将按未指定顺序调用测试方法。

7.在 UnitTest1.cs 文件的 TestMethod1 中插入一些测试代码。

[TestMethod]
public void TestMethod1()
{
    Assert.AreEqual(0, 0);
}

8.在“测试”菜单上,选择“运行”,然后选择“全部运行”,将生成并运行测试项目。

随即显示“测试资源管理器”窗口,并且测试列出在“已通过的测试”下。  窗口底部的“摘要”窗格将提供有关所选测试的其他详细信息。

到这里验证了测试是否在资源管理器中运行。

9.在“解决方案资源管理器”中,选择“Maths1”项目名称。从快捷菜单中选择“添加”,然后选择“类”。

10.将类文件命名为 Rooter.cs

11.将以下代码添加到 Rooter 类 Rooter.cs 文件中:

public Rooter()
    {
    }

    // estimate the square root of a number
    public double SquareRoot(double x)
    {
        return 0.0;
    }

12.将对 Maths1 应用程序的引用添加到 RooterTests1项目。

(1)在解决方案资源管理器中,选择“RooterTests1”项目,然后选择快捷菜单上的“添加引用...”。

(2)在“添加引用 - RooterTests1”对话框上,展开“解决方案”,再选择“项目”。然后选择“Maths1”项目。

13.向 UnitTest1.cs 文件添加 using 语句:

(1)打开 UnitTest1.cs

(2)在 using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 行下添加以下代码:

using Maths1;

14.添加使用 Rooter 函数的测试。 将下列代码添加到 UnitTest1.cs

[TestMethod]
    public void BasicTest()
    {
        Maths1.Rooter rooter = new Rooter();
        double expected = 0.0;
        double actual = rooter.SquareRoot(expected * expected);
        double tolerance = .001;
        Assert.AreEqual(expected, actual, tolerance);
    }

发现程序报错,查看提示原因:

解决方法:在class Rooter()前加public

15.生成解决方案。新测试将显示在测试资源管理器的“未运行的测试”节点中。

16.在测试资源管理器中,选择“全部运行”。

到此为止,已设置测试和代码项目,并验证了可在代码项目中运行运行函数的测试。现在可以开始编写真实测试和代码。

时间: 2024-12-27 08:11:43

【软件测试】白盒测试的相关文章

软件测试———白盒测试、黑盒测试与灰盒测试

软件测试是一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.其的目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求.预先定义的不一致性,即为了在软件中发现尽可能多的缺陷和不足的地方. 对于软件测试分类,最被大家熟悉的是根据软件结构与算法的角度来分类的:白盒测试.黑盒测试与灰盒测试. 白盒测试又被称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试,是对软件的过程性细节做细致的检查.对于白盒测试,测试员必须要全面了解程序的内部逻辑结构.对所有逻辑路径进行测试."白盒"

软件测试·白盒测试

在软件测试中,大家对于白盒测试应该都很熟悉,白盒测试是与黑盒测试完全相反的一种测试,正如它们的名字一样相反.黑盒测试是基于输入和输出的测试,不用考虑其内部的执行情况,而白盒测试则是依赖于程序内部构成来进行的一种测试. 白盒测试又称结构测试.逻辑驱动测试或基于程序的测试.白盒测试一般被用来分析程序的内部结构.白盒测试的测试者可以看到被测程序的内部,因此,白盒测试要求对被测的程序做到一定程度的覆盖,并且要求软件中的各类成分都要被测试,而白盒测试的优良标准也会以程序的某种成分是否被测试来评判,这也被称

软件测试——白盒测试

1.白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比.由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行.由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试. 白盒测试又称结构测试,透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的. 1) 白盒的测试用例需要做到: ·保证一个模块中的所有独立路径至少被使用一次 ·对所有逻辑

软件测试基本方法(二)之白盒测试

白盒测试 概念:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作. 分类:白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖.循环覆盖.基本路径覆盖.逻辑覆盖又可进一步分为语句覆盖.判定(分支)覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖等.白盒测试主要用于单元测试(我们需要了解程序源码和结构,而且基于输入输出,适合单元模块).下面重点介绍常用的几种白盒测试方法. 语句覆

软件测试第六周——白盒测试

概述: 软件白盒测试,也称为结构化测试.基于代码的测试,是一种 测试用例设计方法,它从程序的控制结构导出测试用例.  用软件白盒测试产生的 测试用例能够:  1)保证一个模块中的所有独立 路径至少被使用一次;  2)对所有逻辑值均需测试true和false;  3)在上下边界及可操作范围内运行所有循环;  4)检查内部 数据结构以确保其有效性.  这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部 逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的

软件测试学习随笔(6) 白盒测试

所谓白盒测试,就相当于对一个透明的盒子进行测试,以编程语言的角度来测试程序,测试者在了解测试程序的内部结构.算法等的情况下,输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点.也就是说,白盒测试是程序设计者的角度对程序进行的测试. 软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径 所有独立的执行路径至少测试一 次:  对所有的逻辑判定所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次都至少测试一次:  在循环的边界和运行

软件测试:白盒测试

一.定义 白盒测试又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的. "白盒"法全面了解程序内部逻辑结构.对所有逻辑路径进行测试."白盒"法是穷举路径测试.在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据. 二.方法 白盒测试法的覆盖标准有逻辑覆盖.循环覆盖和基本路径测试.其中逻辑覆盖包括语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.条件组合覆盖和

软件测试第六周学习笔记之“Win8 APP应用程序的白盒测试”

这周的学习笔记我想写点自己关于实验中碰到的问题和感想. 因为这次做的是白盒测试,所以我决定去测试一下上回测试的app的功能函数. 这次我用的是单元测试项目来做的白盒测试: 创建单元测试的步骤: 1.点击 “文件”->“添加”->“新建项目” 2.选择 windows应用程序-> 单元测试项目 3.在解决方案资源管理器中为单元测试项目下的引用上右击选择添加引用 4.选择解决方案下的项目中的用来测试的win8应用 接下来是单元测试的代码部分的编写了: 我要测试的是该项目中的一个字符串转化编码

软件测试-实验 实验三白盒测试

实验目的 (1)       学习白盒测试方法 (2)       掌握语句覆盖.条件覆盖.分支覆盖等逻辑覆盖方法 (3)       掌握Java代码分析工具的使用 实验内容 1. 计算整数X和整数Y的最大公约数.(不允许采用课堂上所用的方式实现) l  请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名. l  在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数. l  利用FindBugs查找程序中是否存在bug. 代码: i