Selenium 学习(0.16)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(语句覆盖和判定覆盖)

写在前面

今天回来有点晚,因为上午给小伙伴们开了个小会,随便说了些什么,结果小伙伴们下班就没急着走,弄点我还有点不好意思提前走了,就略留了一会。其实也没说什么,就是强调工作要抓点紧,8小时内提高效率就好,我反对无意义的加班;要他们遵守好规章就好,该干啥就干啥;最好不要摸鱼,千万不要以为摸鱼才是挣钱,把正常上班当等价交换;大家都从学生过来的,坐在下面都以为自己作弊技术高明,其实站在上面的人一眼就能看出来,不管是眼神、动作或神态;我没什么能耐,但是盯个一二十个人还是没啥问题的,如果非要让人盯着,就不太好玩了。也许可能说的不对,请大家"有则改之,无则加冕",我的要求就是"和谐工作、开心生活",不要因为工作产生什么不愉快,搞清楚自己上班是为啥、值不值继续得就好了......

其实我一点也不想贩卖焦虑,我只想能工作顺顺利利推动就好,大家都能拿到想要的就好。大家这么配合,我都脸红了,真心只是希望大家都好,当然你们好了我才会好!感谢!

定义

逻辑覆盖法又称控制流覆盖,是一种按照程序内部逻辑结构设计测试用例的测试方法,目的是要测试程序中的判定和条件,测试程序逻辑结构通常需要通过使用控制流覆盖准则来定量测试进行程度。

它包括:语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖。

语句覆盖

又称为线覆盖面或段覆盖面,通过选择足够数目测试数据,使被测程序中每个可执行语句至少执行一次。

以上被测单元代码包含两个 if 语句,每个判定表达式又由两个子条件组成。绘制流程图如上所示,P1~P5表示若干段控制流。

若要做到语句覆盖,即每条语句至少执行一次程序执行的路径应该是 P1-P3-P2-P5-P4。可设计测试用例如下:

语句覆盖可以很直观地从源代码得到测试用例,无须细分每条判定表达式,但由于这种测试方法仅仅针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。

判定覆盖

又称为分支覆盖或所有边覆盖:**每个判定(例如if语句和while语句)的分支至少执行一次。**注意:每个判定视为一个整体,取值为 true 或 false,而不考虑内部是否包含"逻辑与"或者"逻辑或"等操作符。

判定覆盖法的基本思想是指设计的测试用例,使得程序中每个判定至少分别取"真"和取"假"分支一次,即判断真假值均被满足。

第一种:覆盖P1-P3-P2-P5-P4和P1-P2-P4两条路径

第二种:覆盖P1-P3-P2-P4和P1-P2-P5-P4条路径

根据第二种设计测试用例如下:

判定覆盖法对程序的逻辑覆盖程度仍度高,流程图表示的源程序有4条路径,以上的一种测试用例只覆盖了其中的2条。

判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

=========================================================================

更新待续,洗涤睡了......困!2023年11月27日23:01

=========================================================================

相关推荐
Tiandaren3 小时前
Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
selenium·测试工具·算法·自动化
数字芯片实验室4 小时前
分享一个可以学习正则表达式的网址:Pythex.org
学习·正则表达式
陈洪奇4 小时前
注册中心学习笔记整理
笔记·学习
光影少年5 小时前
从前端转go开发的学习路线
前端·学习·golang
fen_fen10 小时前
学习笔记(32):matplotlib绘制简单图表-数据分布图
笔记·学习·matplotlib
萝卜青今天也要开心14 小时前
2025年上半年软件设计师考后分享
笔记·学习
amazinging14 小时前
北京-4年功能测试2年空窗-报培训班学测开-第四十七天
python·学习·selenium
吃货界的硬件攻城狮14 小时前
【STM32 学习笔记】SPI通信协议
笔记·stm32·学习
一个天蝎座 白勺 程序猿14 小时前
Python练习(1)Python基础类型操作语法实战:20道实战题解与案例分析(上)
开发语言·python·学习
努力的小帅15 小时前
STM32单片机_3
stm32·单片机·嵌入式硬件·学习·stm32c8t6