在TESSY里做单元测试,真正容易乱掉的,通常不是不会点按钮,而是前面测试对象已经建好了,后面测试用例既没有形成稳定结构,命名也越写越散,结果一到回归、覆盖率复核和需求追踪阶段,就很难快速看清哪条用例对应哪一段行为。Razorcat官方对TESSY的定位很明确,它覆盖从项目建立、测试设计、执行,到结果分析和报告的完整流程,并且把测试组织、需求追踪、覆盖率和回归测试都放进了同一套环境里;同时,TESSY既支持在集成的CTE里系统化设计测试用例,也支持在Test Items视图里手工创建test cases和test steps。也就是说,TESSY的问题从来不只是“怎么建”,而是“怎么建得成体系”。
一、TESSY测试用例怎么建
TESSY测试用例怎么建,重点不是先把数据表填满,而是先决定当前测试对象适合走系统化设计,还是适合手工直建。因为TESSY官方本来就给了两条路,一条是用集成的CTE按Classification Tree Method设计测试用例,另一条是在Test Items视图里直接手工创建test cases和test steps。真正顺手的做法,是先按测试对象复杂度选路,再往下填数据。
1、先把测试对象边界定清
在开始建用例之前,先确认当前test object到底测什么。若函数输入输出边界清楚、分支不多、依赖简单,后面可以直接在Test Items里手工建;若存在大量输入组合、边界值、状态切换或判定条件,更适合先进入CTE,把分类、类和组合关系理出来。官方产品页明确说明,CTE是用来把功能规格系统化转换成低冗余、对错误敏感的测试用例集合的,所以测试对象越复杂,越不该跳过这一步。
2、简单对象直接在Test Items里手工建
Razorcat手册摘要已经说明,Test Items view可以手工创建test cases和test steps,而且这种方式特别适合simple test objects with a few test cases。也就是说,若当前对象只是几个参数、几条判定、少量正常和异常路径,就没必要为了形式把它先搬去CTE,再回来拆。直接在Test Items里建首条test case,再按需要补test step,通常会更快。
3、复杂对象优先用CTE先做组合设计
当输入条件之间存在明显组合关系时,手工一条条补用例很容易漏。官方产品页对CTE的说明很清楚,它是integrated graphical editor,基于CTM去构造系统化测试用例,而且可以直接把输入输出值带进TESSY测试流程。也就是说,复杂对象更适合先在CTE里把分类节点和典型场景列齐,再回到执行层。
4、建用例时同步想清test step粒度
TESSY里不是只有test case,还有test step。若一条test case内还存在初始化、调用前准备、调用后检查或多阶段状态变化,最好一开始就把step拆清,而不是后面结果一失败,再回头补动作。因为Test Items view本身就是同时组织test cases和test steps的入口,前面层级拆清,后面数据、结果和覆盖率才更容易读。这个判断建立在官方对Test Items view职责的说明之上。
5、建完以后立刻挂需求和覆盖视角
TESSY产品页明确写到,tests in detail modules、test objects and test cases可以链接到requirements,并在requirements coverage view里做覆盖分析。真正稳的做法不是先把用例写完再想追踪,而是建好test case后就把它和对应需求挂上。这样后面做回归、改需求和补覆盖时,用例不会游离在体系外。
二、TESSY测试用例命名怎么统一
TESSY测试用例命名怎么统一,关键不是把名字写长,而是让命名能同时服务三件事:快速识别、批量回归、需求追踪。官方资料虽然没有给出唯一命名模板,但它已经把collections、folders、requirements linkage、test runs和report这些组织手段放进同一套环境里,这其实就意味着命名最好和对象层级、需求来源、测试意图一起统一。
1、先固定一套命名骨架
更稳的命名骨架通常是“测试对象+场景+预期”,例如函数名、状态条件、结果方向三段式。这样做的原因很简单,TESSY后面会把test cases放进项目结构、报告和需求追踪里,如果名字只有TC_01、TC_02这类流水号,团队后期复核会很痛苦。这里的命名方法是实践建议,但它和TESSY官方强调的test organization与traceability是一致的。
2、命名里把场景语义写出来,不只写编号
编号可以有,但不应只有编号。更实用的做法是让用例名能一眼看出这是正常路径、边界值、异常输入还是状态切换。例如把“空输入”“最大值”“超范围”“CRC错误”这类场景词直接写进用例名,后面看Test Items、看报告、看需求覆盖时都会更直观。因为TESSY本来就会把test cases组织到项目和报告体系里,名字本身越有语义,后面管理越轻。
3、需求型项目把需求编号带进名字前缀
官方产品页写到test cases可以回链requirements,而且要求覆盖视图能做impact analysis of requirements changes。既然TESSY后续要承担需求变更影响分析,那么在命名里加需求编号前缀通常是有价值的。这样做的好处是,后面需求改了,不必只靠覆盖视图慢慢点,也能从命名层快速筛出受影响用例。
4、同一测试对象内保持词汇表一致
命名混乱最常见的原因,不是没有规则,而是同一个对象里一会儿写Init,一会儿写Startup,一会儿又写PowerOn。更稳的方式是给每个模块先定一份小词汇表,例如正常类、边界类、错误类、状态转换类、故障注入类分别用什么词,然后同一test object下所有test cases都按同一套词来写。这样做虽然是管理建议,但特别契合TESSY这种强调项目组织和报告输出的工具环境。
5、命名不要和目录层级抢信息
如果collections、folders已经承担了模块、变体、版本或平台维度,那么test case名字里就不必重复写三遍同样的信息。更合适的做法是让目录说清“它属于哪一类测试”,让用例名说清“它验证什么场景”。官方页面对TESSY project management的说明里已经提到collections和folders可用于建立个性化项目结构,所以命名应当和结构分工,而不是互相重复。
三、TESSY测试用例层级怎么拆
TESSY测试用例层级怎么拆,这一步不是在重复“怎么建”和“怎么命名”,而是在解决另一个更容易被忽略的问题:为什么很多团队前面用例建出来了、名字也像样,后面一到版本迭代、变体扩展和回归执行还是会越来越乱。根本原因通常不是工具不行,而是test object、test case、test step、需求和变体这几层没有被固定成清晰层级。Razorcat官方资料里,其实已经把这些层分散给了project structure、CTE、requirements coverage、variant management和test runs来承接,这意味着项目里更需要一套稳定的层级拆法。
1、先让test object只承载一个清晰职责
如果一个test object同时混进多个函数、多类状态机或多个业务责任,用例再怎么命名都会越来越长。更稳的做法是让每个test object只承载一块明确职责,这样test case就能围绕这个职责展开,而不必在名字里再去解释半天。这个思路和TESSY以modules、test objects、test cases分层组织测试的方式是一致的。
2、test case负责场景,test step负责动作
很多团队把test step当成附属项,结果一条test case里塞了大量初始化、调用和验证动作,后面失败时很难判断到底哪一步出了问题。更稳的拆法是让test case负责定义一个完整测试场景,让test step去拆这个场景中的具体动作和阶段。这样不论是看结果还是做回归,层次都会更清楚。这个判断建立在官方对Test Items view同时组织test cases和test steps的说明之上。
3、需求层和用例层不要混写在一个名字里
需求编号可以进命名前缀,但需求描述全文不适合直接挤进test case名称里。更合适的做法是让requirement link承担正式追踪,让用例名保留场景语义。因为TESSY官方已经提供requirements coverage view做链接和覆盖,所以用例名字的职责更应该是快速识别,而不是替代需求管理。
4、变体和回归放到结构层,不放到单条用例里
TESSY产品页对variant management的说明很明确,derived modules可以承接基线和派生变体,并支持向下同步变化。这说明版本差异、产品变体这类信息,更适合放在模块或变体层,而不是把每条test case都改名成Variant_A、Variant_B。把层级拆对以后,回归和变体管理会比单靠命名轻松很多。
总结
TESSY测试用例怎么建,关键是先按测试对象复杂度选对入口,简单对象直接在Test Items里建,复杂对象优先用CTE做系统化设计。TESSY测试用例命名怎么统一,关键则是让名字同时服务识别、回归和追踪,而不是只做流水号。等这两步都做顺以后,再把TESSY测试用例层级怎么拆固定下来,用例、步骤、需求和变体之间的关系就会清楚很多,后面的执行、复核和扩展也更容易稳定下来。