python 白盒测试_白盒测试方法

白盒测试是单元测试阶段常用到的测试方法,其特点有:​

(1)可以构成测试数据,使特定程序部分得到测试;

(2)有一定的充分性度量手段;

(3)可获得较多工具支持;

(4)通常只用于单元测试。

下边通过一段代码来看一下白盒测试中的逻辑覆盖:

那么为了清晰,我们画出一个该程序的流程图:

1、语句覆盖

语句覆盖是最弱的逻辑覆盖准则。要求设计足够多的测试用例,使得每一条语句至少被执行一次​。

对于示例来说​,可以设计:

{x=4,y=6,z=9}执行路径:abd

(理解:不能短路任何语句,比如路径走acd就会短路语块1)​

2、分支覆盖

​要求设计足够多的测试用例,使得每一个判定的​每一个分支至少各执行一次。

​对于示例来说​,可以设计:

{x=5,y=4,z=9}执行路径:abe

{x=2,y=6,z=9}执行路径:acd​

(理解:只要将每个判定即每个菱形框的真假都各取过一次即可,比如走路径abd和ace也是可以的)​

3、条件覆盖

​要求设计足够多的测试用例,使得每一个判定的​每一个条件的每一个取值(真或假)至少各执行一次。

对于示例来说​,可以设计:

{x=4,y=4,z=11}  条件取值:TFTF

{x=2,y=6,z=9}  条件取值:FTFT

{x=5,y=4,z=9} 条件取值:TTFF

(理解:只要将每个判定即每个菱形框里的每个条件真假都各取一次,但注意,比如TFTF时由于第二个判定里的逻辑运算符是||,那么条件y>5不执行,同理,FTFT时z<10不执行,就引出了第三条测试用例)

4、分支条件覆盖

​要求设计足够多的测试用例,使得每一个判定的​每一个条件的每一个取值(真或假)至少各执行一次,并且使得每一个判定的​每一个分支至少各执行一次。

对于示例来说​,可以设计:

{x=4,y=6,z=9}  条件取值:TTTT 执行路径:abd

{x=2,y=4,z=11}  条件取值:FFFF 执行路径:ace

{x=5,y=6,z=11} 条件取值:TFFT 执行路径:acd

(理解:先满足每个条件的真假都各取一次,最好使用TTTT和FFFF,这样肯定会满足abd和ace路径,那么再考虑执行过程中TTTT中的第4个T和FFFF中的第2个F被屏蔽的问题,再加一条TFFT的就好了,因为此时分支已经全部覆盖,所以第三条不用考虑分支覆盖的问题)​

5、条件组合覆盖

​要求设计足够多的测试用例,使得每一个判定的​每一个条件(同一个判定中)的可能的组合至少被各执行一次。

对于示例来说​,可以设计:

{x=4,y=4,z=11}  条件取值:TFTF

{x=4,y=6,z=9}  条件取值:TTTT

{x=2,y=6,z=9} 条件取值:FTFT

{x=2,y=4,z=11} 条件取值:FFFF

(理解:将每一个判定框中的条件组合再重新组合,比如第一个判定框中的两个条件的取值组合TT__、TF__、FT__、FF__和第二个判定框中的两个条件的取值组合__TT、__TF、__FT、__FF进行组合,但这8个组合必须都出现一次。所以说这个例子中条件组合判断的测试用例至少4个)

​6、路径覆盖

​要求设计足够多的测试用例,覆盖程序中的所有可能路径。

对于示例来说​,可以设计:

{x=4,y=6,z=9}  执行路径:abd

{x=5,y=4,z=9}  执行路径:abe

{x=4,y=6,z=11} 执行路径:acd

{x=2,y=4,z=11} 执行路径:ace

(理解:将每一个判定的分支组合起来,并保证每个判定的每个分支的所有可能组合都出现,比如第一个判定框可能为真,也可能为假。若第一个判定框为真,那么就有abd和abe的可能组合;若第一个判定框为假,那么就有acd和ace的可能组合,所有的可能情况就出来了,不难看出,至少也需要4个测试用例)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
白盒测试是一种测试方法,测试人员需要了解被测试的代码的内部结构和工作原理,从而编写测试用例进行测试。Python是一种流行的编程语言,可以用来编写白盒测试。 下面是一个简单的例子,演示如何使用Python编写白盒测试: 假设有一个函数,接受两个整数作为参数,返回它们的和。代码如下: ```python def add(x, y): return x + y ``` 我们可以编写测试用例来测试这个函数的正确性。首先,我们需要导入Python标准库中的unittest模块: ```python import unittest ``` 然后,我们可以编写一个测试类,继承unittest.TestCase类,来编写各种测试用例。例如: ```python class TestAdd(unittest.TestCase): def test_add(self): self.assertEqual(add(1, 2), 3) self.assertEqual(add(-1, 1), 0) self.assertEqual(add(0, 0), 0) ``` 在这个例子中,我们定义了一个名为TestAdd的测试类,其中包含一个test_add方法。这个方法包含了三个测试用例,分别测试了add函数的三种情况。我们使用unittest.TestCase类中的assertEqual方法来断言测试结果是否符合预期。 最后,我们可以运行测试用例,查看测试结果: ```python if __name__ == '__main__': unittest.main() ``` 完整代码如下: ```python import unittest def add(x, y): return x + y class TestAdd(unittest.TestCase): def test_add(self): self.assertEqual(add(1, 2), 3) self.assertEqual(add(-1, 1), 0) self.assertEqual(add(0, 0), 0) if __name__ == '__main__': unittest.main() ``` 运行结果: ``` . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK ``` 可以看到,测试通过了。这个例子只是一个简单的示例,实际的白盒测试可能会更加复杂,需要更多的测试用例和更多的测试方法。但是,使用Python编写白盒测试可以大大提高测试效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值