gpt4 book ai didi

c++ - 记录用于 GUI 测试的鼠标单击事件。什么比像素坐标更可靠?

转载 作者:可可西里 更新时间:2023-11-01 18:39:37 24 4
gpt4 key购买 nike

我一直在写一些GUI测试框架,可以通过记录鼠标和键盘事件并重放它们来记录和重放一些GUI用户场景。

当前鼠标事件记录为(press or release, (x, y))。然而,这是非常脆弱的,因为如果只有目标小部件移动了几个像素,但结构和其他一切都保持不变,测试用例就会停止工作。

执行此操作的更好方法是什么?我能想到的一些事情

  • 在小部件树及其父小部件中记录目标小部件的“树路径”。 IE。 (press or release, (top level, first child, second child, destination)),其中“子列表”是 Qt 的 QObject 子列表返回的内容。我认为这有一个缺点,即现在的测试依赖于内部代码结构。

  • 每个 可测试小部件指定一个唯一名称,并在重放时搜索具有该名称的小部件。这似乎是一个不可忽视的开销。

任何其他想法,普遍接受的“最佳”方法是什么?

最佳答案

规范

测试用例在多大程度上绑定(bind)到测试的特定设置以及代码更改由您决定。这本质上是您的规范有多严格的问题。

一方面,有“机械”或“愚蠢”的测试。可能是您在严格控制初始条件的情况下进行测试:在测试前预先设置了相同的初始窗口位置设置,强制执行相同的平台样式,提供相同的字体等。这是一个合理的期望如果您在小部件中切换两个按钮,或更改初始窗口/对话框大小,则测试应该会失败。

另一方面,还有“人”测试。如果从纸上阅读脚本能够在测试中成功,那么您可能希望测试成功。在这种情况下,字体、视觉元素的位置等微小变化并不重要:人类测试人员很容易适应这些变化。

这两个极端甚至可能同时适用,但适用于应用程序的不同部分,或适用于产品生命周期的不同阶段。

如果您正在为航空航天飞行管理系统设计 UI,有些方面可能需要完全“机械的”、不可适应的测试,因为规范更改未涵盖的 UI 的任何更改都将在事实上是一个错误。

如果您正在设计消费者应用程序,您可能希望在错误修复或次要版本中保持规范严格,但对于主要版本可以放宽规范,例如。

测试用例和测试代码的合作

在实现更灵活、更人性化的测试时,需要测试代码或测试用例生成过程或两者的一些合作。

测试用例生成过程(测试脚本、人等)具有关于特定事件含义的重要知识。例如,点击一个通用按钮实际上是针对按钮的中间——那么按钮的事件区域是否有圆角对点击没有反应就没有关系了。单击也可能指向标记为“确定”的按钮,无论该按钮位于特定平台上按钮栏的右侧还是左侧。

被测试的代码还具有关于特定事件分类的重要知识。例如,如果单击是在绘画程序的 Canvas 上单击,则单击的坐标本身可能很重要。否则,重要的可能是小部件中的特定视觉元素,而不是其确切坐标。在后一种情况下,由于平台样式或代码更新而导致的小部件外观更改可能会使相对坐标过时。

关于c++ - 记录用于 GUI 测试的鼠标单击事件。什么比像素坐标更可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21676930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com