Tessy嵌入式软件测试工具安装配置与路径设置避坑指南
Tessy这套工具做嵌入式软件测试的朋友应该都不陌生。它是Hitex现在属于Vector旗下出的单元测试和集成测试工具在汽车电子、工业控制这些对代码质量要求极高的领域几乎是标配级别的存在。我最早接触Tessy是在做BMS电池管理系统的HIL测试时当时被测控制器里跑的是基于AUTOSAR架构的C代码为了把每个软件组件的边界值、分支覆盖做扎实部门统一引进了Tessy。第一次装的时候真是被它折磨得够呛光许可证和路径配置就折腾了两天。后来换新电脑、换版本又装过几次慢慢才摸清了里头的门道。这篇文章就把我反复踩坑后整理出来的安装思路、路径设置经验和排错清单分享出来特别说明一下咱们聊的是以正规授权和许可证管理为前提的安装配置流程不是鼓励大家去搞非法的激活手段工作里用盗版工具给自己埋雷完全不划算。1. 装Tessy之前先搞清楚它到底是怎么工作的很多人拿到安装包就急着点下一步结果装完发现一堆问题。我的建议是先花点时间弄明白Tessy的定位和运行机制这样后续的很多坑其实是可以提前绕开的。1.1 Tessy不是普通软件它是一套测试工作流Tessy做的事情可以概括成三个字测C/C函数。它会把你的源代码自动解析成函数级别的测试对象然后让你在界面里配置测试用例、输入参数、桩函数Stub和期望值最后自动编译、执行并生成覆盖率报告。整个过程通常要跟编译器、调试器、目标机甚至版本管理工具联动所以它本质上是一个测试工作流引擎而不像记事本那样是个独立软件。这个定位决定了它的安装逻辑光装Tessy主程序是不够的你还得准备一套能正常工作的编译调试环境并确保两者之间能互相识别。大多数新人在安装阶段翻车不是Tessy本身坏了而是它依赖的工具链没有到位。1.2 常见的部署形态和许可机制Tessy在Windows和Linux上都有版本Windows下一般用图形界面Tessy DesktopLinux下则更多用命令行版本Tessy CLI配合自动化脚本跑回归。汽车行业里最常见的是Windows图形界面加Lauterbach调试器TRACE32来做宿主机测试和目标机测试。许可证这块Tessy走的是授权服务器机制。合法授权通常分两种浮动许可证Floating License授权装在单位的许可证服务器上多人共用客户端通过网络获取授权。单机许可证Node-Locked License授权文件绑定某一台机器的硬件信息只能在这台机器上用。安装配置的核心任务之一就是让Tessy客户端正确找到授权服务器地址或让本机授权服务正常工作。网上说的所谓“破解”本质上就是绕过这个授权检查机制——风险很大也不稳定因为Tessy的许可校验在每次版本升级时都会变化。相比之下老老实实走正规渠道跟Vector的代理商要试用License或者让公司采购正式许可才是对项目负责的态度。1.3 版本选型要结合被测代码Tessy版本很多比如Tessy 3.x、4.x、5.x甚至更新的版本。不同版本对编译器版本、调试器固件、操作系统位数的支持都不一样。选版本时不能光看新要看你的被测代码使用的编译器和调试器是否在官方支持矩阵里。比如老项目用的GCC 4.8而新版Tessy可能只支持GCC 9以上的版本这时候硬装新版Tessy在工程解析和编译阶段就会频繁报错。我个人的建议是如果项目已经有一台旧电脑能稳定运行某个Tessy版本先别急着升级新项目再考虑用新版本顺便把工具链一起升级。这样可以最大程度避免“为装新工具而改老代码”的尴尬。2. 安装前的环境准备和选型要点老话说磨刀不误砍柴工安装前的准备做得越细后面的坑越少。这一节我把我在准备阶段的检查清单和测试心得写出来供你参考。2.1 操作系统与运行库检查Tessy在Windows上通常要求64位系统Windows 10或Windows 11企业版/专业版都可以。但有几个要注意的地方系统用户名和路径不能有中文。Tessy对路径中的非ASCII字符支持一直不太友好——我见过同事用“.\测试项目\”当工作区路径结果编译步骤怎么都过不去改成拼音目录后立刻正常。这一点请务必记住。需要安装Visual C Redistributable运行库。Tessy的界面和底层库依赖VC运行时如果系统是精简版或Ghost版缺这个库会导致界面闪退或启动报错。.NET Framework版本不要太老。Tessy图形界面的部分模块需要.NET 4.5以上Win10自带一般没问题Win7的话要特别注意补丁打全。如果你在Linux下安装那么发行版版本和glibc版本都要提前查一遍Ubuntu 18.04和Ubuntu 20.04之间就可能因为glibc版本差异导致安装失败。另外命令行的输出编码也要小心Tessy CLI默认使用UTF-8如果一个项目的源码是GBK编码解析时就会产生乱码路径和函数名。2.2 配套工具链的准备Tessy要编译测试代码所以你必须提前装好编译器。常见组合宿主机测试Host Test用PC自带的编译器比如MinGW GCC、MSVC或者Sourcery CodeBench。Tessy其实是把桩函数、测试驱动代码和你写的被测函数放在一起编译生成一个可执行文件然后在这个可执行文件里跑测试框架。目标机测试Target Test用交叉编译器比如针对PowerPC、ARM、Renesas RH850等平台厂商提供的编译器。这时Tessy需要通过调试器比如Lauterbach TRACE32、PLS UDE下载到目标板跑完后读回覆盖率数据。我的经验是先把编译器通路验证好。也就是在Tessy环境里你单独执行那个“编译并链接”的命令应该能成功生成可执行文件再说测试配置的事。如果这一步都不过Tessy报错会很让人头大。2.3 内存和硬盘比你想象的要吃资源Tessy在解析大型C文件、生成覆盖率数据时内存占用相当可观。我之前测一个单文件两万行C代码的模块Tessy进程占内存超过了4GB连接到TRACE32跑覆盖率时最高干到过8GB。所以装Tessy的机器内存建议至少16GB少于8GB的话解析和覆盖率合并那步分分钟卡到你想砸电脑。硬盘建议留至少50GB的剩余空间因为Tessy会在工作区里生成中间文件、编译产物、测试报告一个中型项目的工作区经常能膨胀到10多个GB。放在机械硬盘上的话首次解析一个大型工程可能得等几分钟如果换成NVMe固态体验会好非常多。2.4 许可证服务器规划前面说到了浮动和单机两种许可安装时有一个常见误区装完主程序后不装许可证客户端直接打开软件结果报“Cannot find license”。实际上绝大多数情况下你不需要自己装许可证服务只要确保Tessy的许可证配置指向正确的服务器IP和端口默认一般是某个固定端口或FLEXlm服务端口并且在防火墙里放行对应端口就行。如果你是个人电脑上使用想申请Tessy的试用许可那就要按照官方流程走提供你的电脑主机名、MAC地址物理网卡地址不是无线网卡的随机地址等信息拿到许可文件之后放到指定目录。这里不得不吐槽一句Tessy的许可文件和机器码绑定机制非常死板一旦你换网卡比如加了USB无线网卡或者更新了主机名可能就得重新申请授权。所以建议授权绑定的电脑BIOS里的网卡别随便换。3. 安装全流程拆解从双击安装包到正常打开这一节是操作实录。我以Windows 10环境、Tessy 4.x版本的安装为例把过程拆成几个关键步骤每个步骤里标注容易出错的地方。3.1 安装前关闭干扰项双击安装包之前先做三件事退出杀毒软件和Windows Defender实时保护。这不是必要的但Tessy的安装过程会写注册表、启动服务、释放很多小型工具某些杀毒软件会对这些行为报毒或拦截安装到一半卡住甚至回滚的情况我都见过。最稳妥的办法装完后再开启实时保护并把Tessy安装目录添加到白名单。关闭UAC用户账户控制。UAC控制级别调低到“从不通知”再安装可以减少很多不必要的弹窗。装完记得调回来不然日常使用其他软件会被骚扰。断开非必要网络连接。如果电脑连着公司网络且Tessy安装包是网络部署的安装时可能会同步触发许可证网络探测。虽然不影响安装但会拖慢速度。3.2 安装包解压与目录选择Tessy的安装包通常是一个自解压或光盘镜像形态解压后是Setup.exe。这里有一个关键点安装目录别用默认的“C:\Program Files\Tessy”。装到带空格的Program Files目录下虽然Tessy官方说支持但我在实际使用中遇到过一些批处理脚本和编译器路径解析问题特别是用Makefile方式调用Tessy时带空格路径需要各种转义容易出错。我习惯把Tessy装到类似“D:\Vector\Tessy4x”这样的目录下全路径无空格、无中文。具体安装步骤以管理员身份运行Setup.exe。选择语言为英文Tessy没有官方中文界面选择中文语言包是没有的。安装类型选“Custom”这样可以自行决定装哪些组件。组件勾选时如果你不确定就全选。Tessy的组件之间依赖关系很紧密少装某个插件可能会导致后面加载覆盖率视图时功能缺失。安装过程中如果要求重启请先重启再接着后续配置。我做过的实测是默认全组件安装耗时大约10-15分钟装完以后安装目录大概占用3GB左右。3.3 许可证服务组件配置安装完成后桌面会出现Tessy的快捷方式但先别急着打开。先去许可证配置程序里把授权设置好。Tessy的许可证配置程序一般叫做“License Manager”或“FlexLM Configuration Utility”在开始菜单的Tessy文件夹下。打开后有两种配置方式如果你的单位有许可证服务器选择“Floating License”输入服务器主机名或IP以及端口号然后点“Apply”应用。如果你拿到的是单机许可文件选择“Node-Locked License”导入许可文件通常是一个.lic文件软件会自动校验机器码是否匹配。校验不通过会报错这时就要检查许可证文件里的HostID是否和你电脑当前网卡一致。这里有一个特别容易踩的坑Tessy在获取机器码时可能有多个网卡地址它默认取的是某一个特定的网卡一般是第一个物理网卡。如果你格式化过一次系统或者虚拟机里装过机器码会变旧的许可就失效了。所以在申请单机许可前先看License Manager里显示的HostID是什么然后把这个HostID发给供应商别自己单独看ipconfig /all两者可能不是同一个。3.4 环境变量配置合理规划路径的关键步骤配置完许可证接着设置环境变量。这步看似简单但直接决定了Tessy能否找到各类外部工具。在Windows系统属性里打开“环境变量”需要关注的变量主要有T_TESSY_HOME指向Tessy的安装根目录。这个变量很多内部脚本会用到如果不设置后续很多自动化操作会失败。T_PYTHON_HOME指向Python安装目录。Tessy 4.x以后的自动化接口依赖Python如果系统里没装Python建议装一个Python 3.6或3.8并配置此变量。注意Tessy的CLI脚本可能只兼容特定Python版本装得太新反而会报语法不兼容。PATH把Tessy的bin目录追加到PATH里这样你在命令行里就能直接调用tessy命令。设置完环境变量后最好重启一次电脑确保所有服务重新加载。不重启的话有些外部工具还是找不到路径这是我的血泪教训——当年装完没重启直接开Tessy结果编译模块一直提示找不到编译器排查半天才发现是环境变量没刷新。3.5 首次启动与工程创建工作区设置环境变量配好后双击桌面快捷方式打开Tessy。首次启动会要求你指定一个工作区目录Workspace。这个目录是用来存放Tessy工程文件、测试数据和中间产物的。我强烈建议你不要用默认的“我的文档”而是建一个独立的目录比如“D:\TessyWorkspace”。理由有三点方便备份和迁移。整个Workspace可以打包拷贝到新电脑Tessy工程打开后直接恢复全部测试上下文。避免系统盘空间膨胀。前文说了Workspace可能很大放C盘很容易把系统盘塞满。路径长度更短。Tessy内部生成的文件路径嵌套非常深如果工作区路径本身就很长一旦超过Windows的MAX_PATH限制就会出现莫名其妙的文件找不到错误。启动后建议立刻做两件事确认许可证状态界面Help菜单里的License Info显示正常的授权信息然后新建一个空工程跑一遍Tessy自带的Demo例程验证工具链是否真的通了。4. 路径设置的完整考虑为什么路径会影响Tessy的生死Tessy对路径极度敏感这几乎是所有使用者的共识。这一节专门讲路径设置因为这是标题里明确提到的内容也是实际使用中坑最多的地方。4.1 Tessy内部工作的几个关键路径在Tessy里路径概念贯穿整个测试生命周期最重要的有这么几类工作区路径Workspace Path所有工程文件的根目录。工程路径Project Path具体被测模块的工程文件所在目录。源代码路径Source Code Path被测C/C文件所在的位置可以手动添加多个路径。头文件路径Include Path编译器查找头文件时搜索的目录。这个一定要配全否则Tessy无法解析函数原型和数据结构界面上经常出现“未知类型”报错。编译输出路径Build Output Path测试代码编译后生成的中间文件和可执行文件的存放目录。报告输出路径Report Output Path测试完成后生成的HTML/XML报告存放目录。你可能会问为什么Tessy不能自动识别这些路径答案是——Tessy主要用静态分析方式解析代码它需要你明确告诉它从哪里读代码、把编译产物写哪里。它不等于IDE不能像Visual Studio那样靠解决方案文件自动推断所有依赖路径。4.2 路径设置实操我个人的组织习惯我使用Tessy时习惯按照“工程模块测试数据”三级结构来管理路径D:\TessyWorkspace │ ├── Projects │ ├── ProjectA │ │ ├── Source │ │ │ ├── src │ │ │ └── include │ │ ├── TessyTest │ │ │ ├── data │ │ │ └── report │ │ └── Build │ └── ProjectB └── Common └── StubLib在Tessy工程里设置路径时我坚持三个原则全局共享的头文件和桩函数库放在Workspace外的公共目录里用相对路径或环境变量引用避免每个工程都复制一份。编译输出路径和报告路径设置成相对路径相对于工作区这样项目从一个机器拷到另一台机器时不用改配置。源代码路径可以绝对路径因为源码往往在版本管理工具的工作副本里位置会变化但每次新checkout之后重新指定一次源码路径是常规操作。4.3 在Tessy界面里配置源码和头文件路径Tessy的路径配置入口一般在“Project”菜单或工程属性窗口里。具体做法右键点击工程名选择“Settings”进入配置界面。在“Source”选项卡中添加被测C文件可以手动输入或通过文件选择器选择。注意这里添加的是被测源文件不含测试文件。在“Include Path”选项卡中把项目里所有头文件的搜索目录加进去。原则是“宁多勿少”——多加几个无效目录最多浪费一点解析时间少加一个目录可能就直接解析失败。在“Compiler”选项卡中选择正确的编译器型号并配置编译选项比如“-stdc99”。Tessy会用这里的信息去解析代码和生成测试代码。一个重要技巧如果你在Eclipse或者Keil里能成功编译这个模块那直接把帮助里“显示完整编译命令”的内容复制出来对照着把Tessy的Include Path补齐。这个方法比一个个目录手动输入要高效得多也几乎不会漏。4.4 路径长度、大小写和权限问题路径设置时还有几个隐蔽问题Windows下路径总长度不要超过200个字符。Tessy生成的辅助文件会在你的路径后面追加几十上百个字符所以尽可能保持工作区路径短。比如“D:\TSW\ProjA”就比“D:\TessyWorkSpace\AutomotiveProject2024\ControllerSoftware”安全得多。Windows文件系统不区分大小写但Tessy内部部分脚本可能要求头文件路径里的实际文件名大小写与磁盘完全一致。如果遇到头文件找不到查一下是不是大小写不匹配。工作区目录需要完全读写权限。不要放在“C:\Program Files\”下也不要放在需要管理员权限才能写的位置。我之前见过有人把Workspace放在Program Files下结果Tessy生成测试数据时一直报权限错误。5. 常见问题排查与使用建议最后把我在安装和早期使用中遇到的典型问题整理出来做成一个速查表。这些都是被问过无数次的问题收藏这一份基本能解决大部分初期的坎。5.1 问题速查表从启动到编译逐个击破问题现象可能原因排查思路启动双击无反应运行库缺失、许可证服务未启动先查Windows事件查看器里有没有异常记录再查VC运行库是否完整报“Cannot find license”许可证服务器地址错误、端口不通、授权过期确认License Manager配置、防火墙放行、许可文件是否在有效期内解析代码时报“Unknown Type”头文件路径不全解析器找不到类型定义把编译器完整Include路径复制到Tessy设置里编译失败提示编译器无法启动编译器路径配置错误、环境变量PATH未刷新在CMD里试着手动执行编译器命令先确编译器本身能用代码解析后函数列表为空源码文件没有正确添加或源码语法错误导致解析中止先单独编译源码排除语法问题再看Tessy日志里解析告警信息覆盖率数据为0测试代码编译了但测试可执行文件没真正跑起来检查目标机连接、调试器脚本是否正常加载可执行文件生成报告失败报告路径不存在或没有写权限确保报告输出目录存在或在Tessy里设置为自动创建打开已有工程报路径无效工程文件记录的路径是绝对路径换了机器或移动了目录手工修改工程文件里路径或重新导入工程并重新指定路径5.2 关于路径设置的一个实用技巧善用相对路径使用相对路径能极大提升工程可迁移性。在Tessy里面“相对路径”是以工作区目录为基准来计算的而不是以工程文件当前位置为基准。因此如果你所有测试数据都放在“工作区\ProjectA\TestData”那相对路径就是“ProjectA\TestData”不管工作区搬到哪里只要保持内部结构不变配置就无需改动。我之前被这个问题坑过有一次从服务器拉了一个大工程到本地因为路径变了工程里几十个文件路径全部失效。后来花了点时间把所有路径改成相对路径再把工作区整体打包换电脑、换同事环境都再没出过路径问题。5.3 与新工具链配合先跑Demo工程再跑真实工程给新手的一个实战建议拿到Tessy后先别急着拿公司代码来测先把Tessy安装目录下的Demo工程完整跑通一遍。Demo工程的好处是路径、编译器、测试用例、批处理脚本都已经配置好了你可以通过它验证工具链是否真的可用。等Demo工程跑通了再把自己手头的源码引进来这时如果还报错问题就只可能是你自己的路径配置或代码兼容性排查面一下子就缩小了。我在给团队做Tessy培训时一直强调一个“三段式”验证法第一阶段Demo工程能否编译并执行测试用例验证Tessy基本安装正确。第二阶段用自己的代码但做最简化处理——只测一个简单的无依赖函数比如计算器里的add()函数验证源码解析和基本测试链路通。第三阶段再接入真实的头文件目录、桩函数库、目标机环境逐步把复杂度加上去。很多同事跳过前两个阶段直接上真实代码结果配置了一整天也不知道到底是自己路径少了还是Tessy安装有问题白白消耗时间和耐心。5.4 习惯用CLI做回归测试当你把Tessy在图形界面下打通了以后我建议花点时间了解一下Tessy命令行接口CLI。原因是嵌入式软件的单元测试后期一定会涉及到回归测试也就是每次代码变更后都要跑一遍全部测试用例。如果在图形界面里一个个点效率太低还容易漏。Tessy支持通过命令行方式创建工程、导入测试用例、执行测试并导出报告。这意味着你可以把Tessy集成到持续集成流水线比如Jenkins里让服务器自动完成编译、测试、覆盖率统计和报告发布。我自己现在的工作流程就是本地用Tessy Desktop做用例调试代码提交后由CI服务器调用Tessy CLI跑全量回归覆盖率结果直接发到部门内部的质量看板。用CLI之前一定要先配好环境变量特别是T_TESSY_HOME和PATH里能直接找到tessy命令。然后在命令行输入“tessy -help”确认命令行帮助能正常显示。如果出现找不到Python模块的报错多半是T_PYTHON_HOME没配对或者Python版本不兼容。5.5 测试桩函数和覆盖率相关的一点建议Tessy里最锻炼人的一个功能是桩函数Stub管理。嵌入式代码的依赖特别多比如一个函数内部调用了底层寄存器读写接口在宿主机测试时根本没有硬件这时候你就得给这个底层接口写桩函数。刚开始接触Tessy的人容易在桩函数配置上走弯路给每个被调函数都写一个空桩结果测试覆盖率非常低因为很多业务逻辑在桩函数里没返回值被测函数执行不到完整的分支。我自己的习惯是先分析清楚被测函数的依赖关系把能通过输入参数直接控制的分支尽量用真实代码跑必须打桩的接口再写一个返回“正常情况”的桩然后在用例里再补几个异常场景让桩返回错误码。这样既保证了测试覆盖率又不会让桩函数数量爆炸到没法维护。特别注意桩函数的返回值必须与真实接口的数据类型保持一致否则Tessy在编译阶段会报类型不匹配错误这个错误信息往往比较隐蔽指向的并不是真正的桩函数而是某个头疼的头文件里漏了#include。5.6 频繁切换版本时的注意事项后期如果机器上装了多个Tessy版本比如一个老项目用4.2一个新项目用5.0要注意环境变量的切换。T_TESSY_HOME、PATH中的bin目录指向哪个版本决定了你跑命令行时用的是哪个Tessy。我曾经因为PATH里多个版本顺序不对导致CLI脚本调用了老版本结果生成的工程文件被老版本读了一遍再打开时封面和工程信息全部错乱。如果你有多个Tessy版本并存的场景最好给每个版本做一个独立的命令行调用批处理脚本脚本内部动态设置这个版本对应的环境变量和PATH避免互相干扰。一点个人心得Tessy这款软件功能强大但入门门槛确实被安装配置拉高了一截。我见过不少人第一次用的时候光装环境就耗了一整天甚至因为许可证和路径问题直接放弃回到手工编写单元测试的原始状态。其实只要按照这套思路来装前检查环境、理解路径体系、先跑Demo、再逐步接入真实工程整个过程是可以控制在两三个小时之内的。最后再分享一个我自己的小习惯每次配置完Tessy环境我都会把环境变量的截图、安装目录说明、License Manager的配置界面截图整理成一个内部的安装记录文档放到团队共享盘。等哪次有人在新电脑上再装Tessy直接把这份文档拉出来照着做就行省得每次从零开始回忆。这也是我写这篇文章的初衷希望它能成为你的一份参考。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →