DAY 1
14
2024-01
点击上方蓝字“一个正经的测试“关注我,每周早上08:30准时推送,每月不定期赠送技术书籍。
微信公众号后台回复“软件测试基础”、“简历与面试”等领取测试资源,回复“微信交流群”、“内推群”一起进群吹水摸鱼。
本文4099字,阅读约需15分钟
五星上将麦克阿瑟曾经说过“在白盒测试面前,黑盒测试就是一个弟弟”
1
让我们来讲一个故事
今天和女朋友吵架了,(假设你有女朋友)。
今晚又是一个人睡沙发,这天晚上,你躺在沙发上,夜不能寐
决定。痛定思痛
决定分享一下今天的主题——白盒测试
什么是白盒测试?
在深化白盒测试的理解之前,让我们通过一个简单的故事来解释白盒测试的概念。想象一下,你正在修理一台复杂的钟表。白盒测试正如你打开钟表的背盖,查看每一个齿轮的转动,每一个弹簧的走向,确定每一部分都正确地互相作用。现在,让我们更详细地了解白盒测试,并了解它的实施步骤和方法。
白盒测试概述:
白盒测试的实施步骤:
2
白盒测试的方法
下面我们通过具体的代码例子来进行说明
def greetings(name):
return "Hello, " + name
#测试用例:
def test_greetings():
assert greetings("Amy") == "Hello, Amy"
def is_even(number):
if number % 2 == 0:
return True
else:
return False
#测试用例
def test_is_even():
assert is_even(2) == True
assert is_even(3) == False
def can_vote(age, citizenship):
if age >= 18 and citizenship == 'USA':
return True
else:
return False
#测试用例
def test_can_vote():
assert can_vote(21, 'USA') == True
assert can_vote(17, 'USA') == False
assert can_vote(21, 'France') == False
def check_numbers(a, b, c):
if a > b and b > c:
return 'Descending'
elif a < b and b < c:
return 'Ascending'
else:
return 'None'
#测试用例
def test_check_numbers():
assert check_numbers(3, 2, 1) == 'Descending'
assert check_numbers(1, 2, 3) == 'Ascending'
assert check_numbers(2, 1, 3) == 'None'
def order(a, b, c):
smallest = min(a, b, c)
largest = max(a, b, c)
middle = (a + b + c) - smallest - largest
return [smallest, middle, largest]
#测试用例
def test_order():
assert order(1,2,3) == [1, 2, 3]
assert order(1,3,2) == [1, 2, 3]
assert order(2,1,3) == [1, 2, 3]
assert order(2,3,1) == [1, 2, 3]
assert order(3,2,1) == [1, 2, 3]
assert order(3,1,2) == [1, 2, 3]
3
我们举一个具体的例子
假设我们有一个函数,它需要处理一个银行账户的交易,如存款,提款和余额查询。我们需要覆盖所有路径以确保每一种操作都被正确执行。
class BankAccount:
def __init__(self):
self.balance = 0
def deposit(self, amount):
self.balance += amount
return self.balance
def withdraw(self, amount):
if amount > self.balance:
return 'Insufficient funds'
self.balance -= amount
return self.balance
def get_balance(self):
return self.balance
为了使用路径覆盖测试,我们可以写如下的测试用例:
def test_bank_account():
account = BankAccount()
# Test deposit
assert account.deposit(100) == 100
# Test get balance
assert account.get_balance() == 100
# Test withdraw with sufficient funds
assert account.withdraw(50) == 50
assert account.withdraw(50) == 0
# Test withdraw with insufficient funds
assert account.withdraw(50) == 'Insufficient funds'
# Check final balance
assert account.get_balance() == 0
我们覆盖了所有可能的路径:存款,查询余额,足够的资金提现,资金不足的提现,以及最终的余额查询。这就是路径覆盖测试的实施例子,它可以确保代码在所有可能的路径下都被验证。
以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。 咱们下篇文章见,Bye~👋