Unit testing 什么';硒的作用是什么?

Unit testing 什么';硒的作用是什么?,unit-testing,testing,selenium,Unit Testing,Testing,Selenium,好吧,也许我遗漏了什么,但我真的不明白硒的意义。使用代码打开浏览器、使用代码单击按钮和使用代码检查文本有什么意义?我阅读了网站,从理论上看,自动单元测试您的web应用程序是一件好事,但最终编写所有这些代码不是要花费更多的时间,而不仅仅是点击并直观地验证工作是否正常吗 我不明白…如果你的应用程序甚至有50多个页面,你需要频繁构建,并针对X多个主要浏览器进行测试,这是非常有意义的。一般来说,这是关于单元测试的常见说法。“我需要编写两倍于测试的代码?”同样的原则也适用于这里。回报是能够更改代码并知道自

好吧,也许我遗漏了什么,但我真的不明白硒的意义。使用代码打开浏览器、使用代码单击按钮和使用代码检查文本有什么意义?我阅读了网站,从理论上看,自动单元测试您的web应用程序是一件好事,但最终编写所有这些代码不是要花费更多的时间,而不仅仅是点击并直观地验证工作是否正常吗


我不明白…

如果你的应用程序甚至有50多个页面,你需要频繁构建,并针对X多个主要浏览器进行测试,这是非常有意义的。

一般来说,这是关于单元测试的常见说法。“我需要编写两倍于测试的代码?”同样的原则也适用于这里。回报是能够更改代码并知道自己没有破坏任何东西。

如果您将这些测试保存为JUnit类,您可以在空闲时重新运行它们,作为自动构建的一部分,或者使用JMeter在穷人的负载测试中。

它允许您在“单元”测试框架中编写功能测试(问题是后者的命名)

<> P>当你通过浏览器测试你的应用程序时,你通常测试系统是完全集成的。考虑到你必须在提交它们之前测试你的更改(冒烟测试),你不想一遍遍地手动测试它。 非常好的一点是,您可以自动化烟雾测试,QA可以增强这些测试。非常有效,因为它减少了重复工作,并使整个团队更加紧密

Ps作为你第一次使用的任何练习,它有一个学习曲线,所以第一次通常需要更长的时间。我还建议你看看这个模式,它有助于保持测试的整洁

更新1:请注意,测试还将在页面上运行javascript,这有助于测试高度动态的页面。还请注意,您可以在不同的浏览器上运行javascript,以便检查跨浏览器问题(至少在功能方面,因为您仍然需要检查视觉页面)

还请注意,随着测试覆盖的页面数量的增加,您可以快速创建具有完整交互周期的测试。使用页面对象模式,它们看起来像:

   LastPage aPage = somePage
      .SomeAction()
      .AnotherActionWithParams("somevalue")
      //... other actions
      .AnotherOneThatKeepsYouOnthePage(); 
  // add some asserts using methods that give you info
  // on LastPage (or that check the info is there).
  // you can of course break the statements to add additional 
  // asserts on the multi-steps story.

了解这一点很重要。如果这是一个已经构建的系统,那么您可以为正在进行的功能/更改添加测试。在这一过程中添加越来越多的覆盖范围。改为手动操作,通常会隐藏您错过的测试内容,因此如果您所做的更改影响到每个页面,您将检查子集(由于时间不允许),您知道哪些是您实际测试的,QA可以从中工作(希望通过添加更多测试).

关键是能够自动化手动和耗时测试之前的工作。是的,编写测试需要时间,但一旦编写完成,就可以按照团队的意愿随时运行。每次运行测试时,他们都在验证web应用程序的行为是否一致。Selenium不是一个完美的产品,但它非常好在自动化真实用户与浏览器的交互方面。

在过去的一项工作中,我们曾对我们的web应用程序进行单元测试。如果web应用程序改变了外观,则不需要重新编写测试。录制和重播类型测试都需要重新进行。

这一点与任何类型的自动化测试相同:编写代码可能需要比以前更多的时间“只需点击一下就可以直观地验证事情的有效性”,可能是10倍甚至50倍以上


但是,任何非平凡的应用程序最终都必须进行超过50次的测试,手动测试是一项烦人的琐事,很可能会被忽略或在压力下草率完成,这会导致错误在不久之前(或之后)才被发现重要的截止日期,这会导致紧张的通宵编码会话,甚至由于合同处罚而导致彻底的金钱损失。

如果您不喜欢Selenium方法,您可以尝试,我发现它更有用,更容易集成到现有的单元测试中。

假设您有50个页面,每个页面都有10个链接,有些页面带有多阶段的fORM要求您仔细检查表单,输入大约100组不同的信息,以验证它们是否与所有信用卡号、所有国家/地区的所有地址等一起正常工作

手动测试几乎是不可能的。它很容易出现人为错误,以至于你无法保证测试是正确的,更不用说测试证明了被测试的东西

此外,如果您遵循现代开发模式,许多开发人员都以一种断开连接的分布式方式在同一个站点上工作(例如,有些人在飞机上通过笔记本电脑在站点上工作),那么人类测试人员甚至无法访问它,更不用说有耐心在单个开发人员每次尝试新的东西时重新测试了


在任何规模合适的网站上,测试都必须是自动化的。

为什么需要硒?因为测试人员都是人。他们每天回家,不能总是周末工作,生病,休假,时不时地去度假,对重复的任务感到厌烦,当你需要他们的时候,他们也不能总是依赖于他们。


我不是说你应该摆脱测试人员,而是一个自动化的UI测试工具补充了系统测试人员。

因为你可以反复重复相同的测试。

Selenium(以及类似的工具,如Watir)允许您以计算机擅长的方式对Web应用程序的用户界面运行测试:在一夜之间或在每次源代码签入后的几秒钟内进行数千次测试。(请注意,还有很多其他用户界面测试项目人类更擅长,例如注意到一些与测试没有直接关系的奇怪事情出错。)

还有其他方法可以让l参与到整个应用程序堆栈中