zoukankan      html  css  js  c++  java
  • 【软件测试】白盒测试

        本篇日志主要分两个部分,第一部分是对课件中基础知识的整理。然而,虽然课件对白盒测试的覆盖准则讲解得十分细致,但对如何进行实际操作却无涉及,经过前一阶段的探索,我大致掌握了一些方法,希望可以与大家一起讨论,所以第二部分为对应用商店应用中的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.在测试资源管理器中,选择“全部运行”。

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

     

  • 相关阅读:
    心得体悟帖---200209(效率太低的事情我是不会做的,这个可以解释我所有的行为)
    心得体悟帖---200209(顺心而动的睡觉方式(6+1或者5+2的睡觉方式))
    按钮用图片做背景hover时闪烁
    范仁义Emmet课程---1、HTML速写之Emmet语法规则
    CSS3疑难问题---5、:before和::before的区别
    reset.css是什么
    日常英语---200209(Abbreviations(Emmet Abbreviations Syntax))
    日常英语---200209(relative(layer model))
    日常英语---200209(Emmet Abbreviations Syntax)
    伪元素和伪类在chrome浏览器里面还是比较好区分的
  • 原文地址:https://www.cnblogs.com/zhangkexin/p/4440381.html
Copyright © 2011-2022 走看看