<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Testcafe on 冯威的博客</title><link>https://fwhyy.com/tags/testcafe/</link><description>Recent content in Testcafe on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 08 Jul 2019 07:00:15 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/testcafe/atom.xml" rel="self" type="application/rss+xml"/><item><title>端到端测试实践：Jenkins集成TestCafe</title><link>https://fwhyy.com/2019/07/jenkins-and-testcafe/</link><pubDate>Mon, 08 Jul 2019 07:00:15 +0800</pubDate><guid>https://fwhyy.com/2019/07/jenkins-and-testcafe/</guid><description>&lt;p&gt;上一篇《&lt;a href="http://fwhyy.com/2019/07/some-thoughts-on-product-quality/"&gt;对产品质量的一点思考&lt;/a&gt;》中说到自动化测试的重要性，本文简单介绍下怎样在实际项目中实现端到端测试的自动化，在这里我们使用的端到端测试工具是TestCafe。&lt;/p&gt;
&lt;h2 id="环境"&gt;环境&lt;/h2&gt;
&lt;p&gt;Jenkisn：2.183
TestCafe：1.3.0&lt;/p&gt;
&lt;h2 id="为什么采用testcafe做自动化测试"&gt;为什么采用TestCafe做自动化测试&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;前端Vue或是netCore要添加单元测试相对较复杂，需要一定的时间来沉淀，不能解燃眉之急&lt;/li&gt;
&lt;li&gt;经常会因为代码重构、代码合并等原因造成原本正常的功能出现问题，而这些问题在手动测试时不容易覆盖到&lt;/li&gt;
&lt;li&gt;TestCafe足够简单，只要使用过jQuery，基本可以几分钟上手&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="要实现的目标"&gt;要实现的目标&lt;/h2&gt;
&lt;p&gt;目前前端代码通过GitLab来进行管理，采用Merge Request的开发模式，开发人员的代码被合并到master后，Jenkins会自动构建到测试环境，希望自动化测试能做到下面两点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能在前端项目构建完成后自动执行TestCafe脚本进行测试&lt;/li&gt;
&lt;li&gt;能提供测试的完整结果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="步骤"&gt;步骤&lt;/h2&gt;
&lt;p&gt;1、在Jenkins中新创建一个新的项目&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280613334.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Git中配置的测试的代码地址&lt;code&gt;https://github.com/oec2003/testcafe-ci-demo.git&lt;/code&gt;是我fork的官网的一个例子,原项目地址为：&lt;code&gt;https://github.com/DevExpress-Examples/testcafe-ci-demo.git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;2、增加构建步骤，选择执行Windows批处理命令&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280614319.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280614096.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;D:\Jenkins\Testcafe\node_modules\.bin\testcafe path:C:\Users\oec2003\AppData\Local\Google\Chrome\Application\chrome.exe tests/**/* -r xunit:res.xml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上面执行的命令分为三个部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;testcafe的执行程序&lt;/li&gt;
&lt;li&gt;测试的浏览器的路径，此处为chrome的路径，这里有一个小坑，直接执行命令时是可以使用chrome或ie来选择测试浏览器的，但配置在Jenkins中如果直接写chrome或ie会报异常，所以写了chrome执行程序的全路径&lt;/li&gt;
&lt;li&gt;将结果输出到xunit的xml文件中&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要想使用xunit，需要先使用下面命令进行安装&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npm install testcafe testcafe-reporter-xunit
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;3、添加构建后操作，选择Publish JUnit test result report&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280614661.webp" alt="" loading="lazy" decoding="async"&gt;

&lt;img src="https://img.fwhyy.com/2022/202201280614568.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;4、修改Jenkins中现有的前端项目的配置，增加构建后操作步骤，选择构建起他工程&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280615176.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;选择第一步创建的测试项目即可。&lt;/p&gt;
&lt;p&gt;5、实际测试结果如下，所有测试用例的通过情况以列表形式展现，点击可以看详细信息&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201280615015.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Testcafe非常简单，有一定开发经验的程序员，可以在很短的时间内达到熟练的程度&lt;/li&gt;
&lt;li&gt;Testcafe虽然简单，但怎样去设置场景覆盖，让所有业务没有遗漏，这才是比较困难的，是我们需要着重思考的&lt;/li&gt;
&lt;li&gt;前端代码如果做了修改，特别是UI层面做了调整，测试代码需要同步修改&lt;/li&gt;
&lt;li&gt;只要能够持续下去，先从容易出错的模块开始，积少成多，软件质量的最后一道防线一定能守住&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>