当前位置: 首页 > news >正文

TESSY创建以及设计一个测试用例

我们以tessy5.1 IDE为例,给大家展示编写一个测试用例的过程。

还不会创建工程的,可以参考以下这篇文章:

       TESSY创建单元测试或集成测试工程_tessy 集成测试-CSDN博客

接下来我们以这个作为开始状态进行介绍

 1、添加源文件

 

2、添加头文件路径

 3、执行分析

也选中当前模块,点击即可对工程进行分析 

如果分析成功,我们就看到源码中的函数都显示在测试module下了。先分析,再进行测试,分析过程中的问题,一定要解决。

4、外部函数打桩

可以看到下图的外部函数,有一个内圈是白色,就说明该函数虽然使用到了,但是却没有打桩(导入已有的测试用例,如果源文件添加了调用外部的接口,就必然看到)

下面看到的就是已经打了普通桩的函数

 对于需要打普通桩,还是高级桩,规则是:

      1、返回值是void型外部函数,直接右击点击 Create Stub (for current Testobject);

      2、返回值非void型,需要右键点击 Create advanced Stub(for current Testobject)

后续会给大家写一篇介绍怎么打高级桩的文章 

5、创建测试用例 

当我们看到分析后,函数前面的图标没有一个内圈是白色的或者浅黄色的,说明这个函数没有创建测试用例

这时我们就需要给这个函数创建一个测试用例了

也可以通过这个方式创建用例

下面就是已经创建了一个用例了

       当我们单击用例时,看到函数的前面的图标有一个内圈时白色的,就说明这个测试用例是空的,还没有内容,如右边的红框看到的。

6、设计测试用例

测试用例的设计,就需要根据源码来分析、设计了。

看一下void iLightOff(void)的源码

static void iLightOff(void)
{if (off == state_light)return;else{state_light = off;LightOff();}
}

可以看到,函数中有两个分支,分支走向取决于 state_light的值。所以可以设计出两条测试用例:

1、设置state_light的值为off,期望的结果是:state_light的值是off,没有调用别的函数,直接退出了;

2、设置state_light的值为on,期望的结果是:state_light的值是off,将会调用void LightOff(void),接着也退出了;

接下来按照步骤5,再创建一个测试用例,输入参数(样例可以双击选择,没有选择的直接键盘输入)

填写好输入输出的值后,点击或Ctrl+s进行保存

看到函数前面的浅黄色小圈,说明测试用例已经填写了数据;

接下来可以点击或者,执行用例了。

不过后面这个方式需要选择某一条用例后才可以操作,因为这个方式是执行选中的用例。

这是执行后,可以看到每一条用例都有一个绿色的小勾,说明用例执行成功了。

7、覆盖率

 单元测试属于白盒测试,覆盖度一般有(摘录于《软件测试的艺术》这一本书):

 1、语句覆盖;

 2、判定覆盖;

 3、条件覆盖;

4、判定/条件覆盖;

5、多重覆盖;

言归正传,接着说怎么在TESSY工具中配置覆盖率,点击测试执行绿色按钮右边的下拉小三角

选择Edit TestExecution Settings . . . ,可以对覆盖率进行设置,保存后执行。

注: 

1、None 表示不计算任何覆盖度
2、Test object only 表示只计算当前被测函数的覆盖度
3、Test object and called functions 表示计算被测函数和调用函数的覆盖度

不同的测试用例,设置如下:
  1、单元测试时,选Test object only only,覆盖度选C0,C1,MC/DC
  2、集成测试时,选T est object and called functions functions,覆盖度选CPC 和FC

现在介绍的单元测试,因此我们选择C0,C1,MC/DC,执行后结果如下:

单元测试用例的创建、设计就介绍到这里了.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 英文ai写作怎么写?5个软件帮助你轻松进行ai写作
  • 9.18学习记录
  • C++:日期类的实现
  • 20240918 每日AI必读资讯
  • GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析
  • MySQL学习(视图总结)
  • 安卓将本地日志上传到服务器
  • 高效容器化技术(1)---容器化技术简介
  • 如何快速学习拼音打字?
  • Java程序流程控制
  • 基于Linux和C++实现的RabbitMQ风格消息队列:设计与实现
  • 第二届Apache Flink极客挑战赛冠军比赛攻略_SkyPeaceLL队
  • VirtualBox 7.1.0 发布下载 - 开源跨平台虚拟化软件
  • 大数据和代理:揭示它们之间的微妙联系
  • STM32 + W5500 实现HTTPS !
  • [NodeJS] 关于Buffer
  • EOS是什么
  • ES6--对象的扩展
  • Java程序员幽默爆笑锦集
  • 大整数乘法-表格法
  • 基于 Babel 的 npm 包最小化设置
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于组件的设计工作流与界面抽象
  • 7行Python代码的人脸识别
  • AI算硅基生命吗,为什么?
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Spring Batch JSON 支持
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #pragma once与条件编译
  • #数学建模# 线性规划问题的Matlab求解
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (备份) esp32 GPIO
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 项目指定SDK版本
  • .net framework profiles /.net framework 配置
  • .NET成年了,然后呢?
  • .net对接阿里云CSB服务
  • .NET连接数据库方式
  • /run/containerd/containerd.sock connect: connection refused
  • @ResponseBody
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [100天算法】-不同路径 III(day 73)
  • [2016.7 day.5] T2
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [c++] C++多态(虚函数和虚继承)