有没有人用SIKULI来测试他们基于GUI的应用程序?

时间:2010-01-24 03:45:41

标签: java user-interface testing sikuli

SIKULI似乎有巨大的潜力。有没有人试图用这个作为测试工具?或者它更适合自动化用户操作?

12 个答案:

答案 0 :(得分:20)

引用Unit Testing for GUI(在项目Documentation中):

  

Sikuli旨在通过与junit集成来支持GUI的单元测试。可以通过单击View / Unit Test或Mac上的快捷键Cmd-U(或Windows / Linux上的Ctrl-U)打开单元测试面板。

因此,虽然我的理解是SIKULI最初的目标是GUI自动化,但它绝对可以用于GUI测试(如果您考虑GUI测试= GUI自动化+验证框架,这是密切相关的)。有关完整示例,请查看Unit testing for GUI (JEdit)(并查看图片上的assertXXX)。

事实上,我发现SIKULI在测试方面有很大的潜力,因为它似乎使编写测试非常容易,即使没有编写实际应用程序的单行(例如,仅使用一些初始模型)。 SIKULI可以成为各种测试风格的良好伴侣(BDD,验收测试等)。

这真是一款令人惊叹的软件,令人印象深刻。

答案 1 :(得分:10)

我正在广泛使用Sikuli进行UI测试自动化。我对2011年1月发现它的Sikuli派对“迟到了”。我很高兴我发现它很晚,因为虽然它早先很有希望,但我认为直到Sikuli x1.0-rc1(发生于12月) )被释放,它已准备好迎接黄金时段。

以前,我使用TestQuest和EggPlant进行UI测试自动化。在我看来,Sikuli击败他们两人。我真的相信它有可能大大改变人们如何更好地执行UI测试自动化,并将它传播给我周围的人。

正确使用Sikuli意味着您在“记录和回放”模型之后 。相反,您必须使用Sikuli开发测试自动化 - 您需要使用所有工具 - 作为软件开发任务。

我们目前正在将为EggPlant构建的UI自动化DSL(域特定语言)移植到Sikuli。我们将在DSL中利用的一个关键特性是Sikuli的文本识别功能。这将允许我们在我们产品的各种本地化版本中运行相同的脚本。

因为Sikuli建立在OpenCV (for image recognition)tesseract-ocr (for text recognition)之上,所以它具有令人难以置信的强大功能和灵活性。

答案 2 :(得分:9)

答案 3 :(得分:3)

使用Flex网络应用程序记录工作流程。花了一段时间来找出创建屏幕截图的可靠策略,但是一旦我这样做了,即使我更改了我的桌面配色方案,脚本也继续工作!当您需要单击类似控件集合中的特定控件(即复选框,输入字段)时,语法会有点尴尬。看起来唯一的方法是将find()right(); left(); inside()结合使用。似乎屏幕截图越小,检测到的越可靠。 Imo一个好的做法是在屏幕截图中只包含重要的对象,并尽可能使它们尽可能原子化,但不会损害它们的独特性。

答案 4 :(得分:3)

@jordan, Absolutley对'正确使用Sikuli'的看法意味着你没有遵循“记录和回放”模式。相反,您必须使用Sikuli开发测试自动化 - 您需要使用所有工具 - 作为软件开发任务。

我创建了一个端到端测试自动化解决方案,用于测试由全球最大的PC制造商制作的视频会议应用程序。他们不明白这是一个完整的开发项目,而不是任何猴子可以执行的点击操作。试图用动态类型语言解释编码的挑战是不可能的。

根据我的经验,最大的挑战是图像管理。我使用文件系统和configparser进行测试自动化的第一次迭代。然而,使用configparser很难实现。将来我计划使用blob。 Sikuli不支持直接从数据库中提取图像(尽管我确实有解决方法)。

使用IDE至关重要,因为Sikuli IDE无法使用和开发工具。我配置的2个IDE,NetBeans和Eclipse / PyDev都有自己的问题。它们非常适合编码,但是错误的错误,空白注入和代码丢失都使得这两者都不是理想的解决方案。我在NetBeans中编码和测试,在SikuliIDE中执行并将所有内容保存在记事本中作为备份。

尽管遇到任何困难,我仍然是Sikuli的大力支持者。 Sikuli有可能改变测试自动化,使其无需成为OO编码器即可访问整个QA社区。

答案 5 :(得分:3)

对于Sikuli较少的以开发人员为中心的测试自动化,请查看RobotFramework.org。有一个关于如何为Robot Framework制作(自定义)Sikuli测试库的教程

http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html

我也创建了一个简单的通用版本

http://code.google.com/p/simplesikuli

如果在窗口处理,GUI控件,鼠标和键盘交互方面存在Sikuli的限制,您可以使用另一个优秀的免费测试工具来补充它:AutoIt。 AutoIt本身也有局限性,当你将它与Sikuli结合使用时,它们弥补了每个工具的缺点,取代了商业级的GUI测试工具。

答案 6 :(得分:0)

以下是我对Sikuli测试自动化的精彩表现:http://pculture.org/devblogs/mirotesting/2011/06/24/using-sikuli-to-automate-miro-testing/

我为Miro提供了一个可靠的跨平台测试套件。

答案 7 :(得分:0)

我实际上正在编写一个用sikuli进行GUI测试/错误处理的框架。太棒了。

答案 8 :(得分:0)

我使用sikuli进行GUI测试,我也能将它与HUDSON集成。

答案 9 :(得分:0)

我刚刚使用Skikuli + RobotFramework发布了我自己的GUI应用程序测试框架。

SikuliFramework在Sikuli之上提供了一个面向对象的抽象,以协助交互GUI元素,例如用于GUI自动化和测试的按钮,复选框,单选按钮,窗口和对话层次结构。它还与RobotFramework紧密集成。

https://github.com/smysnk/sikuli-framework

答案 10 :(得分:0)

Sikuli基于静态图像匹配。因此它仅适用于GUI足够稳定的情况。对于动态GUI,例如包含某种随机性的动画或GUI,它不太适用。

而Sikuli只涵盖测试的视觉部分。它不知道内部状态是否确实如预期。

答案 11 :(得分:0)

我是Sikuli的粉丝,我相信它是其他测试的补充,可以节省很多手动测试工作。

但是,它需要时间才能正确解决。 我花了两年时间对它进行了第二次拍摄,并且由于我对环境更加熟悉,第二次我能够取得良好的成绩。

它带有直观的IDE和python,可以轻松扩展一些内容。 更改点击位置,设置容差并记录内容非常容易。一旦掌握了如何记录和检查文档,便可以轻松使用最少的图像并提高准确性。它可以捕获GUI中的更改并非常轻松地获得结果。等待某个事件也很容易。错误检查很容易。

最大的问题是,如果仅在另一台机器上运行而不是在记录的机器上运行,则记录的测试通常会失败。它可能与基于图像比较的模式匹配有关。可以通过给出公差值来提高匹配模式的概率。但是有时不断更改公差会很烦人。我的建议是在不同平台上使用一组不同的映像,最好在单台计算机或VM上运行。

一旦有了一套通用的工作流程,就可以建立一个包含这些常用功能的库,例如(打开-关闭-保存项目,更改设置)并在不同的脚本中使用。随着图书馆的全面发展,这变得非常容易。这也意味着您只需要在单个位置更改脚本,它就会反映在所有脚本中。

我还创建了一个简单的框架(带有图像)来运行测试并使用C#.Net记录结果。可以利用任何东西来创建一个简单的测试运行应用程序。它只需要在命令行上运行测试并检查结果即可。 enter image description here

我在一个测试资源有限的小型团队中工作。在Sikuli的帮助下,我实际上节省了现有质量检查团队的工作,还帮助自己发现了错误,然后将其推向了主要领域。

我向公司中其他团队的成员推荐了Sikuli,他们用它来生成ML模型的数据集。他们通过使用参数自动化Engg应用程序来做到这一点。

西库利(Sikuli)最初需要时间沉没。但是,如果操作正确,它可以节省很多工作。