一篇文章学会黑盒测试、白盒测试(含实操)
文章目录
前言一、黑盒测试概念及方法二、一个黑盒测试实操范例2.1 等价类划分法2.1.1 用户名等价类2.1.2 密码等价类2.1.3 用例等价类
2.2 边界值法2.3 场景法(注册流程)2.4 AI大模型与黑盒测试结合
三、白盒测试概念及方法四、一个白盒测试实操范例(AI工具自动生成)五、总结
前言
刚开始做测试的同学,听到黑盒测试、白盒测试是不是头都大了?是什么东西这么专业高深,让人觉得只可远观而不可亵玩焉。今天就为大家揭开黑盒测试和白盒测试的神秘面纱,让每个测试入门人员都能够把它俩理解得明明白白。
对比维度黑盒测试 (功能测试)白盒测试(结构测试)视角用户视角(外部功能)开发视角(内部代码)方法输入→输出验证(等价类 / 边界值)代码逻辑覆盖(语句 / 分支 / 路径)工具Selenium(UI)、Postman(接口)JUnit(Java)、Pytest(Python)典型场景登录功能:验证用户名密码组合计算函数:检查所有分支和边界条件适用阶段功能测试、验收测试(后期)单元测试、集成测试(前期)
一、黑盒测试概念及方法
黑盒测试是通过软件的外部行为表现进行测试,不关心程序如何实现,只关心输入输出 。此时程序就像被放于一个看不见内容的黑盒子中。由于黑盒测试时我们无法看到程序运行逻辑,所以我们设计测试用例的依据是产品需求文档、设计文档。 黑盒测试用例设计方法:糕冷小美@的黑盒测试用例的具体设计方法(7种)已经讲得很清楚了,我就不再单独介绍了。
二、一个黑盒测试实操范例
假设你要测试这样一个登录功能,你拿到功能说明文档,用户名规则为:英文加数字,6-12位,必须英文开头。密码规则为8-20位,由大写字母、小写字母、数字和特殊字符组成,必须包含其中三样。开始设计测试用例。
2.1 等价类划分法
2.1.1 用户名等价类
分类输入条件有效等价类无效等价类用户名英文开头,6-12 位英文数字user1234(8 位,英文 + 数字)1userewrw4(非英文开头)、user(4 位)、user123456789(13 位)、user!123(含特殊字符)
2.1.2 密码等价类
分类输入条件有效等价类无效等价类密码8-20 位,含三类字符(大写 / 小写 / 数字 / 特殊字符)User163!a(9位,大写 + 小写 + 数字 + 特殊字符)user123(仅小写 + 数字,不足三类)、USER123(仅大写 + 数字)、user12!(7 位)、user123!abcdefghijklm(21 位)、密码123abc(不支持的字符)
2.1.3 用例等价类
用例编号输入数据(用户名/密码/确认密码)预期结果覆盖方法UC01user1234 / User123! / User123!注册成功有效等价类UC021userab3224 / User123! / User123!用户名不符合规则(非英文开头)无效等价类UC03user / User123! / User123!用户名长度不足(5 位)无效等价类UC04user123 / user123 / user123密码不符合规则(仅两类字符)无效等价类
2.2 边界值法
用例编号输入数据(用户名/密码/确认密码)预期结果覆盖边界值UC05user1 / User8-! / User8-!注册失败用户名 = 5 位,密码=7位UC06zu1234 / User896! / User896!注册成功用户名 = 6 位,密码 = 8 位UC07user12345 / 890!@-aew / 890!@-aew注册成功用户名 = 7 位,密码=9位UC08usera123456/User@ab1234567890!1/User@ab1234567890!1注册成功用户名 = 11 位,密码 = 19 位UC09userab123456/User@ab-1234567890!1/User@ab-1234567890!1注册成功用户名 = 12 位,密码 = 20 位UC10userab1234567/User@ab-1234567890!12/User@ab-1234567890!12注册失败用户名 = 13 位,密码 = 21 位
2.3 场景法(注册流程)
用例编号场景描述输入数据(用户名/密码/确认密码)预期结果UC10正常注册成功user1234 / User123! / User123!跳转至登录页面UC11用户名不合法1user / User123! / User123!提示用户名规则错误UC12密码不合法user1234 / user123 / user123提示密码规则错误UC13重复注册user1234 / User123! / User123!提示 “用户名已存在”UC14两次密码不一致Myuser1234 / User123! / user123!提示 “两次密码不一致”
2.4 AI大模型与黑盒测试结合
我们可以将带上功能界面图片,告知功能说明,用AI聊天工具进行用例设计哦。如果要求用例输出结构,可以补充要求AI工具按照以下结构输出测试用例:输出用例编号,场景描述,用例优先级,输入数据,操作步骤,预期结果。 悄悄告诉你:我上面的绝大部分用例都是AI生成的。
三、白盒测试概念及方法
白盒测试时关注代码结构和逻辑,此时程序就像被打开的盒子,可以被看清一切细节。白盒测试关注的是代码正确性,设计测试用例的依据是代码结构。
目前网络上有非常多的白盒测试用例设计方法的资料,有的博主把这块也讲得非常的细致了。但是我们看到条件覆盖、判定覆盖、路径覆盖等词汇还是觉得晕晕乎乎的,思考了一下,原因在于大家都没把什么是条件,什么是判定,什么是路径讲清楚就开始讲方法了。所以,接下来先为大家介绍这些基础词汇。
基础词汇定义流程图中的样子代码中的样子语句代码中的每一行独立执行的代码条件布尔表达式中的每个独立布尔子项(and、or连接的子条件)判定一个布尔表达式(整个if、while等条件语句的结果)路径程序执行时从入口到出口的一条完整执行流程-
顾名思义,语句覆盖就是让所有语句都被执行一次;条件覆盖就是让所有条件都要取一次真假值;判定覆盖就是让所有判断都取一次真假值,路径覆盖就是让所有路径都被走一遍。
白盒测试用例设计方法:糕冷亐㔓焼的测试百科:白盒测试用例的设计(图文并茂,非常详细)已经讲得很清楚了,我就不再单独介绍了。
四、一个白盒测试实操范例(AI工具自动生成)
我们现在有一个简单的程序需要测试,代码如下:
def example_function(a, b):
if a > 0 and b > 0:
return a + b
elif a < 0 or b < 0:
return a - b
else:
return 0
你是不是以为我要画程序流程图来编写单元测试用例?no no no 。实际工作中的函数或程序比我们的示例复杂得多,如果每个函数都要画出程序流程图再来设计测试用例,是想累死开发吗。 当前各类AI大模型工具已经完全可以编写可以直接使用的单元测试用例了。目前最方便的方式是在IDE中安装编码助手插件(如:通译灵码、文心快码、MarsCode),选中函数即可一键生成单元测试用例。插件里面也可以用对话方式生成自动化测试用例,所以我为大家演示在豆包中用对话方式生成单元测试用例。
第一回合:给最简单的指令,发现漏了一些用例 第二回合:结合专业知识给指令,用例更齐全
五、总结
如今随着AI大模型工具的普及,白盒测试中的单元测试用例几乎已经可以完全用AI代替人工,黑盒测试方面也可以让AI大模型工具为我们输出测试用例设计指导,输出表格文字型的测试用例,让测试人员的工作量减轻不少。但是当前一些AI工具需要比较专业的提示词才能得到更好的结果,所以咱们测试人员了解基础原理还是非常有必要的,以上。