繁体   English   中英

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

[英]Has anybody used SIKULI for testing their GUI-based apps?

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

GUI的引用单元测试 (在项目文档中 ):

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

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

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

它真的是一个令人惊叹的软件,非常令人印象深刻。

我正在广泛使用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(用于图像识别)tesseract-ocr(用于文本识别)之上,所以它具有令人难以置信的功率和灵活性。

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

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

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

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

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

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

对于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测试工具。

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

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

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

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

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

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

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

但是,要做到这一点需要时间。 我在两年的时间里给了它第二次拍摄,第二次我能够取得好成绩,因为我对环境比较熟悉。

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

它最大的问题是,如果你在另一台机器上运行它而不是记录它,那么记录的测试经常会失败。 它可能与基于图像比较的模式匹配有关。 可以通过给出公差值来改善匹配模式概率。 但有时候继续改变容忍度会很烦人。 我的建议是在不同平台上使用不同的图像集,最好在单个机器或VM上运行。

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

我还创建了一个简单的框架( 附加图像 )来运行测试并使用C#.Net记录结果。 可以使用任何东西来创建一个简单的测试运行应用程序。 它只需要在命令行上运行测试并检查结果。 在此输入图像描述

我在一个小团队工作,我们的测试资源有限。 有了Sikuli,我实际上节省了现有QA团队的努力,并且在将其推向主要部分之前帮助自己捕获了bug。

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

Sikuli最初需要时间沉沦。 但如果做得好,它可以节省很多努力。

以下是我对Sikuli测试自动化的惊人看法: http//pculture.org/devblogs/mirotesting/2011/06/24/using-sikuli-to-automate-miro-testing/

我有一个可靠的Miro跨平台测试套件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM