是否有任何理由自动化专注于GUI的测试(而不是其下的内容)?在我看来,GUI(及其中的变化)应始终由真人测试。
自动GUI聚焦测试可以获得什么?我自己的经验是,GUI聚焦测试几乎总是打破,因为有人为了一个很好的理由改变了一些东西。他们似乎很少发现任何有趣的东西。
答案 0 :(得分:4)
这是一个艰难的。只要GUI不会发生太大变化,自动化测试工具和框架就能很好地完成工作,非常值得花时间和精力。自动化测试的问题在于,当您最需要它时,它会精确地分解:当GUI在开发周期中快速变化时。
因此,我已经为我领导和管理的项目采用了混合方法。我喜欢在开发周期中快速变化的GUI区域使用手动测试。一旦事情非常稳定,我们会进行某种自动GUI测试(例如Selenium for web apps),我们将这些测试放入构建过程中以防止未来的回归。如果可能的话,QA人员会编写自动化测试。当自动化工具代码过于密集时,开发人员有时必须与QA测试人员配对才能执行此操作。
这种混合方法似乎运作良好,只要我们使用良好的设计实践来正确分离关注点,以便单元测试可以正确地运用所有基础逻辑。您必须避免的一件事是将应用程序逻辑编织到GUI层中。
答案 1 :(得分:2)
取决于。
如果您的GUI是一个相对较薄的业务逻辑层,并且GUI中的小错误对您的业务并不重要,那么您可能会选择不花时间在单元测试中测试您的GUI。那个时间也许可以更好地投入到测试更关键的代码中。
如果您的GUI非常复杂并且是您应用程序的一大卖点,那么您可能希望花时间自动和手动测试它。自动测试并不能完全取代手动测试,因为您仍然需要人工测试人员确保GUI看起来正确并且界面清晰直观。
有关测试GUI的更多信息,请参阅Wikipedia - 例如,通过记录鼠标和键输入并重放它。还有a list of software可以帮助您创建GUI单元测试。
答案 2 :(得分:0)
取决于您测试的GUI的“内容”部分。您是通过运行GUI测试来测试系统的行为,还是想测试您的GUI是否始终正确显示。
在后一种情况下,它取决于您的申请。如果布局和设计是重要的,我同意。但是,如果它是某个应用程序,其核心功能不是布局本身,那么投入时间来测试布局就没有意义了。编写GUI测试会更好,它通过使用GUI而不是某些函数调用来测试功能。这样,可以更好地模拟真实行为。
答案 3 :(得分:0)
人类非常擅长测试GUI。但它们很贵。从理论上讲,自动化测试工具至少可以降低测试UI的成本。如果您经常发布,手动UI测试时间可以很快完成。
我个人从未见过自动化UI测试工具支付他们的设置成本,对于我一直在进行的项目。他们的测试往往很脆弱,并且对布局变化反应不佳。出于这个原因,我对于对它们充满信心犹豫不决。不过,我很高兴被证明是错的。
答案 4 :(得分:0)
这是可能的。对于浏览器,您可以使用selenium等测试服,与浏览器进行交互。
答案 5 :(得分:0)
我在这种情况下的方法通常是对非GUI层进行单元测试,尽可能使用GUI的自动测试,然后手动测试剩下的任何内容。我还使用手动测试进行临时缺陷检测,以识别丢失的测试用例。
对我而言,这提供了测试覆盖率与成本的最佳比率。最终,这取决于你想要实现的目标 - 这个关键任务软件还是一个简单的应用程序,其中失败纯粹是一种不便?
答案 6 :(得分:0)
您最好先将可用性测试放在第一位。 除了你如何测试单元GUI?什么是输出?如果有人点击某些东西并得到他“最初”正在寻找的东西?什么应该被认为是一种不被接受的行为?
你将获得大量的背叛。 可用性是一个重要的词,但简单的可用性测试是雇用你的配偶(最好不是你认识的人,朋友的朋友),你可能会认为他们是应用程序的“目标受众”。穿上camtasia / camstudio(桌面录音软件,可能很适合记录他的脸)。给他一些纸上的任务(或亲自,有时纸张更好,因为你不会干扰 - 更逼真的场景)。并观察他在做什么!
如果他需要帮助,那么你会看到未来发展的关注部分。 永远不要试图影响这个人告诉他的事情,“但看这里是这个按钮,我认为这样更方便”。
您将获得更好的此类测试输出,而不是浪费您的时间进行计算机到计算机测试。 GUI是人与计算机之间的接口。单元测试gui就像试图解析你刚刚写完的书,看看它是否有用。 当然它会消除拼写检查错误,但它是一个非常小的东西 - >与书的真实目标相比。
答案 7 :(得分:0)
是的,当然GUis应该有自己的单元测试。请参阅示例IcuTest。
问题是GUI测试 很复杂。一旦你解决了,世界就是你的。
答案 8 :(得分:0)
如果您在GUI测试中有重复的单调任务,并且需要为多个浏览器和操作系统组合执行此操作,那么GUI的自动化是值得的。通过维护技术,可以回答着名的问题“UI更改将使自动化无关”。