文章目录

  • 白盒测试之代码审查
    • 代码审查的范围
    • 代码审查的方法
    • 代码审查的规则
  • 白盒测试之逻辑覆盖
    • 单元测试
    • 逻辑覆盖法
    • 语句覆盖
    • 判定覆盖
    • 条件覆盖
    • 判定—条件覆盖
    • 条件组合覆盖

白盒测试之代码审查

代码审查的范围

合格的代码应具备正确性、清晰性、规范性、一致性和高效性

概括起来,代码审查的工作涵盖了下列方面:

  1. 业务逻辑的审查
  2. 算法的效率
  3. 代码风格
  4. 编程规则

代码审查的方法

  • 互查:就是在相同模块或相近模块的编程人员之间互相检查对方的代码
  • 走查:从头到尾将写好的程序检查一遍
  • 代码审查

代码审查的规则

  • Java最基本语句的使用
  • 重载函数的审查
  • 内存分配和管理:当进行内存分配和管理时,很重要的一点就是内存的及时释放和避免缓冲区溢出
  • 程序性能的审查:
    • 减少创建对象
    • 减少循环体的执行代码,能放在循环体外的代码要尽量放在循环体外
    • 提高处理异常出错的效率
    • 减少I/O操作时间

白盒测试之逻辑覆盖

单元测试

单元测试是软件测试中最基础的测试,集成测试、功能测试和系统测试都建立在单元测试之上。

单元测试的对象是构成软件产品或系统的最小的独立单元,如封装的类或对象、独立的函数、进程、子进程、组件或模块等。

对于单元测试用例的设计和程序的实现过程,主要集中在白盒测试方法之上,并力求达到下列测试要求

  1. 对程序模块所有独立的执行路径至少要测试一次
  2. 对所有逻辑判定,其结果为真假两种情况至少要测试一次
  3. 对程序进行边界检查(常见的如数据越界检验)
  4. 检验内部数据结构的有效性

逻辑覆盖法

  • 逻辑覆盖法是白盒测试中最主要的测试方法
  • 逻辑覆盖分为语句覆盖、判定覆盖、条件覆盖、判定----条件覆盖、条件组合覆盖,其基本思想不同,产生的测试用例不同,覆盖范围也有所不同

我以下边的代码为例分别介绍几种逻辑覆盖方法

Dim a,b As Integer
Dim c As Double
If (a > 0 AND b > 0) Thenc - c / a
End If
If (a > 1 OR  c > 1) Thenc = c + 1
End If
c = b + c

简单的将代码逻辑用流程图转化下:

语句覆盖

基本思想:设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次

根据程序流程 / 路径图可以看出,该程序模块有4条不同的路径

  • P1 : (M-K-N-J-P) 对应 M=.T. AND N=.T.
  • P2: (M-K-N-P) 对应 M=.T. AND N= .F.
  • P3: (M-N-J-P) 对应 M=.F. AND N=.T.
  • P4:(M-N-P) 对应 M=.F. AND N=.F.

通过观察发现:p1 包含了所有可执行语句,按照语句覆盖的测试用例设计原则,只要设计一组测试用例覆盖p1路径,就可达到要求。如输入数据:a = 2 , b = 1 , c = 6

不足:在使用语句覆盖法进行测试用例设计时,能够使得所有的执行语句都被测试,但是不能准确判断运算中的逻辑关系错误。在这个例子中,如果将m的条件写成( a > 0 or b > 0 ),这时的测试用例仍然可以覆盖所有可执行语句,但不能发现其中的逻辑错误。

判定覆盖

基本思想:使每个判断的取真值和取假值都至少经历一次

不足:在上面的例子中,如果条件n中是 c < 1 而不是 c > 1 ,则组合1的测试结果没有差别

条件覆盖

基本思想:是使每个条件的取真值和取假值都至少经历一次

那么:对于第一个判定条件M , 可以进一步分为以下两种:

  • 条件 a > 0 : 取真时为 T1 , 取假时为 F1
  • 条件b > 0 : 取真时为T2,取假时为 F2

对于第二个判定条件N , 可以进一步分为以下两种:

  • 条件 a > 1 : 取真时为 T3 , 取假时为 F3
  • 条件c > 1 : 取真时为T4,取假时为 F4

保证每个条件至少有一次取真、取假,满足条件覆盖,但是覆盖了相同的路径 p3 。说明,即使做到条件覆盖,也不能保证覆盖所有路径。测试用例满足看似更复杂、要求更高的条件覆盖,事实上也不一定能满足判定覆盖的需求。

只是满足一种覆盖条件,还会遗漏程序逻辑路基或判定错误,依旧存在较大风险。

所以,白盒测试要求同时满足两种以上的测试覆盖要求,测试的覆盖率才能满足质量要求,将风险降到很低。

判定—条件覆盖

基本思想:确保设计足够或精巧的测试用例,可使得判断条件中所有条件的可能取值至少被执行一次,同时,所有判断的可能结果也至少被执行一次。

条件组合覆盖

基本思想:设计足够的测试用例,使判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。与判定—条件覆盖的差别是:条件组合覆盖不是简单地要求每个条件都出现真假两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

软件测试(六):白盒测试相关推荐

  1. 【软件测试】白盒测试方法与黑盒测试方法的区别

    软件测试方法一般分为两种:白盒测试与黑盒测试.其中,白盒测试又称为结构测试.逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标.黑盒测试又被称为功能测试.数据驱动测 ...

  2. 软件测试--静态白盒测试

    软件测试–静态白盒测试 静态测试是指测试非运行部分-检查和审查.静态白盒测试是指在不执行软件的条件下条理地仔细审查软件设计.体系结构和代码,从而找出软甲缺陷的过程,又称为结构化测试. 静态白盒测试的好 ...

  3. 我做软件测试六年的一些感悟

    今天给大家分享一篇文章,文章内容讲的很真实,不管是刚入行还是在这个行业做了两三年的同志们,都可以看一下,可能很多人觉得讲的都是大道理,但是这些点都是我们今后要面对的.接下来来看看文章吧. 不知不觉已经 ...

  4. 开发转测试没人要_我做软件测试六年的一些感悟

    不知不觉已经从事软件测试六年了,从毕业到进入外包公司外包给微软做软件测试, 到现在加入著名的外企.六年的时间过得真快.长期的测试工作也让我对软件测试有了比较深入的认识.我就跟大家分享一下我做测试的心得 ...

  5. 软件测试条件覆盖怎么画流程图,软件测试流程图白盒测试条件覆盖路径覆盖.doc...

    软件测试流程图白盒测试条件覆盖路径覆盖.doc 上传人:ms****95 文档编号:43341421 上传时间:2020-01-21 格式:DOC 页数:7 大小:235.50KB 下载提示(请认真阅 ...

  6. 软件测试知识——白盒测试

    软件测试知识--白盒测试 什么是白盒测试 白盒测试的方法 语句覆盖 分支覆盖 条件覆盖 判定条件覆盖 组合覆盖 路径覆盖 总结 白盒测试的优劣 什么是白盒测试 白盒测试也称结构测试或逻辑驱动测试,是把 ...

  7. 十年经验的软件测试P7总监 给转行自动化软件测试六条学习建议

    建议一:一定要学习一门编程语言,然后再开始使用自动化测试相关的工具 >> 下载300G软测学习资料包[视频教程+PPT+课件+项目源码] 关于编程语言的选择,是很多想转行软件测试的新人们都 ...

  8. 【软件测试】白盒测试与黑盒测试

    白盒测试与黑盒测试 测试用例 定义 生成的基本准测 设计步骤 作用 测试数据和测试用例的区别 黑盒测试 定义 优点 缺点 黑盒测试的实施过程 等价类划分法 边界值分析法 错误推测法 因果图 判定表 判 ...

  9. 软件测试年月日白盒测试,软件测试方法 白盒测试

    <软件测试方法 白盒测试>由会员分享,可在线阅读,更多相关<软件测试方法 白盒测试(64页珍藏版)>请在人人文库网上搜索. 1.Chp3 软件测试方法软件测试方法 ch2 软件 ...

  10. 软件测试 黑盒白盒测试方法总结

    白盒测试-语句覆盖 设计测试用例,让程序的每个可执行的语句都执行一次.在分支处通过不同的用例,让分支的有执行的方向都执行过都执行过.这里需要注意,是让语句去执行,下图中之所以说1-2-4是完全语句覆盖 ...

最新文章

  1. 博士大佬为机器学习总结的人工智能入门指南!
  2. NIS服务器介绍及搭建
  3. Hive运行方式、gui
  4. EventHandler, EventArgs
  5. python请求post无返回结果_Python请求POST返回不完整的内容
  6. 腾讯2019暑期实习生提前批CV岗笔试题
  7. centos php7.0 mysql_CentOS 7.3 下 安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)
  8. 美国量子计算机能编程吗,世界首台可编程通用量子计算机美国问世
  9. protobuf 2.5.0问题
  10. CS安装卸载测试总结
  11. 爬取B站程序猿up主,分析程序猿up出什么类型的视频会受欢迎
  12. AxureRP8实战手册
  13. java 计算正态分布_使用Java计算正态分布
  14. 数据结构--创建并输出二叉树的c语言实现(超详细注释/实验报告)
  15. java-net-php-python-13jspm珠宝销售网开题计算机毕业设计程序
  16. 将一个32bit的数据,颠倒过来,bit0与bit31交换,bit1与bit30交换,C语言实现与verilog实现。
  17. 如何推广企业微信号?企业进行公众号的推广有哪些方法?
  18. iphone11屏比例_苹果11的屏幕分辨率是多少
  19. 真正的Windows XP SP2上海政府版
  20. 手机芯片基带芯片及服务器芯片有什么区别,手机射频电路知识干货,射频芯片和基带芯片又是什么关系?...

热门文章

  1. mysql 中文分词搜索_利用中文分词打造数据库全文检索
  2. java网上花店系统_鲜花商城_电子商务网站 源码下载
  3. JAVA大学实用教程(第四版)课后习题一、二章答案及解析(自整理)
  4. wma音频怎么转换mp3格式
  5. 监考安排系统java代码_基于jsp的监考安排与查询-JavaEE实现监考安排与查询 - java项目源码...
  6. mysql季度第一天_mysql 获取季度的第一天 本月的第一天,本周的第一天sql语句(转)...
  7. ProcessDB实时/时序数据库——C/C++接口速度测试
  8. 认知计算、人工智能的区别与理解
  9. 太赞了,288页Python核心知识笔记,零基础入门首选
  10. PHP中htmlentities和 htmlspecialchars区别