【头歌】试的学习

news2025/1/18 8:45:58

1.基本路径测试
2.画出程序控制流图
3.计算流图的环形复杂度
4.确定线性独立路径的基本集合
5.设计测试用例

基本路径测试

除了逻辑覆盖,还有一种常用的白盒测试的测试方法:基本路径测试。基本路径测试是 Tom McCabe提出的一种白盒测试技术。使用这种技术设计测试用例时,首先需要计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。

画出程序控制流图

流图其实就是程序的流程图的简化版。其中只用圆圈来表示程序中的代码语句。
我们不妨通过一个例子带大家画出程序的流图。程序如下图所示:


这段代码的功能是计算不超过100个在规定值域内的有效数字的平均值。
代码中有一个while结构,两个if结构,在流图中能体现出这三个结构的话,流图就算是画出来了,如下所示:
 

计算环形复杂度

画出程序控制流的流图后,下一步便是计算流图的环形复杂度。环形复杂度定量度量程序的逻辑复杂性。使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数量,而且这个数是确保程序中所有语句至少被执行一次所需的测试数量的上界。
有以下两种方法计算环形复杂度:

给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;

给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。

上面的流图的环形复杂度,可以分别使用这两种方法进行计算:

方法一:环形复杂度= 17 条边 - 13 个节点 + 2 ,即环形复杂度为 6;
方法二:环形复杂度= 6 个判定节点 + 1,即环形复杂度为 6。

确定独立路径

计算好流图的环形复杂度,便可以知晓程序独立路径的条数。所谓独立路径就是从流图开始的地方到结束的地方的通路。独立路径的数量等于流图的环形复杂度。上面例子的环形复杂度为6,所以独立路径总共有6条。
下面列出这6条独立路径:


路径4、5、6后的省略号表示可以后接通过控制结构其余部分的任意路径。

设计测试用例

确定了独立路径后,就需要设计多组测试用例,覆盖所有的独立路径。每组测试用例覆盖一条独立路径。因此测试用例可以是:
路径1的测试用例:
value[k] = 有效输入值
value[i] = -999
预期结果:基于k的正确平均值和总数

路径2的测试用例:
value[1] = -999
预期结果:avarage = -999

路径3的测试用例:
试图处理101个或更多值
预期结果:前100个数的平均值,总数为100

路径4的测试用例:
value[i] = 有效输入值,i<100
value[k] < minimum,k<i
预期结果:基于k的正确平均值和总数

路径5的测试用例:
value[i] = 有效输入值,i<100
value[k] > maximum,k<i
预期结果:基于k的正确平均值和总数

路径6的测试用例:
value[i] = 有效输入值,i<100
预期结果:正确的平均值和总数

至此,我们便完整的走完了一遍基本路径测试法的全部流程。

作答要求

使用基本路径测试法,设计满足基本路径测试的多个测试用例,用于对test函数进行白盒测试。函数代码如下:

 

测试结果

  1. public static void test(int numA,int numB){
  2. int x = 0;
  3. int y = 0;
  4. while(numA-- > 0)
  5. {
  6. if(numB == 0)
  7. x = y + 1;
  8. else
  9. if(numB == 1)
  10. x = y + 2;
  11. else
  12. x = y + 3;
  13. }
  14. }
  15. 1、

    该程序的流图的环形复杂度和独立路径条数分别是多少?

    A、

    3,3

    B、

    4,4

    C、

    5,5

    D、

    6,6

  16. 2、

    以下哪种测试用例的设计可以覆盖所有的独立路径?

    A、

    TestCase1: numA = 0, numB = 1
    TestCase2: numA = 1, numB = 0
    TestCase3: numA = 1, numB = 1
    TestCase4: numA = 1, numB = 2

    B、

    TestCase1: numA = 0, numB = 0
    TestCase2: numA = 1, numB = 0
    TestCase3: numA = 1, numB = 1

    C、

    TestCase1: numA = 1, numB = 0
    TestCase2: numA = 1, numB = 1
    TestCase3: numA = 1, numB = 2

    D、

    TestCase1: numA = 0, numB = 0
    TestCase2: numA = 0, numB = 1
    TestCase3: numA = 0, numB = 2
    TestCase4: numA = 1, numB = 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++学习——继承

继承 **继承****继承的案例****继承的三种方式方式&#xff1a;****继承中的对象类型****继承中的构造和析构顺序****继承中同名成员的处理****同名静态成员处理****多继承语法****菱形继承** 继承 普通的输出 #define _CRT_SECURE_NO_WARNINGS #include <iostream> us…

8. 让java性能提升的JIT深度解剖

JVM性能调优 1. C1、C2与Graal编译器1.1 C1编译器1.2 C2编译器1.3 分层编译 2. 热点代码3. 热点探测4. 方法调用计数器5. 回边计数器6. 编译优化技术6.1 方法内联 7. 锁消除8. 栈上分配9. 逃逸分析技术10. 标量替换 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地…

【LeetCode热题100】打卡第14天:下一个排列最长有效括号

文章目录 【LeetCode热题100】打卡第14天&#xff1a;下一个排列&最长有效括号下一个排列⛅前言&#x1f512;题目&#x1f511;题解 最长有效括号&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第14天&#xff1a;下一个排列&最长有效括号 下一个排列 …

如何入门挖掘SRC?

挖洞其实算是web渗透中第一个明确的关卡 越过这个坎&#xff0c;从此天高任鸟飞&#xff0c;海阔凭鱼跃。越不过&#xff0c;就永远越不过。 先说平台&#xff1a; 漏洞响应平台&#xff1a;实战渗透测试&#xff0c;同时能获得一些外快。 补天漏洞响应平台&#xff1a;http…

Netty核心技术五--Netty高性能架构设计

1. 线程模型基本介绍 不同的线程模式&#xff0c;对程序的性能有很大影响&#xff0c;为了搞清Netty 线程模式&#xff0c;我们来系统的讲解下 各个线程模式&#xff0c; 最后看看Netty 线程模型有什么优越性.目前存在的线程模型有: 传统阻塞 I/O 服务模型Reactor 模式 根据 R…

郭光灿团队实现低温集成量子纠缠光源

中国科大郭光灿院士团队在集成化量子光源制备研究中取得重要进展。该团队任希锋研究组基于低温集成自发四波混频过程&#xff0c;展示了低温条件下集成量子纠缠光源的制备&#xff0c;相关成果于6月2日发表在光学知名学术期刊Optica上。 “利用低温综合四波混合技术产生纠缠现象…

Mapbox表达式详细解读

初学mapbox 的小伙伴们一定会被表达式给弄的晕头转向的。明明条件判断或者回调函数能解决的问题。mapbox里非得让你用表达式。这确实比较ex。 不过我们既然遇到了,也不要怕,这篇文章我就带着大家一点一点的搞明白这个所谓的表达式。 首先从宏观上讲,要知道为什么使用表达式…

【面试高频】cookie、session、token?看完再也不担心被问了

在以往的面试记录里&#xff0c;我又看到了一个多次被问到的知识点&#xff0c;那就是 cookie、session、token 的区别有哪些&#xff1f;如果现在来问你&#xff0c;不知道你能否说清楚呢&#xff1f; 今天不仅仅是整理出这三者的区别&#xff0c;更重要的是能够真正去理解这三…

Python | print写入日志

Python | print写入日志 有时我们需要将屏幕上打印的消息保存到一个文件中&#xff0c;如果每条信息都通过调用写入函数来实现&#xff0c;就太麻烦了 这里自己定义1个日志类&#xff0c;然后将 sys.stdout 设置为该类即可&#xff0c;非常方便 sys.stdout Logger(fileName …

卡尔曼滤波与组合导航原理(八)遗忘滤波

函数模型 { X k Φ k l k − 1 X k − 1 Γ k − 1 W k − 1 Z k H k X k V k \left\{\begin{array}{l} \boldsymbol{X}_{k}\boldsymbol{\Phi}_{k l k-1} \boldsymbol{X}_{k-1}\boldsymbol{\Gamma}_{k-1} \boldsymbol{W}_{k-1} \\ \boldsymbol{Z}_{k}\boldsymbol{H}_{k} \…

C语言:使用 普通方法 和 二分查找算法(折半查找算法) 在一个有序数组中查找具体的某个数字n

题目&#xff1a; 从键盘输入数字n&#xff0c;在一个 有序数组 中查找具体的某个数字n。 思路一&#xff1a;普通方法 &#xff08;逻辑简单&#xff0c;在无序数组中也可以使用&#xff0c;但效率较低&#xff0c;需要逐个查找&#xff09; 总体思路&#xff1a; &#xff…

日常培训管理-参训名单/BootstrapTable获取表数据 / js 删除两个数组中id相同的对象/

---2022.11.9 1、 现在有一个功能是从下面待选名单中选中&#xff0c;再点击这个添加按钮&#xff0c;就会将这些人添加到上面这个参训名单&#xff0c;然后再给其中每个人手动打分。分打完 BootstrapTable中有两组数据&#xff0c;在下面待选名单数据条目前面中打钩选中&am…

从零开始学习CTF——CTF基本概念

这一系列把自己学习的CTF的过程详细写出来&#xff0c;方便大家学习时可以参考。 一、CTF简介 01」简介 中文一般译作夺旗赛&#xff08;对大部分新手也可以叫签到赛&#xff09;&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。 CTF…

odoo-028 odoo前端页面显示跟后台数据库内容不一致

文章目录 一、问题二、排查三、总结 版本&#xff1a;odoo13 一、问题 同步多端数据的时候发现&#xff0c;产品product.template页面显示的内容跟用接口查询出来的不一样&#xff0c;接口查询的结果中name值总是后面多一些数据。 页面显示&#xff1a;六甲基二硅胺锂 1.0M T…

开源且免费:全面评估排名前五的缺陷管理工具

软件缺陷管理是一个关于发现&#xff0c;记录&#xff0c;追踪&#xff0c;处理和报告软件缺陷的过程。这是软件开发过程中的一个重要环节&#xff0c;它可以帮助开发团队保持代码的质量并及时修复问题。 一、早期小团队使用的免费缺陷管理工具 在项目早期或者团队规模较小的…

kafka事务(伪事务)

事务要点知识 Kafka的事务控制原理 主要原理&#xff1a; 开始事务-->发送一个ControlBatch消息&#xff08;事务开始&#xff09; 提交事务-->发送一个ControlBatch消息&#xff08;事务提交&#xff09; 放弃事务-->发送一个ControlBatch消息&#xff08;事务终…

瓦坎达的科技真的很厉害吗

就漫威电影宇宙来说&#xff0c;瓦坎达的科技真的很厉害吗 厉不厉害我不敢保证&#xff0c;但是这个IP段的服务器是真的好用 43.241.19.1 43.241.19.2 43.241.19.3 43.241.19.4 43.241.19.5 43.241.19.6 43.241.19.7 43.241.19.8 43.241.19.9 43.241.19.10 43.241.19.11 43.2…

使用ETLCloud强大的自定义规则实现自定义数据处理算法

实时数据处理规则有什么作用&#xff1f; 在大数据中的实时数据采集、ETL批量数据传输过程中很多数据处理过程以及数据质量都希望实时进行处理和检测并把不符合要求的脏数据过滤掉或者进行实时的数据质量告警等。 在数据仓库建设过程中&#xff0c;每家企业的数据处理过程中肯…

Java调用Groovy动态加载接口实现类,热部署不需要编译

pom <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.3</version></dependency> Java接口&#xff1a; public interface Run {public void speed(int s); } Groovy实…

基于SSM的图书馆借阅管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会的发展和信息…