web自动化测试(1):再谈UI发展史与UI、功能自动化测试

前言(废话)

行文前,安利下文章:《图形界面操做系统发展史——计算机界面发展历史回顾》、《再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦html

1973年4月,Xerox PARC (施乐公司帕洛阿尔托研究中心)研发出了第一台使用Alto操做系统的我的电脑,其中Alto是第一个把计算机全部元素结合到一块儿的图形界面操做系统。Xerox PARC还开发了一种名为Smalltalk的程序语言和环境,它拥有本身的GUI环境(包括了弹出菜单、视窗、图标)。前端

《乔布斯传》里,Jobs就是看到施乐开发中的实验性GUI之后,回去立刻开始搞,还从施乐挖了一波人。而后微软有在苹果公开的东西上面模仿。接着就是一部波澜壮阔的GUI发展史。java

从CS架构到BS架构。互联网发展如火如荼,推荐看下《浏览器史话中chrome霸主地位的奠基与国产浏览器的割据混战》,本人13年从Java入坑H5,可是前端的UI测试,除了前端工程师的 mocha karma jasmine 门后,就是给测试人员点点的感受。前端UI如何自动化测试呢?python

什么是自动化测试

自动化测试:把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念;git

selenium 官网给出的测试类型有:github

Types of testing

测试分类,个人印象是:单元测试(Unit Testing)、集成测试(Integration Testing)、端到端测试(E2E Testing)web

    • Acceptance testing:验收测试、接收测试。测试产品功能是否彻底。这个通常让产品把关。chrome

    • Functional testing:功能测试,测试功能是否可用。后端

    • Regression testing:回归测试,是指修改了旧代码或加入新功能,从新进行测试以确认修改没有引入新的错误或致使其余代码产生错误浏览器

    • Performance testing:性能测试,测试程序是否稳定可靠

      • load testing:负载测试,不限制软件的运行资源,测试软件的数据吞吐量上限,以发现设计上的错误或验证系统的负载能力。负载测试的目标是肯定并确保系统在超出最大预期工做量的状况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其余与时间相关的方面。负载测试是测试的一个方法,经过不断调试并发数获取性能瓶颈。好比80个并发,这个叫80用户负载测试。经过80—>180这样的并发数变化过程,就叫作性能测试。也就是说,性能测试是经过不一样的负载测试来实现的。

      • Stress testing:压力测试/强度测试,压力测试是对系统不断施加压力的测试,是经过肯定一个系统的瓶颈或者不能接收的性能点,来得到系统能提供的最大服务级别的测试。压力测试是个高压力下的性能测试。

负载测试与压力测试的区别:压力测试,就是高负载的状况下进行的,目的不是为了获取性能指标,而是想要了解系统是否稳定。这时候服务器的指标通常不超过90%。压力测试经过长时间的运行较性能测试更能容易发现内存泄露的问题。负载测试是个方法,性能测试是一个过程。

 

自动化测试分层

 

测试分层

单元自动化测试(数据处理层):

单元测试(unit testing):是指对软件中的最小可测试单元进行检查和验证。

单元的含义:单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程当中要进行的最低级别的测试活动,软件的独立单元将在与程序的其余部分相隔离的状况下进行测试,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中能够指一个窗口或一个菜单等。

单元自动化测试通常须要借助单元测试框架,如java的Junit、TestNG,python的unittest,常见的手段是code review等;

前端单元测试框架:

  • Jasmine: 自带断言(assert),mock功能

  • Mocha: 框架不带断言和mock功能,须要结合其余工具,像chai。由tj大神开发

  • Jest: 由Facebook出品的测试框架,在Jasmine测试框架上演变开发而来,集成了 Mocha,chai,jsdom,sinon等功能。

前端断言库

断言库提供了不少语义化的方法来对值作各类各样的判断。

  • chai: 目前比较流行的断言库,支持 TDD(assert),BDD(expect、should)两种风格

  • should.js:也是tj大神所写

前端集成管理工具

  • karma:负责自动化执行测试脚本,批量处理脚本,统计测试。Google Angular 团队写的,功能很强大,有不少插件。能够链接真实的浏览器跑测试用例。可以用一些测试覆盖率统计的工具统计一下覆盖率;或是可以加入持续集成,提交代码后自动跑测试用例。

接口自动化测试(业务逻辑层):

接口测试:接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。

主要检查验证模块间的调用返回以及不一样系统、服务间的数据交换,常见的接口测试工具备postman、jmeter、loadrunner等;

这里我是强烈推荐Rap,一款开源免费的接口自动化、MOCK数据自动生成、自动化测试,企业级Web接口管理工具(阿里妈妈MUX团队出品)。RAP经过GUI工具帮助WEB工程师更高效的管理接口文档,同时经过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有告终构化的API数据,可避免更多重复劳动。

安利下本身的文章:《先后端分离API设计指南 

接口测试用例

接口自动化测试收益大:由于容易实现,维护成本低,有着更高的投入产出比,是每一个公司开展自动化测试的首选。

UI自动化测试(GUI界面层):

UI层是用户使用产品的入口,全部功能经过这一层提供给用户,测试工做大多集中在这一层,常见的测试工具备UFT、Robot Framework、Selenium、Appium等;

什么样的项目适合自动化测试

性价比:按照测试金字塔模型以及投入/产出比,越向下,回报率越高;

Google的自动化分层投入占比:

  • 小测试(Unit):占比70%;

  • 中测试(Service):占比20%;

  • 大测试(UI):占比10%;

自动化测试面临的挑战:面临的最大挑战就是变化,由于变化会致使测试用例运行失败,因此须要对自动化脚本不断debug,如何控制成本、下降成本是对自动化测试工具以及人员能力的挑战。

适合自动化测试的项目

像那种作短平快而收钱的项目,自动化测试彻底是扯蛋。

功能测试为何要作自动化?

  • 功能测试存在大量的回归测试、大数据量测试。

  • 自动化测试更高效、更严格。

功能自动化测试的条件:

  • 需求相对稳定

  • 冒烟测试经过

  • 测试周期长

PC端经常使用的功能自动化测试工具

  • Selenium:开源工具集,用于回归功能测试或者系统用例说明,也可浏览器的兼容性。支持JavaScript、java、C等主流语言

  • Monkey:安装自带的UI测试工具,主要用来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。monkey命令

  • Loadrunner:商业性能测试工具,收费,功能强大,适合作复杂场景的性能测试。java编写测试用例

  • QTP(=》UFT):商业收费软件,支持web,桌面自动化测试。主要是用于回归测试和测试同一软件的新版本,支持VBScript

  • WinRunner

  • QARun

  • Robot

下篇介绍selenium:web自动化测试(2):选择selenium优点?与PhantomJS/QTP/Monkey对比

同行相关文章推荐:

前端自动化测试 https://blog.csdn.net/webyouxuan/article/details/100668081

大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试 http://www.javashuo.com/article/p-qgsasogq-cy.html

 

 

转载本站文章《web自动化测试(1):再谈UI发展史与UI、功能自动化测试》,
请注明出处:https://www.zhoulujun.cn/html/Operation/test/2017_0517_8310.html

相关文章
相关标签/搜索