(单元)测试网站界面的方法

时间:2011-03-04 08:19:12

标签: javascript testing user-interface

我想知道测试网站“界面功能”的最佳做法是什么。

我对可用于测试界面和动态生成内容的方法感兴趣。特别是我很难弄清楚是否有可能为需要用户交互的动作创建自动化测试,或者这只是浪费时间而且我应该让一些beta测试人员做这类工作。

我会尝试举一些例子:

  1. 在您键入新问题的标题时,会出现一些“相关问题”。显然,你可以实施某种测试,告诉你你得到了正确数量的相关问题,并且它们会显示出来,但你如何测试链接的“正确性”?你会设置一组模拟问题(总是一样的),并检查返回的问题是否是一些预先建立的问题?那肯定会有用,但很难测试搜索算法的稳健性。将其他问题添加到池中会发生什么?返回的结果是否仍然“相关”?

  2. 点击某个按钮,调用JS生成一个“弹出div”,用户可以四处移动。同样,你如何自动测试这种界面?您可以测试外观,但是如何测试运动?

  3. 您有一个界面可以将文件上传到网站以嵌入您的邮件中(例如SO上的图片图标)。因此用户需要1)按下按钮2)浏览文件3)等待上传4)按OK,最后他/她将在消息中看到图像。再次,我可以看到如何自动执行上传测试(例如,尝试上传“普通”文件,然后上传一个太大,不支持的格式等等)。但是接口的使用呢?如果OKBrowse按钮由于某种原因无法正常工作,那么上传工作就没用了,在一天结束时,您仍然无法上传文件并在邮件中看到它

  4. 显然以上所有这些都是相当简单的beta测试(只是告诉一群用户测试你的网站,他们会注意到是否有任何问题),但你能做到(更重要的是你会花时间实施)对这类事情进行自动化测试?此外,在进行beta测试时,您是否会让测试人员“狂奔”并在网站上做任何他们想做的事情,或者更确切地说明您希望他们测试哪些功能。我支持第一,但我愿意接受建议。

2 个答案:

答案 0 :(得分:3)

我们在我们这里使用的是Selenium。它有一些怪癖,但总的来说它让我们极大地增加了测试覆盖率,我认为有几千个新的系统测试点击。请注意,如果这是真正的“单元”测试,可以争论。我想这取决于你的筹码。我们必须让我们的系统运行,所以它是更多的集成测试。

对于JS的纯单元测试我们使用QUnitHTMLUnit已被证明有点受欢迎,对于“中间路”测试不使用真正的浏览器但仍然给你一个DOM和诸如此类的东西。

答案 1 :(得分:1)

有些问题可以通过视觉测试来回答,并且有一个很好的框架:http://sikuli.csail.mit.edu/

它允许您期望视觉结果并以编程方式控制网页。

相关问题