Squish脚本运行太快时,单靠日志很难看清变量在哪一步变了。设置断点后,可以让测试停在指定代码行,再检查脚本变量、调用栈和AUT对象属性。
处理“Squish脚本断点怎么设置Squish脚本断点命中后变量怎么查看”,要把断点放在真正会执行的代码上。断点打在空行、注释或没走到的分支里,运行多少次都不会停。
一、Squish脚本断点怎么设置
Squish IDE支持在Python、JavaScript、Perl、Ruby和Tcl等测试脚本中调试。断点命中后,界面会自动切换到【测试调试透视图】,并显示调试、变量、控制台和AUT对象等视图。
1、在脚本编辑器中添加断点
①打开需要调试的测试用例脚本。
②找到准备暂停的可执行代码行。
③双击行号左侧的空白区域。
④确认该行旁边出现断点标记。
⑤点击【运行测试用例】重新执行。
也可以右击行号左侧区域,选择【添加断点(Add Breakpoint)】。断点必须放在可执行语句上,空行和注释行不能正常命中。
断点位置最好放在待检查代码之前。例如想看点击按钮后的页面状态,就把断点放在点击语句的下一行。放得太早,变量可能还没赋值;放得太晚,错误现场已经过去了。
2、在脚本中插入固定断点
需要长期保留某个调试位置时,也可以在代码中加入:
test.breakpoint()
脚本运行到这里会主动暂停。JavaScript同样使用test.breakpoint(),其他脚本语言按照各自语法调用。该函数的作用就是让调试器停在当前位置。
这种方式适合共享脚本、公共初始化函数或附加到现有AUT的测试。调试结束后记得删除或注释掉,不然以后跑回归测试,每次都会停在这里。
3、管理多个断点
断点多了以后,可以统一在【断点(Breakpoints)】视图中管理。
①点击【窗口】→【显示视图】→【断点】。
②查看当前脚本中的全部断点。
③取消断点前的勾选,可暂时禁用。
④选中无用断点,点击删除按钮。
⑤需要全部跳过时,启用【跳过所有断点】。
【断点】视图默认不会一直显示,也可以使用Shift+Alt+Q,再按B打开。断点被取消勾选或启用了全部跳过后,脚本不会在对应位置暂停。
不需要的断点可以先禁用,没必要马上删掉。等问题确认解决,再清理会更稳。
二、Squish脚本断点命中后变量怎么查看
断点命中后,Squish会切换到【测试调试透视图】。这时可以同时查看当前代码位置、调用层级、脚本变量和AUT对象状态。
1、在变量视图中查看当前值
①找到【变量(Variables)】视图。
②展开当前函数中的局部变量。
③查看变量名称、类型和值。
④遇到
⑤继续单步执行,观察数值变化。
【变量】视图会随着代码执行自动更新。变量进入作用域时会出现,值发生变化时会刷新,离开当前作用域后则会消失。复杂对象通常可以继续展开,查看其成员名称、类型和值。
列表、字典和对象层级比较深时,不要一次全展开,界面很快就会挤成一团。先盯住和当前失败有关的两三个变量,排查会清楚很多。
2、切换调用栈查看其他函数变量
脚本停在公共函数或封装方法中时,当前变量视图显示的是这一层函数的数据。想看调用它的上层代码,需要切换调用栈。
①在【调试(Debug)】视图中展开调用栈。
②点击需要查看的函数层级。
③等待编辑器跳到对应代码行。
④返回【变量】视图查看该层变量。
⑤点击当前栈顶,回到暂停位置。
【调试】视图会显示脚本暂停的文件、行号和完整回溯信息,点击不同栈帧即可在调用层级之间跳转。
看到变量“突然不见了”时,先看看是不是切到了另一层调用栈。它可能还在,只是不属于当前栈帧。
3、查看AUT控件的属性
脚本变量中保存了AUT对象引用时,可以在【变量】视图中展开查看。需要更完整的控件信息,则可以配合【应用程序对象】和【属性】视图。
①在【应用程序对象】中找到目标控件。
②单击控件对象。
③在【属性】中查看文本、可见性和启用状态。
④需要重新定位时使用对象拾取器。
⑤对照脚本变量确认是否指向同一个对象。
断点调试不仅能检查脚本,也可以检查正在运行的AUT内部对象。Squish的调试器和Spy工具能够查看应用对象属性,并可在暂停状态下插入验证点。
例如按钮明明出现在页面上,脚本却说找不到,这时可以查看对象名称、父对象和可见状态。比起盲目增加等待时间,这样查更快。
4、用控制台临时计算表达式
【控制台(Console)】可以在暂停时执行当前脚本语言的表达式,也能访问AUT对象、测试对象属性或补充测试日志。
可以输入简单表达式检查内容,例如Python脚本中查看列表长度:
len(resultList)
控制台适合做临时计算,不过不同脚本语言对局部变量访问的支持可能有差异,而且不支持直接修改测试脚本变量。别在这里强行改值来让用例通过,查清原始问题更重要。
三、断点不命中或变量看不到怎么排查
断点已经显示在编辑器里,脚本却一路跑完,通常和断点状态、代码执行路径或文件保存有关。
1、确认代码真的执行到该行
①把断点移到函数入口。
②检查条件分支是否满足。
③确认当前运行的是正确测试用例。
④查看调用函数是否提前返回。
⑤在附近加入临时日志再运行。
断点放在if分支里,而测试数据根本没进入这个分支,当然不会停。先往前挪几行,很快就能判断脚本从哪里绕开了。
2、检查断点有没有被禁用
打开【断点】视图,确认目标断点前面已经勾选,同时查看【跳过所有断点】是否被打开。编辑器里的断点标记还在,并不代表它当前处于启用状态。
另外要保存脚本再运行。Squish建议将“启动前保存已修改编辑器”设为【始终】或至少【提示】,避免执行到的还是旧代码。
3、变量还没有创建或已经离开作用域
断点放在赋值语句之前,变量自然不会出现。变量定义在另一个函数内部,当前函数也看不到。
可以按F6执行【单步跳过】,逐行观察变量何时出现;需要进入被调用函数时按F5;检查完成后按F8继续运行。
别连续按太快。变量刚变化就被下一行覆盖,很容易错过真正出问题的位置。
4、让测试失败时自动暂停
某些问题位置不固定,可以在【测试套件设置】中启用失败时中断。Squish会在测试失败时按照类似断点的方式暂停,还可以针对对象、图像或文字找不到的问题开启交互式调试。
这类设置适合偶发失败。等问题定位完成后可以关掉,不然批量运行时会频繁停住。
总结
“Squish脚本断点怎么设置Squish脚本断点命中后变量怎么查看”主要用于还原脚本执行现场。断点位置、调用层级和变量作用域对得上,很多对象找不到、条件判断异常和数据变化问题都会更容易看清。希望本文对大家使用Squish调试脚本和检查运行变量有所帮助。