白盒测试的覆盖标准

   1.白盒测试开展的必要条件:算法

      程序的规格说明及程序清单数据结构

      规格说明:规格说明是一个对软件所应知足的要求,以可验证的方式做出彻底、精确陈述的文件。函数

 

      • 功能规格说明----对软件所应具有的功能做出规定;
      • 性能规格说明----对软件所应具有的性能,如计算精度、响应速度和占用存储空间的大小等做出规定;
      • 接口规格说明----对软件与其环境之间、软件各组成部分之间的接口关系做出规定;
      • 设计规格说明----对软件的设计加以说明。典型的内容包括使用的算法、控制逻辑、数据结构、模块间接口关系,以及输入-输出格式等。

        程序清单:作的一个完整的工程以后,全部编写的程序代码,包括主函数,调用函数,子函数等。 性能

   2.白盒测试的覆盖标准测试

    最完全的白盒测试是覆盖程序中的每一条路径,但因为程序中有循环,因此路径数目极大,没法执行全部的路径,因此只能但愿能尽量的覆盖到更多的路径。spa

   

    好比上述程序流程图中有5条路径,包含了20次循环,若是要对其路径进行穷举覆盖,那么就有5^20(95 367 431 640 625)条路径,假如每条路径执行的时间为1毫秒,那么一天24小时不停的执行,则须要大约3024年。可见,彻底覆盖全部的路径是不可能的。为了衡量测试的覆盖程度,须要一些标准,经常使用的标准从低到高分别是:设计

    语句覆盖:code

      语句覆盖是一种较弱的测试标准,含义就是,选择足够的测试用例,使得程序中的每一条语句至少能被执行一次。blog

      是最弱的逻辑覆盖,它必须和其余方法交互使用。接口

      

import unittest


class TestDemo(unittest.TestCase):

    def demo(self, A, B, X):
        if A == 1 and B == 0:
            X = X / A
        if A > 2 or X == 1:
            X = X
        return X

    def test_demo_with_conditional_coverage_1(self):
        '''
        使用语句覆盖测试 方法demo
        A=1,B=0,X=1
        断定A == 1 and B == 0为真,执行
        断定A > 2 or X == 1为真,执行
        '''
        X = self.demo(A=2, B=0, X=1)
        expected = 1
        self.assertEqual(expected, X)



if __name__ == '__main__':
    unittest.main()

 

 

    断定覆盖:

      断定覆盖也称分支覆盖,含义是,执行足够的测试用例,使得程序中的每个分支至少经过一次;

      只比语句覆盖强一点,不能彻底查出在判断的条件中存在的错误,须要更强的逻辑覆盖准则去检验内部条件。

    条件覆盖:

      含义是执行足够的测试用例,使得程序中每一个判断的每一个条件的每一个可能值至少执行一次

相关文章
相关标签/搜索