最好的web前端web自动化测试框架架是哪个?为什么

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
经常用Vue cli 构建项目但是 一直没明白
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Airbnb
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes
这个是干嘛的?
什么是单元测试,什么又是e2e测试?? 平时写代码的时候 该拿来做什么??
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
从必要性来看,我觉得不测试就像开车闯红灯,不一定会出事,但是代码量越来越大,开车的路越来越长时,总有一天会出事。
假如有个项目:
function Swiper (el, options) {
if (typeof el === 'string') {
this.el = document.getElementById(el)
this.el = el
console.log('a swiper is created')
内容:测试你项目中的单元。一个函数可以是一个单元,一个子模块可以是一个单元
目的:自动化,驱使你更好的设计(比如耦合性强的代码写单元测试时会发现很难),不耍流氓
如果没有测试类库,我想对上面的代码进行测试的话,可能会这样做:
写个demo.html,引入上面的代码
测试传元素id实例化的情况
测试传元素本身实例化的情况
测试swiper其他功能
并且最好能在控制台上console.log一些东西,告诉我当前正在测什么,测试结果是怎么样的
测试框架,就是帮助你完成上面的过程,归类测试用例,输出进度,测试结果,给出报告等。如
断言库,则是让你除了===之外,有很多其他手段去做比较,而且可读性很强,比如:this.obj.should.have.property('id').which.is.a.Number()。
相关的库有:, ,专门测http的superagent等
看Vue源码中怎么写单元测试:
Karma是一个测试工具,能让你的代码在浏览器环境下测试。需要它的原因在于,你的代码可能是设计在浏览器端执行的,在node环境下测试可能有些bug暴露不出来;另外,浏览器有兼容问题,karma提供了手段让你的代码自动在多个浏览器(chrome,firefox,ie等)环境下运行。如果你的代码只会运行在node端,那么你不需要用karma。
单元测试的目的是,将你的项目划分成小单元,每个单元测试中尽量设计case将代码逻辑中的每个分支到运行到,这样所有单元的测试跑下来,项目中的每行代码最好都被跑过一次,即覆盖率尽量去靠近100%。
如果对上面Swiper的代码只测试了:new Swiper(document.getElement('mountNode'))的情况的话,那么覆盖率就只有50%,所以要补上new Swiper('mountNode')的单元测试跑另外一个分支。
对于小项目而言,考虑到所有分支,不是难事,但是对于Vue这样的项目,做到100%的覆盖率,感觉很变态。
端到端测试,主要是测业务,绝大部分情况是指在浏览器上对某个网站进行某个的操作,比如:登录。
拿nightwatch首页例子来看:
我没有用过,但是也很容易就看出来这是在测试登录google并且输入一个关键词进行搜索业务的端到端的过程。能看到这个库提供了很多功能,来模拟人在页面上进行的操作,从而代替人的点击输入操作,来完成自动化的E2E测试。
也可以看看Vue项目中的E2E测试在测些什么东西:
有没有很熟悉,这是在对官网上的几个示例进行测试,因为页面,就是Vue的业务。
凤凰传奇:测试不是你想写,想写就能写~
写测试很花时间,可能比写项目代码更久,而且项目代码的变动,测试都要改。因此,国内绝大部分公司,没有开发人员去写测试的环境,只靠测试人员去保证软件质量。如果你在一家要求你勤勤恳恳写测试的公司里,请珍惜。
测试能改善设计,去看Martin Fowler的测试驱动一本书。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:开发者眼中最好的22款GUI测试工具 - Web前端 - ITeye资讯
相关知识库:
1.Abbot - Java GUI 测试框架
Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面。 它提供事件自动生成和验证Java GUI组件,使您能够轻松地启动,探索和控制应用程序。开发者可通过脚本和编译代码两种方式来使用Abbot框架,这就是为什么它被认为是在开发者的系统测试和QA的功能测试中都能用到的最完美的GUI测试工具。
2.EggPlant - GUI自动化测试工具
EggPlant是一个QA的GUI自动化测试工具,它是为使专业商业软件的应用程序测试和手工测试更加简单方便而特别设计的。 因为它不与底层代码进行交互,并且使用图像匹配技术与被测试的所寻找的对象级别应用程序完全不同,所以EggPlant是用于对那些出现问题的应用程序进行QA自动化测试和黑盒测试的最理想的工具,而这些出现问题的应用工具包括Flash, java, HTML, .Net, Silverlight等。
3.GUIdancer - Eclipse的GUI自动化测试工具
GUIdancer是一个用于GUI自动测试的Eclipse测试工具,这个工具强大的行为库可以用于创建Java 和 HTML应用的功能测试。 它可以让那些以前没做过编程工作的测试人员编写模块化的灵活的测试 。 创建测试只需从GUIdancer库中所需的模块拖放即可完成。
4.HP WinRunner
HP WinRunner 是一个自动化的GUI功能测试工具,它支持用户以测试脚本的形式记录和回退UI的交互。由于它能获取、验证和自动回退用户的交互,因此你可以识别缺陷和确定业务流程是否按照所设计的那样工作。
5.IcuTest - GUI单元测试工具
IcuTest是用于WPF应用程序上的GUI单元测试工具。它不仅仅是另外一个能记录和回退的自动化系统,它还可以直接与你的测试框架相结合。开发者可以通过测试代码同时进行调试来测试应用,在没有打开整个应用和个人GUI组件的情况下这种测试也是很容易的。
是用于网络测试 、自动化网络和数据提取的独特工具,它不但能记录你的工作,还能回放你那些重复的工作。它能够填充表格并自动化的下载和上传文本、图片、文件和网页,也可以轻松的将你的数据通过CSV或XML文件格式或数据库或任何其他来源导入/导出到web应用程序。
7.FitNesse
FitNesse是一个完整独立的Wiki站点——包含一个网络服务器和自动化测试工具。它完美的应用于协作验收测试,而提供详细描述系统功能的可读信息的单元测试则不是它的菜。
8.Maveryx - 开源的自动化测试框架
Maveryx是一个用于Java 应用程序功能、回归、GUI和数据驱动测试的新型自动化工具。 它不需要任何用于构建和执行测试的GUI图形,而是使用GUI对象探测器来测试GUI对象并在运行的时候通过操作控制它来进行直接识别。
QAliber是一个用于 windows操作系统平台下桌面和网络应用的免费和开源的GUI自动化测试工具。它包含一套用于 .NET下自动化开发的工具和一个无需任何编码知识技能的GUI自动化编写工具。
10.Selenium - 软件测试
Selenium是一组跨越多种平台的web应用程序自动化测试工具 。通过使用Selenium,开发人员在不需要学习任何测试脚本语言的情况下,可以很容易地使用记录/回放测试工具来编写测试。Selenium 是真正的多平台、多浏览器测试工具,提供对一些流行的编程语言的支持,包括c#、Java、Groovy、Perl、PHP、Python、Ruby和各种流行的测试框架。
11.SWTBot - 标准桌面小程序工具包
SWTBot是一个基于java的用于SWT测试的UI和功能测试工具,是一个基于Eclipse的应用程序, 它还为开发人员提供了API的阅读和编写应用程序。 这对开发者甚至所有人来说,测试UI都变成了一件极其简单的事情了。 SWTBot集成了Eclipse插件,可以记录和回放测试,并提供了ant任务。这样您就可以从CruiseControl内部运行你的构建项目或使用任何其它CI工具。
12.Tellurium - 自动化测试框架
Tellurium是一个基于web应用程序UI模块的自动化测试框架 。它是一个将各种UI元素聚合在一起的集合,代表了一种嵌套了基本UI元素格式的复合UI对象。
Watir 是一个基于Ruby网络应用的开源的网络UI测试工具。在网络应用开发中,它作为工具包被用于基于浏览器的自动化测试。
Watin 是一个用于.net的网络应用测试工具。 它用c#编程语言编写,旨在给你提供一个在IE和火狐的浏览器中使用.net进行自动化测试的简单方法。
15. Ranorex - 自动化测试工具集
Ranorex是新一代易于使用和容易理解的自动化测试工具集。 它允许开发人员通过记录UI操作而不需要编写任何代码来完成自动化UI测试。这个工具集在完全与Visual Studio兼容以后,开发人员能够很容易在 Ranorex Studio 搭建的UI测试环境下打开和测试已经存在的项目。当然,对于那些全新的项目也是一样的。
16.RIATest
RIATest是一个为 Adobe Flex应用程序设计的多平台GUI自动化测试工具 。
17.Autotest.net
Autotest.net是一个通过CLI进行内部通信的GUI测试平台。
18.Samurai网络测试框架
Samurai网络测试框架是一个生动的Linux测试环境,它预先配置好了在Web pen-testing环境下的各项功能。
Sahi是一个成熟、对测试者友好、面向商业的网络应用自动化测试工具。它通过使用代理将JavaScript插入网络页面,JavaScript会对网络应用进行自动化帮助。
loadUI是一个免费和开源的企业级负载测试工具。 它拥有一个可视化的可拖拽的界面,允许你在可交互和实时的状态下,进行创建、配置和重新分配负载测试 。
21.SWAT - 简易网络自动化工具包
简易网络自动化工具包(简称SWAT)是一个允许用户在多个浏览器中进行自动化测试的测试工具。SWAT拥有一个适当集成了UI记录和SQL工具,由C#代码写成的健壮的编辑器。
22.GTT – GUI测试工具
GTT是一个基于java swing应用的GUI测试工具。它提供了视图和模型声明两种机制来自动验证 AUT的正确性。
英文原文:
译文来自:最好的web前端自动化测试框架是哪个?为什么? - 知乎1被浏览310分享邀请回答还没有回答使用 Selenium 实现基于 Web 的自动化测试
Selenium 及其实现原理Selenium 的主要功能包括:1)测试与浏览器的兼容性:测试应用程序能否兼容工作在不同浏览器和操作系统之上。2)测试系统功能:录制用例自动生成测试脚本,用于回归功能测试或者系统用例说明。简而言之,Selenium 就是一款可以录制用户操作,帮助 Web 测试人员简化重复劳动的工具。目前为止 Selenium 有两种版本:
Selenium 1(Selenium RC,Remote Control):传统 Selenium 框架,支持多种编程语言脚本生成。但需要启动一个代理 Server 来处理用户与测试 Server 之间的通讯。
Selenium 2(Selenium Webdriver):全新自动化接口,突破了 Selenium 1 的一些限制,剔除了中间 Server,但由于写这篇文章为止自动生成脚本工具对 Selenium 2 的支持还不好,适合熟悉 Selenium API 的手写 case 测试人员使用。阅读本文读者可以学习到以下技能:
了解 Selenium 自动化测试框架的基本概念。
学会搭建应用 Selenium 自动化测试框架的环境。
搭建一个自集成的测试容器以持续测试 Selenium 测试用例。本文着重介绍传统 Selenium 1 的原理及使用方法。接下来让我们看看 Selenium 是如何调用录制脚本并实现自动测试的。Selenium 1 实现原理Selenium 引入了 Remote Control Server 这样一个代理 Server,JavaScript 脚本注入和与 Server 通讯都通过这个代理 Server 来进行。如下图所示:图 1. Remote Control 模式运行流程之所以引入这个代理 Remote Control Server 是因为“同源策略”的限制,通过这个代理服务器来“欺骗”远程 Server,达到使其以为是从同一个地方 load 代码以正确返回请求数据的效果。流程说明:
客户端建立与 selenium-RC server 的连接。
Selenium RC Server 启动一个浏览器(或是已经使用中),并注入 JS 代码
将 Selenese 代码传到客户端的 Selenium-Core 中。
Selenium-Core 翻译并解析执行用户录制的操作。
让代理 Server 进行通讯
Remote Control Server 负责跟远程 Web 应用服务器进行通讯。
操作完成,显示结果,并执行下一指令。以上就是 Selenium Remote Control 的执行原理,接下来的章节中将一步步以图例加说明的方式快速说明如何使用 Selenium 来录制脚本,导入 Java 工程,然后定期维护工程。使用 Selenium 实现自动化测试使用 Selenium IDE 录制用户操作Selenium IDE 是一个基于 Firefox 的插件,用户可以在通过这个插件将客户端操作录制成脚本并导出为 Java、c#、Ruby 等多种运行语言以便统一管理测试用例。下载 FireFox: 推荐 Firefox 5.0 以上,目前 Selenium IDE 只提供 Firefox 的插件。下载 Selenium IDE:安装插件:Tools --& Add-ons --& 将下载的 selenium-ide-1.x.xpi 文件拖入对话框即可安装。安装后可以启动 IDE 插件查看是否安装成功。图 2. 启动 Selenium IDE 插件安装后,以 IBM Systems Director 产品为例,说明如何实现“用户登录”这个测试用例。
点击录制按钮 如下图 3 中的 1
录制过程中,登录用户界面,输入用户名密码。如下图 4
然后可以通过是否包含某些字符串来验证是否登录成功。如果下图 5
回到登录 IDE 界面,查看已录制步骤 如图 3 中的 2
在 IDE 界面中可以验证录制的脚本,必要时回到第四步,如图 3 中的 3在 IDE 中重运行录制的脚本通过就说明脚本没问题,可以用于测试用例代码导出了。图 3. Selenium IDE 录制窗口图 4. 录制过程中,输入用户名密码图 5. 通过确认是否包含某些文字来验证是否成功登录使用 Selenium IDE 导出 JUnit 测试用例在 Selenium IDE 中执行成功后,就可以把测试脚本导出成 JUnit 测试用例了,如图 6 所示:图 6. 导出 JUnit 代码导出用例如下:清单 1. VerifyLogin.java import com.thoughtworks.selenium.*;
import org.junit.A
import org.junit.B
import org.junit.T
public class VerifyLogin extends SeleneseTestCase {
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "localhost:8422/");
selenium.start();
public void testVerifyDirectorLogin() throws Exception {
selenium.setTimeout("300000");
selenium.open("/ibm/console/logon.jsp");
selenium.type("id=j_username", "test");
selenium.type("id=j_password", "test");
selenium.click("id=other");
selenium.waitForPageToLoad("300000");
verifyTrue(selenium.isTextPresent("IBM Systems Director"));
public void tearDown() throws Exception {
selenium.stop();
}说明:首先实例化一个 DefaultSelenium 对象,传入的参数分别是 RC 服务器 IP、端口、浏览器类型和待测试的 Server 的信息。然后在测试方法里调用 Selenium 1 的 API,这里的代码完全由 IDE 生成,就为我们省去了很多重复代码工作。运行测试用例:有了基于 JUnit 的运行测试用例就可以把它导入到 Java IDE 中执行测试了。执行中既需要客户端驱动支持(用于 Eclipse 编译),也需要启动 RC Server:Selenium RC Server 下载:Selenium Client Driver:执行命令 java –jar selenium-server-standalone-2.5.0.jar 启动 Selenium RC Server:图 7. 启动 Selenium RC Server启动后就可以直接在 Eclipse 中运行测试用例,RC Server 就会启动新窗口并自动按照录制脚本进行测试。并可在 Eclipse 中查看运行结果。下面让我们看看怎样脱离 Eclipse 自己搭建一个可以持续测试的容器。构建 JUnit 测试容器以持续测试 Selenium 的测试用例我们搭建的这个容器可以检测某个文件夹里所有的测试用例自动运行 JUnit 代码进行测试。如果需要还可以将这个容器合并到持续集成环境里,以达到不间断持续功能性测试的需求。在这里我们会用到 Ant 工具。可以在这里下载:Ant 下载:基础架构图 8. 基于 Selenium 的 JUnit 的测试容器架构图可以看见测试人员的工作如紫色箭头所示,而自动化工作如蓝色箭头所示。这套框架的意义在于,它能自动识别测试用例,并读取配置文件以测试套件运行不同的测试用例。它还可以被合并到项目持续集成软件中,定期地持续进行基于 Web 的功能性测试,并将报告以邮件形式通知管理人员。说明:
由测试人员录制脚本并导出 JUnit。
测试人员修改配置文件,将测试用例包含在测试套件中。
合并在持续集成软件后,框架会定期检测配置的测试套件
逐个加载测试用例。
以测试套件为单位其执行所有测试用例。
执行完成后将测试套件的结果报告以邮件形式通知管理人员实现这套框架最关键的当属 Ant 执行脚本了,也是程序执行的入口。这里列出 Ant 的运行脚本,以供读者参考:清单 2. Build.xml以下为部分重点内容,会在后面加以说明。完整的 build.xml 请查看附件。
&?xml version="1.0" encoding="UTF-8"?&
&project name="automationtesting" default="run" basedir="."&
&!-- 调用 Junit task 运行测试用例--&
&mkdir dir="${xml}/${var}" /&
&junit printsummary="yes"&
&classpath&
&fileset dir="${lib}"&
&include name="**/*.jar" /&
&/fileset&
&pathelement path="${classpath}" /&
&/classpath&
&batchtest todir="${xml}/${var}"&
&filelist refid="casesToBeRunning"&&/filelist&
&formatter type="xml" /&
&/batchtest&
&!-- 调用 Junitreport task 生成报表--&
&junitreport todir="${reports}"&
&fileset dir="${xml}/${var}"&
&include name="TEST-*.xml" /&
&/fileset&
&report id="${var}_Report" format="noframes" todir="${reports}/html"&
&param name="TITLE" expression="Automation Testing Results for ${var}" /&
&/junitreport&
&!-- 调用 mail task 发送邮件--&
&mail mailhost="xx.xx.xx.xx" subject="${reportResult} Result for TestSuite: ${var}"&
&from address="AutomationTestTool" /&
&to address="xxxx@" /&
&message mimetype="text/html" src="${reports}\html\Testsuite-report-${var}.html"&
&/message&
&fileset dir="${reports}\html"&
&include name="Testsuite-report-${var}.html" /&
&include name="Testcase-reports-${var}.zip" /&
&/fileset&
&/project&说明:程序的入口是 Run task,在 Run task 里先是编译整个工程,然后读取 TestSuites.xml 配置文件,循环执行每一个测试套件。过程中,以此执行以下操作:
读取配置的并且实现 TestCase 的 Java 类;
调用 Ant 的 junit task 执行测试用例;
调用 Ant 的 junitreport task 生成报表;
调用 Ant 的 mail task 发送报表到指定邮箱。清单 3. TestSuites.xml 配置文件样例 &TestSuites&
&TestSuite enable="false" id="DiscoverTestSuite"&
&Testcase&VerifyLogin&/Testcase&
&Testcase&DiscoverDevice&/Testcase&
&/TestSuite&
&TestSuite enable="true" id="DeleteDeviceTestSuite"&
&Testcase&VerifyLogin&/Testcase&
&Testcase&DeleteDevice&/Testcase&
&/TestSuite&
&/TestSuites&说明:配置文件中定义了两个测试套件,第一个包含了 2 个测试用例,先 Login 再发现设备。第二个也包含了 2 个测试用例,先 Login 再删除设备。而第一个测试套件 enable=false 将不被执行。到此为止,一个简单的可持续测试框架就已经搭建完毕,来运行下看看结果吧运行测试组建用 ant 命令执行 Build.xml 即可运行测试框架。图 9. 工具运行时执行完成后就会将所有测试用例的结果以报告形式发送邮件到指定邮箱。图 10. 报告式样结束语本文首先介绍了 Selenium 以及 Selenium 1 的实现原理。紧接着用一个 Login 的简单例子讲述了如何去搭建 Selenium 运行环境,并将其导出为 JUnit 代码。最后构建了一个基于 Ant 的自动化测试 Selenium 框架,持续地对生成的 JUnit 测试用例进行管理以及功能性测试。读者也可以借鉴该脚本搭建自己的轻量级的单元测试框架。目前主流的 web 自动化测试框架还有 QTP,基于 Ruby 的 WATIR。与这些框架相比,Selenium 支持 IE、Mozilla Firefox 等多种浏览器,同时支持自动录制脚本以及 Java、C#、Ruby 等多种运行语言的自动生成,测试用例制作快捷,运行也比较快速。对于较为轻量级相比起来 Selenium 要显得更为灵活实用。Selenium 不仅用于功能性测试及回归测试,同时也可用于 Web 可视化验收测试。更多的,Selenium 可集成在诸如 Cruise 持续集成软件中,为整体项目提供更大集成测试范围。
下载资源 (build.zip | 2KB)相关主题
参考 首页,查看关于 Selenium 的最新版本和最新技术。
参考 ,查看 Selenium 1 和 Selenium 2 的基础架构和 API 使用方法。
“”(developerWorks,2012 年 6 月):Selenium 是专门设计来在许多平台上实现 Web 应用程序测试自动化的工具套件。通过套件中的 Selenium Grid,您可以将您的测试透明地分发到多个主机上。在本文中,您将了解如何并行地执行测试,减少运行浏览器测试套件所需要的时间。通过真实的测试项目和代码示例,学习如何在多个环境中并行地执行测试和加快 Web 应用程序的测试速度。“”(developerWorks,2011 年 11 月):现在,越来越多的在敏捷开发中引用了 Selenium IDE 进行浏览器测试的辅助,但在 Selenium RC Server 被开发之后,并没有引起广大企业级应用开发者的重视,本文将介绍该组件的工作原理、如何将其引入我们的测试中、并将笔者在实际应用中所碰到的难题与读者进行分享。“”(developerWorks,2012 年 3 月):本文的意图是通过一个新的视角颠覆传统理念上的串行自动化测试方式,向读者详细介绍了利用 STAF 以及 Selenium 实现的并行式的自动化测试框架,以及为整个项目所带来的优势 。:通过专门关于 Web 技术的文章和教程,扩展您在网站开发方面的技能。:这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。,这是有关 Web 2.0 相关信息的一站式中心,包括大量 Web 2.0 技术文章、教程、下载和相关技术资源。您还可以通过
栏目,迅速了解 Web 2.0 的相关概念。查看 ,了解更多和 HTML5 相关的知识和动向。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Web development, Java technologyArticleID=835187ArticleTitle=使用 Selenium 实现基于 Web 的自动化测试publish-date=

我要回帖

更多关于 python自动化测试框架 的文章

 

随机推荐