同一条测试单独执行能够通过,放进整组用例后却失败,问题有时出在未恢复的全局状态上。源文件中的初始赋值、测试数据和初始化函数可能在不同时间生效。处理TESSY如何设置全局变量的初始值TESSY全局变量在不同测试用例间残留如何定位,需要确认变量在调用前由谁赋值,再检查旧数据是否被覆盖。
一、TESSY如何设置全局变量的初始值
全局变量是否能够输入初值,取决于测试接口中的方向设置。以下以TESSY 5.1英文界面为例。
1、在测试接口中确定变量方向
①打开目标模块和测试对象,进入TIE测试接口编辑器,找到全局变量,核对名称、类型及所属源文件。
②点击【Passing】列。仅由函数读取的变量选择【IN】,需要输入初值并检查执行后结果的变量选择【INOUT】;仅检查输出的变量使用【OUT】。
③检查结构体成员和指针目标的数据方向。若变量设为【IRRELEVANT】,后续测试数据中不会按普通接口变量使用,应根据真实读写方式重新确认。
方向应反映函数的使用方式。函数需要读取旧值时,不能仅因最终会写入结果就将变量作为纯输出。
2、在测试步骤中填写具体初值
①进入TDE测试数据编辑器,在【Test Data】中选中对应步骤,填写全局变量的输入值;对于INOUT变量,另行填写期望输出。
②需要批量填写时,右键选择【Initialize Test Data…】,在【Initialize Values】中使用【Value】设置具体值。
③处理数组时检查【Initialize all array elements】,防止只初始化当前可见元素;处理结构体时,核对各成员的值。
④保存后执行测试,比较输入和实际输出。批量初始化可能同时改动期望值,完成后应重新核对判定条件。
3、通过用户代码准备复杂状态
涉及初始化函数、缓冲区或关联指针时,可以在用户代码中建立前置状态。
①在【Usercode Outline】中选中测试用例或测试步骤,再到【Prolog/Epilog】的【Prolog】区域填写初始化操作。
②按独立性要求选择层级:每个用例开始时恢复状态,放在用例级;每次步骤调用前都需要恢复,才放在步骤级。
③检查执行顺序。用例级Prolog之后会赋入步骤输入数据,步骤级Prolog则在输入数据之后执行,因此后者可以覆盖TDE中的值。
二、TESSY全局变量在不同测试用例间残留如何定位
先保留能够触发问题的执行顺序,再缩小到具体变量。直接给所有变量清零,容易掩盖原本缺少的前置条件。
1、比较单独执行与连续执行
①固定源码、编译选项和测试数据,分别执行用例B,以及用例A后接用例B,记录B的结果差异。
②在调试环境中观察B进入被测函数前的变量值,再查看A结束时的值,确认两者是否相同。
③交换顺序或减少前置用例,找到能够影响B的最小组合,记录目标程序是否重新启动。
顺序相关只能作为线索,还要排除外设状态及桩函数行为造成的差异。
2、检查被忽略的输入值
①在B对应步骤的【Test Data】中检查输入单元格,特别查找“none”。
②确认是否使用过右键菜单【Ignore Value】。该设置表示本步骤不赋值,可以保留上一测试步骤计算出的内容,并不表示清零。
③对要求独立执行的用例填写明确初值;对需要连续状态的步骤,保留忽略设置,并写清状态来源。
3、排查初始化代码和隐含状态
①在【Usercode Outline】中检查对象级、用例级和步骤级代码,确认初始化没有只在整个测试对象开始时执行一次。
②查看【Prolog/Epilog】中的条件判断、继承内容和桩代码,检查是否仅对部分用例执行赋值。
③追踪文件作用域static变量、桩函数计数器及指针指向的存储区。恢复指针本身不会自动恢复其目标内容。
④在生成的测试驱动或调试器中核对实际赋值位置,确认修改后的用户代码已参与本轮构建。
4、用数据模式识别错误的OUT方向
①打开测试执行对话框,在支持该功能的版本中启用【Run with test data pattern】。
②检查【Test Data Pattern】和【Test Data Alternate Pattern】配置,执行后比较模式测试与普通执行结果。
③若结果受填充值影响,检查OUT变量是否被提前读取、是否只写入部分成员或数组元素,再修正接口方向或实现。
此功能会用不同模式初始化OUT变量,帮助暴露输入依赖,不能替代其他共享状态的初始化。
三、TESSY如何验证全局状态已正确隔离
修复后既要证明独立用例不受顺序影响,也要保证状态机测试仍能保留必要的历史状态。
1、分别验证独立用例和连续步骤
①对独立用例执行单测、组合执行和顺序交换,比较函数入口状态及最终结果,确认前置条件一致。
②对连续步骤测试,检查第一步建立的状态能否传递到后续步骤。若步骤级Prolog每次都复位,应按测试目的调整层级。
③给初始化行为设置检查项,例如状态枚举、有效数据长度和计数器值,避免只凭最终返回值判断。
2、保存可复现的回归记录
①保留触发问题的用例组合,记录残留变量、原赋值位置和修复方法。
②重新构建并运行受影响的测试集,核对报告中的配置与结果,再归档测试数据及用户代码。
总结
解决TESSY如何设置全局变量的初始值TESSY全局变量在不同测试用例间残留如何定位,应把接口方向、输入数据和初始化时机放在一起检查。INOUT可以明确调用前后的状态,“none”会保留现有内容,步骤级Prolog还可能覆盖已填写的输入。修复后,通过单独执行和组合执行比较,确认独立性要求得到满足,同时保留连续步骤所需的状态。希望这些方法能帮助大家找到残留来源,让测试结果更容易复现。如有TESSY相关需求,欢迎联系我们咨询。