部分基本概念和内容:单元测试:以模块为单元来测试你的代码本身,确保你写的模块在逻辑上仍然正确。只要输入值保持不变,输出值就不应改变。前端自动化测试:界面回归测试测试界面是否正常,包括文案、图片等。功能测试包括交互逻辑和功能模块是否符合预期。性能测试页面性能越来越受到重视,在开发过程中需要持续关注性能,否则容易随着业务迭代而下滑。本文的主要内容集中于接口回归测试和功能测试。这两部分的测试工作是模拟用户的页面操作,通过查看页面状态的变化来检查功能是否正常运行:其测试过程是:DOM元素选择触发DOM元素绑定事件,检查是否绑定eventresultissymbolic期待如何做前端UI自动化测试要完成前端UI自动化测试,至少需要一个测试框架和一个断言库。工具选择Headlessinterfaceless:PhantomJS。一个脚本解释器,包括WebKit浏览器引擎和JavaScriptAPI,所以你可以运行js代码。但它不提供图形界面,其他功能与浏览器相同。例如,一些爬虫已经爬取了该网站。这个网站不是静态的,所以需要执行Js。因此,PhantomJS提供了在页面中执行代码的功能。卡斯帕斯。基于PhantomJS开发,提供与PhantomJS相同的功能,但语法更简洁。不像PhantomJS回调地狱那样讨厌。同时,与PhantomJS不同的是它直接提供了测试功能,比如远程DOM的断言测试,也可以编写功能测试套件。具体API文档参见casperjs官网。casper.start('http://www.google.fr/',function(){//打开谷歌首页,添加页面加载时的回调函数this.test.assertTitle('Google','googlehomepagetitleistheoneexpected');//检测页面标题是否为'Google',如果是,则输出第二个参数指定的字符串this.test.assertExists('form[action="/search"]','mainformisfound');//检测页面是否有选择器指定的元素,如果有则输出第二个参数指定的字符串this.fill('form[action="/search"]',{//填充form并提交,执行搜索操作q:'foo'},true);});casper.then(function(){this.test.assertTitle('foo-RechercheGoogle','googletitleisok');//校验搜索结果页面的页面标题是否正确this.test.assertUrlMatch(/q=foo/,'searchtermhasbeensubmitted');//检测搜索结果页面的url是否匹配指定的正则表达式this.test.assertEval(函数(){return__utils__.findAll('h3.r').length>=10;//自定义一个检测函数},'googlesearchfor"foo"retrieves10ormoreresults');});casper.run(function(){this.test.renderResults(true);//输出检测结果});UItestnightwatch(语法简单,可以快速上手使用强大的SeleniumWebDriverAPI对DOM元素执行命令和断言)module.exports={'DemotestGoogle':function(client){client.url('http://www.google.com').waitForElementVisible('body',1000).assert.title('Google').assert.visible('input[type=text]').setValue('input[type=text]','rembrandtvanrijn').waitForElementVisible('button[name=btnG]',1000).click('button[name=btnG]').pause(1000).assert.containsText('ol#rsoli:first-child','Rembrandt-Wikipedia').end();}};nightmare.js是一套基于phatomJS封装用于测试的HighlevelApi(非常语义化:click,refresh,goto...)。同时nightmare也是基于electron的,所以它也提供了GUI界面工具,当你使用nightmare.js进行自动化测试时,你可以看到所有模拟的用户操作yieldNightmare().goto('http://yahoo.com').type('input[title="搜索"]','githubnightmare').click('.searchsubmit');ProtractorAngular'sson,angular团队开发的端到端测试工具。它还提供了一个API,用于模拟用户操作以验证Angular健康状况。Selenium还没用过,网上有很多资料。Macaca本系列重点Appium支持ios/android/firefoxos等多个平台测试,native、h5、hybrid,所有支持jsonWireProtocal协议的脚本语言:python、java、nodejsruby??都可以写使用个案。它实际上包括:基于express的服务器用于在客户端发送/接收协议命令;作为bootstrapclient,用于向对应的UIAutomator/UIAutomation/Google'sInstrumentationTestFramework传递命令,测试框架的作用是运行测试开发者编写的脚本工具。测试框架会捕获代码抛出的AssertionError,并在控制台或网页中输出。测试框架提供了特定的测试语法,一般分为两类:TDD(测试驱动开发)和BDD(行为驱动开发)。测试框架通常提供TDD(测试驱动开发)或BDD(行为驱动开发)测试语法来编写测试用例。TDD:就是先写测试代码,再根据测试写代码。它的步骤一般是:写一个测试通过优化代码,写出最少的代码让测试重复前面的工作:mochajasmineassertion库assertion的作用是判断源代码的实际执行结果是否是与预期结果相同,不一致则抛出错误。chaichai.js提供了三种断言样式:assert、expect和should。您可以根据自己的喜好选择断言风格。具体API请参考相关文档。使用以上工具基本可以开始测试脚本的测试了。下一篇文章将介绍如何使用macaca测试混合应用。
