DAY5
21
2024-01
点击上方蓝字“一个正经的测试“关注我,每天早上08:30准时推送,每月不定期赠送技术书籍。
微信公众号后台回复“软件测试基础”、“简历与面试”等领取测试资源,回复“微信交流群”、“内推群”一起进群吹水摸鱼。
五星上将麦克阿瑟曾经说过“不会写自动化测试,不是好开发“
一
让我们来讲一个故事
今天和女朋友吵架了,(假设你有女朋友)。
今晚又是一个人睡沙发,这天晚上,你躺在沙发上,夜不能寐
因为,你没有发现这段代码的问题所在
def compute_square_root(x):
x = x ** 0.5 # 计算x的平方根,重新赋值给x
return x
x = 9 # 定义变量x
print(compute_square_root(x)) # 输出将为3.0
print(x) # 输出将为9
决定学习一下这个事情——白盒技术之数据流测试
是结构测试的一种。它是根据程序中变量的定义和使用位置来查找程序测试路径的方法。它与数据流程图无关。此外,它还涉及:
为了说明数据流测试的方法,假设程序中的每个语句分配了唯一的语句号。对于声明编号 S-
DEF(S) = {X | 语句 S 包含 X 的定义}
USE(S) = {X | 语句 S 包含 X 的使用}
如果语句是循环或 if 条件,则其 DEF 集为空,而 USE 集基于语句的条件。数据流测试使用控制流图来查找可能中断程序流的情况。在值和变量之间关联时检测数据流中的引用或定义异常。这些异常现象是:
例如,让我们考虑一个简单的Python代码片段来理解这一点。
def example(a):
b = a + 2 # 在此点定义了b
return b*2
x = example(5)
print(x) # 在此点使用了x
在这段代码中,有两个数据流包:
不断测试这些“定义和使用”路径可以帮助我们更早地发现可能的逻辑错误,从而提高程序的质量和可靠性。
1.读取x、y;
2. if(x>y)
3. a = x+1
else
4. a = y-1
5.打印 a;
流程图如下:
当我们编写或维护一个程序时,理解和验证变量在其生命周期中的变化是至关重要的,原因有如下几点:
让我们回到开头所举的例子,说明为什么我们需要检查程序的变量在其生命周期中是如何变化的。
def compute_square_root(x):
x = x ** 0.5 # 计算x的平方根,重新赋值给x
return x
x = 9 # 定义变量x
print(compute_square_root(x)) # 输出将为3.0
print(x) # 输出将为9
在这个例子中,我们有一个名为compute_square_root的函数,该函数接受一个参数x,并将其平方根计算出来,然后将结果重新赋值给x,最后返回这个结果。主函数中,我们设置x的值为9,然后调用compute_square_root函数。
需要注意的是,尽管我们在compute_square_root函数中重新为x赋值,但这并不会影响主函数中的x变量。这是因为Python函数内的变量是局部的;也就是说,它们只存在于函数的生命周期内,且对它们的更改不会影响函数外的同名变量。这种理解是通过研究变量在其生命周期内的变化习得的。
假设我们错误地期待compute_square_root函数会修改主函数中的x的值,那么我们可能会得到错误的结果并导致程序错误,这就突出了理解和检查变量在其生命周期中的变化的重要性。
数据流测试用于发现以下问题 -
以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。 咱们下篇文章见,Bye~👋