news 2026/4/24 9:51:52

Tessy单元测试入门:从‘Hello World’级Demo到生成你的第一份覆盖率报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Tessy单元测试入门:从‘Hello World’级Demo到生成你的第一份覆盖率报告

Tessy单元测试入门:从零开始构建你的第一个测试项目

当第一次接触单元测试工具时,那种面对复杂界面的茫然感我至今记忆犹新。Tessy作为一款专业的嵌入式单元测试工具,其功能强大但学习曲线确实不低。本文将带你用最简单的方式迈出第一步——从一个"Hello World"级别的Demo开始,在30分钟内完成从环境搭建到生成第一份覆盖率报告的全过程。

1. 环境准备与基础配置

1.1 安装Tessy

Tessy的安装过程相对直接,但有几个关键点需要注意:

  1. 访问官方下载页面获取最新安装包
  2. 运行安装向导时,建议选择默认路径
  3. 安装完成后首次启动会提示许可证配置

对于个人学习者,可以申请30天的试用许可证。企业用户则需要通过正规渠道获取商业许可证。

安装完成后,你会看到主界面分为几个主要区域:

  • 左侧是项目导航窗口
  • 中部是代码和测试编辑区
  • 右侧是各种视图切换面板

1.2 创建最小化测试项目

点击菜单栏的File > New Project,在弹出的对话框中:

  • 为项目命名(例如FirstTessyDemo
  • 指定项目存储路径
  • 保持其他选项为默认值

提示:初学者建议为每个测试demo创建独立文件夹,避免文件混乱

2. 构建最简单的测试案例

2.1 准备被测函数

我们先从一个极其简单的函数开始测试。创建一个名为demo.c的文件,内容如下:

/* 判断数值是否在指定范围内 */ int is_in_range(int value, int min, int max) { if (value >= min && value <= max) { return 1; } return 0; }

对应的头文件demo.h

#ifndef DEMO_H #define DEMO_H int is_in_range(int value, int min, int max); #endif

2.2 导入源代码到Tessy

在Tessy项目中右键点击Test Collections,选择New Module

  1. 命名为RangeCheck
  2. Sources标签页添加刚创建的demo.cdemo.h
  3. 点击Check Source验证代码解析是否成功

如果一切正常,你会在输出窗口看到Source check successful的提示。

3. 设计并执行测试用例

3.1 创建测试集合

右键点击刚创建的RangeCheck模块,选择New Test Collection,命名为BasicTests。这时Tessy会自动分析源代码,列出所有可测试的函数。

3.2 编写第一个测试用例

在TDE(Test Data Editor)视图中:

  1. 选中is_in_range函数
  2. 点击New Test Case按钮
  3. 为测试用例命名(如NormalRange
  4. 设置输入参数:
    • value = 5
    • min = 1
    • max = 10
  5. 设置预期输出(Expected Result)为1

再添加一个边界测试用例:

  • 名称:LowerBoundary
  • 输入参数:value=1, min=1, max=10
  • 预期输出:1

3.3 执行测试并查看结果

点击工具栏上的Run按钮,Tessy将:

  1. 编译测试代码
  2. 执行所有测试用例
  3. 在CV(Coverage View)中显示结果

成功的测试用例会显示绿色标记,失败的则显示红色。我们的简单示例应该全部通过。

4. 分析覆盖率与生成报告

4.1 理解覆盖率指标

切换到CV视图,你会看到类似如下的覆盖率数据:

覆盖率类型百分比
语句覆盖率100%
分支覆盖率100%
MC/DC100%

这个简单例子达到了完全覆盖,但在实际项目中很少见。

4.2 添加更多测试提升覆盖率

为了演示覆盖率分析,我们故意让测试不完整。删除LowerBoundary测试用例后重新运行,覆盖率视图将显示:

分支覆盖率: 50% 未覆盖分支: value < min的情况

这直观展示了测试的不足之处。

4.3 生成简易测试报告

Tessy提供多种报告格式,最简单的操作是:

  1. 点击菜单Report > Generate Report
  2. 选择Standard Report模板
  3. 指定输出路径为项目文件夹下的reports目录
  4. 点击Generate

报告将包含:

  • 测试用例执行结果
  • 覆盖率统计
  • 未覆盖的代码位置

5. 项目结构与最佳实践

5.1 推荐的项目目录结构

随着项目复杂度的增加,良好的目录结构能显著提高可维护性:

MyTessyProject/ ├── src/ # 被测源代码 ├── tests/ # 测试代码 ├── tessy/ # Tessy项目文件 ├── reports/ # 生成的报告 └── README.md # 项目说明

5.2 测试命名规范

清晰的命名有助于快速理解测试意图:

[被测对象]_[测试条件]_[预期结果] 示例: isInRange_NormalValue_ReturnsTrue isInRange_ValueBelowMin_ReturnsFalse

5.3 常见问题排查

当遇到问题时,可以检查以下几点:

  1. 源代码无法解析

    • 确认头文件路径正确
    • 检查编译器设置是否匹配实际环境
  2. 测试用例不执行

    • 确保测试集合已正确关联到模块
    • 检查测试用例是否被禁用(灰色标记)
  3. 覆盖率数据不准确

    • 清理并重新构建项目
    • 确认没有过滤掉任何代码文件

6. 从Demo到真实项目

6.1 逐步增加复杂度

掌握基础后,可以尝试测试更复杂的函数:

/* 计算数组平均值 */ float calculate_average(int *array, int size) { if (array == NULL || size <= 0) { return 0.0f; } int sum = 0; for (int i = 0; i < size; i++) { sum += array[i]; } return (float)sum / size; }

这个函数引入了:

  • 指针参数
  • 边界条件检查
  • 循环结构
  • 浮点运算

相应的测试用例设计也需要考虑这些方面。

6.2 测试驱动开发(TDD)实践

Tessy也支持测试先行的开发方式:

  1. 先定义函数原型(在.h文件中)
  2. 创建空函数实现(返回默认值)
  3. 在Tessy中设计测试用例
  4. 实现函数逻辑直到所有测试通过

这种方法能确保代码从一开始就是可测试的。

6.3 持续集成中的Tessy

在企业环境中,Tessy通常被集成到CI/CD流程中。基本配置包括:

  1. 创建批处理脚本执行测试
  2. 设置Tessy命令行参数
  3. 配置生成JUnit格式的报告
  4. 与Jenkins等工具集成

一个简单的执行脚本示例:

@echo off set TESSY_PATH="C:\Program Files\Tessy\bin\tessy.exe" set PROJECT_FILE=MyProject.tpr %TESSY_PATH% -x %PROJECT_FILE% -r "report.xml" -f "FullTestSuite"

7. 进阶技巧与资源

7.1 使用测试夹具(Test Fixtures)

对于需要复杂初始化的测试,可以创建共享的setup/teardown函数:

/* 在测试代码中 */ void setup() { // 初始化数据库连接等资源 } void teardown() { // 清理资源 }

在Tessy中配置这些函数作为模块的初始化和清理钩子。

7.2 参数化测试

当需要测试大量相似用例时,可以使用Tessy的参数化测试功能:

  1. 创建包含测试参数的CSV文件
  2. 在TDE中导入该文件
  3. Tessy会自动为每行数据生成测试用例

7.3 调试失败的测试

当测试失败时,可以:

  1. 查看详细的执行日志
  2. 使用Tessy内置的调试器单步执行
  3. 检查实际输出与预期的差异

注意:调试时需要确保构建配置包含调试信息

7.4 学习资源推荐

要进一步掌握Tessy,可以参考:

  • 官方文档(特别是"Getting Started"部分)
  • 内置的示例项目
  • 专业培训课程(针对企业用户)
  • 用户论坛中的案例分享
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 9:51:19

OBS多平台直播终极指南:免费实现一键多平台同步推流

OBS多平台直播终极指南&#xff1a;免费实现一键多平台同步推流 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否梦想着一次直播就能同时覆盖YouTube、Twitch、Bilibili等多个平台…

作者头像 李华
网站建设 2026/4/24 9:49:18

STM32F103C8T6 + MPU9250 + MPL:用HAL库搞定姿态解算,附完整工程代码

STM32F103C8T6与MPU9250深度整合&#xff1a;基于HAL库的姿态解算实战指南 当我们需要为无人机、机器人或可穿戴设备添加精确的姿态感知能力时&#xff0c;MPU9250九轴运动传感器与STM32的组合往往是性价比最高的选择之一。但真正将理论转化为可用的工程实现时&#xff0c;开发…

作者头像 李华
网站建设 2026/4/24 9:44:34

机器学习不平衡分类:系统性框架与实战指南

1. 不平衡分类项目的系统性框架在机器学习实践中&#xff0c;分类预测建模问题涉及为给定输入预测类别标签。当类别分布不平衡时&#xff0c;这个问题会变得尤为复杂。我处理过许多真实世界的数据集&#xff0c;发现当少数类只占总样本的1-5%时&#xff08;比如金融欺诈检测或罕…

作者头像 李华
网站建设 2026/4/24 9:44:21

ONLYOFFICE 7.5新功能实测:PDF编辑、AI插件和表格追踪,哪个最香?

ONLYOFFICE 7.5深度评测&#xff1a;三大核心功能实战对比与升级建议 在数字化办公领域&#xff0c;每一次生产力工具的迭代都牵动着效率追求者的神经。作为开源办公套件的标杆产品&#xff0c;ONLYOFFICE 7.5版本的发布带来了三项颇具突破性的功能升级&#xff1a;原生PDF编辑…

作者头像 李华