测试:如何测试这个观点包含所需数据(Testing: How to test that view c

2019-07-29 11:10发布

说一个厨师可以使食谱,以及各县,厨师可以创建必须由主厨批准食谱。

要测试的是,当主厨看待她的主页上,她看到她自己创造的食谱。 你也想测试她看到有食谱,等待她的批准。

我能想到的两种方法可以做到这一点:

  1. 该视图包含某些词,如“你的食谱”和“配方等待您的批准”测试
  2. 不必要的属性添加到您使用的,这样就可以检查与“ID =配方1”或“数据为最清酒的测试= 1”的元素的html元素

我非常喜欢这两种方法。

为什么做法#1吸

  1. 令人难以置信的是脆性试验。 你想使小的更新副本每次,测试将打破。
  2. 国际化? 如何将这种方法的工作?

可能有更多的理由,但是这两个都是非常巨大的。

为什么做法#2吸

如何讨厌有多余的标记只是用于测试的缘故! 用户不应该有测试的缘故增加下载量。


什么是一个好办法这样做呢? 我很感兴趣地听到所有的任何一种语言,你觉得在任何的替代品,在我主要是想在Ruby中,测试::单位,MINITEST,RSpec的,黄瓜(虽然我的黄瓜技能是陈旧的),但如果其他语言/框架有这个想通了,我很乐意看到他们在做什么,太。

Answer 1:

使用页面范例。

短语作为人类的一种方式,你可以在步骤,在能力水平(高级别)只要有可能,并用具体的例子。 举例来说,如果我用黄瓜我可能会说:

鉴于副厨师长创造了青蛙饼配方
当厨师查找菜谱批准
然后青蛙饼的配方应该是在列表中。

这些步骤的代码中,实例或找到你要找的,特定的页面,该页面是代表页面的功能的对象。 然后,该页面可以拥有所有用户可以与页面做的事情-找食谱,食谱审批,移动到另一页,等

这样,如果你需要改变底层代码的步骤,你只需要改变它在一个地方,所有的特定页面的变化会在一起。 因为你措辞的情况下在您传送能力而言,这是不可能的,方案将需要大的变化(除非你发现你的企业需要不同的功能,你提供的那些)。

这也工作得很好了基于窗口的应用程序也与每个插件或模块是一个特定的页面。

这也是罚款,有额外的IDS只是用于测试。 有时候,设计师喜欢过使用它们。



Answer 2:

我看到至少有两个选项:

  1. 避免通过UI测试业务逻辑。 编写返回明文数据结构“服务”或“用例控制器”对象。 换句话说,你建立你的系统的API。 你的单元测试通过API访问系统。 你的UI通过相同的API访问系统,但后来应该是在视图中几乎没有逻辑。 见http://www.confreaks.com/videos/759-rubymidwest2011-keynote-architecture-the-lost-years或http://www.cleancoders.com/codecast/clean-code-episode-7/show 。

  2. 使用“ 页面对象 ”的格局。 写一个对象,它读取您的应用程序生成的HTML代码,分析它,并使得可通过干将有趣的数据。 这将创造奇迹,让您的测试代码清晰。 你的反对意见可能是因为你仍然有问题,#2。 其实,我不认为这是一个真正的问题。 如果你使用的结构HTML标记,它应该是很容易提取所需的信息。 如果您安装ID到页面的一个关键元素,它会容易得多; 在你的例子我会使用id =“我的菜谱”,并与ID内部的div一个div =“待批准”。 这应该是足够的; 什么都应该很容易找到与XPath或CSS选择器。 为什么你觉得这令人反感? 这些ID可能会被用于其他目的,如附加的行为与不显眼的JavaScript或CSS样式表附加样式有用。



Answer 3:

与2号居住,可能使用的简要评价(无国际化问题,而不是visble给最终用户):

<!-- APPROVAL -->

该SimpleTest的文件中有一个很好的对其采取:

你下一个机会,看看电路板,也许是电脑的主板你在看现在。 在大多数主板你会发现奇怪的空洞洞的,或者什么也没有连接或者是有没有明显的功能的销或孔焊点。 有机会,有些是用于扩展和变化,但其余大部分都将进行测试。

如果多余的标记少量使你的产品更容易测试和可靠的然后就与它生活!



Answer 4:

我亲自尝试,不试的意见的。 我的意思是生成的标记,因为这些测试看似是多脆弱。

相反,我专注于“数据提供者”的一面,在MVC Web框架的情况下是控制器。 只要控制器单元测试是检查什么样的数据控制器的准备盖,你是非常安全的。 您创建视图很容易通过只是运行应用程序进行测试,看看它看起来确定。

Nethertheless,有鉴于测试的一些方法。 第一种是基于“终端到终端”的测试仿真硒驱动程序。 它运行在浏览器和初始化请求您的应用程序。 测试是检查输出HTML。 测试登录到“已知”版,这意味着测试知道,目前的定位是EN,例如。

你应该基本上相结合的方法,它的工作原理使用HTML标记值(“Recipies”)以其它方式使用HTML元素的ID或类。 我不会为测试添加任何额外的标记。

你可以尝试另一种方法是认证测试。 我相信这是Ruby驱动程序为- http://approvaltests.sourceforge.net/ 。 使用审批渲染视图并保存HTML作为金主。 该测试将在视图的情况下,失败发生了变化。 它更容易实现比Selenium测试。



文章来源: Testing: How to test that view contains desired data