测试-控制流测试

news2024/11/22 21:06:06

参考:ysu老师课件(测试老师和软件工程老师的结合了一下)

本文章总结了控制流测试的知识点和习题练习,没有总结如何画控制流图,很简单,跟着思路走就行,但是要注意一定要画合并结点。


目录

路径覆盖

语句覆盖原则

判定覆盖(分支覆盖原则)

条件覆盖

谓词覆盖原则(条件组合覆盖)

生成测试输入


路径覆盖

路径覆盖的含义是,选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

路径覆盖要求设计足够多的测试用例,在白盒测试法中,覆盖程度最高的就是路径覆盖,因为其覆盖程序中所有可能的路径。

对于比较简单的小程序来说,实现路径覆盖是可能的,但是如果程序中出现了多个判断和多个循环,可能的路径数目将会急剧增长,以致实现路径覆盖是几乎不可能的。

总结:选取程序中所有可能(可执行)的路径。

比如上述图的部分输入与路径:

输入:<no,no,no>

路径:1-2-3(F)-8-9(F)-14-15(F)-9-21

输入:<yes,no,no>

路径:1-2-3(T)-4(F)-6-8-9(F)-14-15(F)-9-21

语句覆盖原则

选取路径,是的程序单元中所有的语句至少被执行一次(覆盖CFG中的所有结点)。

在程序测试中的完全语句覆盖是最弱的覆盖标准。

任何测试套件,如果对新程序的测试没有达到语句覆盖,则认为是不可接受的。

总结:选择测试数据,使被测程序中每个语句至少执行一次

分析:

取A=2,B=0,X=3,则 通过路径 acbed ,符合语句覆盖

所以测试用例取(2,0,3)

判定覆盖(分支覆盖原则)

每个语句至少执行一次,每个判定的真假分支至少执行一次。

每个条件取true和false各一次。

比语句覆盖强,但只覆盖一半路径

1.a 真 b也真 acbed (2,0,3)

2.a 假 b 也假 abd(3,1,1)

另外一组:

1.a 真 b假 acbd (3,0,1)

2.a 假 b真 abed (2,0,3)

条件覆盖

每个语句至少执行一次,判定表达式每个条件取各种可能结果。

为了做到条件覆盖,应该选取测试数据使得:

在a点有下述各种结果出现:

A>1,A<=1,B=0,B!=0;

在b点有下述各种结果出现:

A=2,A!=2,X>1,X<=1。

使用下面两组测试数据就可以达到上述覆盖标准:

A=2,B=0,X=4 (满足A>1,B=0,A=2,X>1)

A=1,B=1,X=1 (满足A<=1,B!=0,A!=2,X<=1)

谓词覆盖原则(条件组合覆盖)

使每个判定表达式中条件的各种组合都至少执行一次。

生成测试输入

1.输入向量

是所有读入例程的数据实体的集合,数据的值在进入例程前必须固定。

例程输入向量的一些不同的形式:

程序的输入参数、全局变量和常量、文件;汇编语言编程中寄存器内容;网络连接;定时器。

2.谓词

决策点的逻辑函数。

3.路径谓词

与一条路径相关的谓词集(包含谓词的真值)。

4.谓词解释

用输入向量和常量来表达谓词。

5.路径谓词表达式

由输入向量及可能的常量向量构成的约束集。

6.从路径谓词表达式生成输入数据

字面意思,从路径谓词表达式生成输入数据

笔记:

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

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

相关文章

vue引入本地js文件时报错net::ERR_ABORTED 500 (Internal Server Error)

完整报错内容&#xff1a; GET http://192.168.0.000:8080/src/assets/js/websockets.js net::ERR_ABORTED 500 (Internal Server Error) 报错原因&#xff1a; js文件此时放在静态资源文件assets下 解决办法 应该放在public目录下 关联文章

15. 查看开源项目

15.1 parser.add_argument ① 像运行Tensorboar一样&#xff0c;在Terminal终端&#xff0c;可以命令运行.py文件。 ② 如下图所示&#xff0c;Terminal终端运行.py文件时&#xff0c;--变量 后面的值是给变量进行赋值&#xff0c;赋值后再在.py文件中运行。例如 ./datasets/…

msvcp140.dll重新安装的五解决方法及步骤分享(亲测可修复)

在使用电脑的过程中&#xff0c;大概率都会遇到这样的问题&#xff0c;由于找不到msvcp140.dll&#xff0c;无法继续执行代码“&#xff0c;又或者丢失msvcp100.dll&#xff0c;msvcp120.dll等等 我将和大家分享一个关于msvcp140.dll重新安装的解决方法及步骤。这对于经常遇到系…

spring安全代码学习

源代码地址 登录的时候调用整个代码的过程为&#xff1a; 1.在注入的时候&#xff0c;先运行两个Bean注入PasswordEncoder和AuthenticationManagerBean&#xff0c;然后运行configure函数 Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {…

Ceph基础知识和基础架构认识

1 Ceph基础介绍 Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统&#xff0c;根据场景划分可以将Ceph分为三大块&#xff0c;分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里&#xff0c;比较常用到的是Ceph的块设备存储&#xff0c;比如在OpenStack项目…

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了&#xff0c;如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…

恒运资本:意外!房地产板块风云突变

今天上午&#xff0c;A股震动调整&#xff0c;半导体工业链走强&#xff0c;光刻胶、国家大基金持股、先进封装等板块涨幅居前。 房地产板块开盘小幅冲高后忽然大跳水&#xff0c;之后继续跌落&#xff0c;到上午收盘&#xff0c;板块内逾30只个股跌超5%。珠江股份、首开股份、…

2023年信息安全管理与评估(赛项)评分标准第三阶段夺旗挑战CTF(网络安全渗透)

全国职业院校技能大赛 高职组 信息安全管理与评估 &#xff08;赛项&#xff09; 评分标准 第三阶段 夺旗挑战CTF&#xff08;网络安全渗透&#xff09; 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第三阶段赛题&#xff0c;内容包括&#xff1a;夺旗挑战CTF&#xff08…

京东通过RPA+智能问答,实现微信端智能客服

一 背景 由于业务发展迅速&#xff0c;服务的商家越来越多&#xff0c;目前京东的售后团队都是通过企业微信群和客户进行沟通&#xff0c;平时客户的相关问题也是在企业微信中来讨论解决&#xff1b; 但是售后团队资源有限&#xff0c;而且有的问题客户会重复问&#xff0c;周…

ATA-2022B高压放大器的电子实验案例(案例合集)

ATA-2022B是一款可放大交直流信号的双通道高压放大器。最大输出200Vp-p电压&#xff0c;输出电压范围可根据输出轨调节&#xff1b;直流偏置电压三档可调&#xff0c;连续变化最大可输出160V&#xff0c;可以实现输出非对称信号需求&#xff0c;驱动高压型负载。凭借其优异的指…

项目-IM

zk 启动类实现CommandLineRunner接口&#xff0c;重写run()方法 单聊 群聊 离线消息

uniapp 微信小程序仿抖音评论区功能,支持展开收起

最近需要写一个评论区功能&#xff0c;所以打算仿照抖音做一个评论功能&#xff0c;支持展开和收起&#xff0c; 首先我们需要对功能做一个拆解&#xff0c;评论区功能&#xff0c;两个模块&#xff0c;一个是发表评论模块&#xff0c;一个是评论展示区。接下来对这两个模块进行…

论文于祥读及复现——《Multi-level Map Construction for Dynamic Scenes》

论文祥读之——动态场景的多层次地图构建 0. 出发点&#xff08;暨摘要&#xff09;1. 引言2. 相关工作3.主要内容概括3.1 几何地图的构建3.1.1 密集点云地图和八叉图的构建3.1.2 平面地图的构建 3.2 对象地图的构建3.2.1 对象参数化和数据关联3.2.2 对象的更新与优化 4. 实验4…

数组——双指针法

双指针法 用两个同向或者反向的指针来代替两重循环。 提醒&#xff1a;不要老想着用同向双指针&#xff0c;有时候&#xff0c;相向双指针更容易解决问题。 LeetCode 27 class Solution {public int removeElement(int[] nums, int val) {int j0;for(int i0;i<nums.leng…

Hibernate(Spring-Data)3种实体继承创建表方式指南

文章目录 引言1. Hibernate 实体继承概述1.1 继承的概念和作用1.2 Hibernate 中的实体继承方式1.3 基础注解 2. 单表继承策略2.1 概述2.2 表结构设计2.3 实体类映射配置 3. 具体类继承策略3.1 概述3.2 表结构设计3.3 实体类映射配置 4. 映射超类策略(每个类一张表)4.1 概述4.2 …

vue3动态路由警告问题

{ path: "/:pathMatch(.*)*", // 必备 component: () > import("/views/error/404.vue"), }, 路由里添加

通达信接口查询持仓数据步骤(一)

股市里用到的查询通达信接口数据通常需要经历以下步骤&#xff1a; 1. 连接接口&#xff1a;首先需要使用相应的接口来连接到交易所或证券公司的服务器。这通常需要使用开发包或API提供的相关函数或方法进行连接。 2. 登录认证&#xff1a;在连接成功后&#xff0c;需要使用登录…

第八周第四天学习总结

测试linux基础并复习基础命令

含纽扣电池的产品出口澳洲需要做哪些认证?认证标准是什么?

澳大利亚含纽扣电池产品新规 01纽扣电池安全问题<<<< 在澳大利亚&#xff0c;已有儿童因为误食纽扣电池而导致死亡&#xff0c;且每月至少有一名儿童因吞咽或插入纽扣/硬币电池而严重受伤&#xff0c;导致其中一些儿童永久性损伤&#xff0c;而全世界数以百万计的…