自动化测试基本知识
一、自动化测试相关概念:
自动化测试,就是把手工进行的测试过程,转变成机器自动执行的测试过程。该过程,依旧是为了发现错误而执行。因此自动化测试的关键在于“自动化”三个字。自动化测试的内容,也就相应的转变成如何“自动化”去实现原本手工进行的测试的过程。
- 分层的自动化测试:
![v2-7d306ae1dc1a17dde9636501be30e7b0_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=5674062e-182a-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-7d306ae1dc1a17dde9636501be30e7b0_b.jpg)
传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。
70%的投入为单元测试,20%为集成、接口测试,10% 为UI层的自动化测试。
数据处理层:单元层自动化测试,就是我们平时所说的单元测试或者白盒测试,一般由开发者自己编写,QA人员接触较少。
业务逻辑层:服务层自动化测试包括模块接口测试,Web接口测试,API自动化测试也有人叫他是灰盒测试,主要是通过某种工具或者某种框架模拟请求,并对请求的返回做校验。
UI界面层:最顶端的便是UI层的自动化测试,也就是现在很多人观念中的自动化测试。UI层自动化做的方式很多,根据不同的系统,不同的架构可能会用到不同的框架或者工具。
为什么要画成一个金字塔形,则不是长方形或倒三角形呢?这是为了表示不同阶段所投入自动化测试的比例。如果一个产品从没有做单元测试与接口测试,只做UI层的自动化测试是不科学的,从而很难从本质上保证产品的质量。如果你妄图实现全面的UI层的自动化测试,那更是一个劳民伤财的举动,投入了大量人力时间,最终获得的收益可能会远远低于所支付的成本。因为越往上层,其维护成本越高。尤其是UI层的元素会时常的发生改变。所以,我们应该把更多的自动化测试放在单元测试与接口测试阶段进行。既然UI层的自动化测试这么劳民伤财,那我们只做单元测试与接口测试好了。NO! 因为不管什么样的产品,最终呈现给用户的是UI层。所以,测试人员应该更多的精力放在UI层。那么也正是因为测试人员在UI层投入大量的精力,所以,我们有必要通过自动化的方式帮助我们“部分解放”重复的劳动。
- 适合自动化测试场景:
1.任务测试明确,不会频繁变动
2.比较频繁的回归测试
3.软件系统界面稳定,变动少
4.需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
5.软件维护周期长
6.项目进度压力不太大
7.测试人员具备较强的编程能力
四、常见的自动化测试工具:
UFT=QTP HP Quick Test Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。目前用于传统行业如:银行。目前版本名为Unified Functional Testing,简称UFT。
Robot Framework 是一个基于Python可扩展地关键字驱动的测试自动化框架,使用Apache License 2.0,由Robot Framework Foundation开发和赞助。
Robot Framework被广泛地使用在端到端地验收测试以及ATDD(acceptance-test-driven development )中。
Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是Thought Works专门为Web应用程序编写的一个验收测试工具。其升级版本为Webdriver。
特点:1.基于Web,开源、免费;
- 直接运行在浏览器中,就像真正的用户在操作一样;
- 支持多种浏览器,Firefox 、IE 、Google 、Mozilla;
- 支持多语言:Python、Net、Java、Perl;
- 支持多平台:Linux、Windows、MAC;
- 对Web页面有良好的支持;
- 简单(API简单)、灵活(用开发语言驱动);
- 支持分布式测试用例执行。
- Selenium不是单独的一个工具,而是由插件、类库组成。
Selenium发展:
Selenium1.0
Selenium 1.0 = Selenium IDE + Selenium Grid + Selenium RC
Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-App的功能测试。利用Grid可以很方便地实现在多台机器上和异构环境中运行测试用例。
Selenium RC(Remote Control)是Selenium家族的核心部分。Selenium RC 支持多种不同语言编写的自动化测试脚本,通过Selenium RC的服务器作为代理服务器去访问应用,从而达到测试的目的。
Selenium RC分为Client Libraries和Selenium Server。Client Libraries库主要用于编写测试脚本,用来控制Selenium Server的库。Selenium Server负责控制浏览器行为。
所以,我们在学习Selenium1.0的时候,核心应该是学习RC,它的工作原理是这样的:
![v2-49de719bd247a9495c9765e8c4fb40bf_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=5674062e-182a-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-49de719bd247a9495c9765e8c4fb40bf_b.jpg)
Selenium 2.0
因为Selenium和Webdriver的合并,所以,Selenium 2.0由此诞生。WebDriver解决了Selenium存在的缺点(例如能够绕过JavaScript沙箱,我们有出色的API),部分原因是Selenium解决了WebDriver存在的问题(例如支持广泛的浏览器)。
Selenium 2.0 = Selenium 1.0 + WebDriver
所以,我们在学习Selenium2.0的时候,核心是学习WebDriver。它的工作原理是这样的:
![v2-3bff2c9fb5cab1b7a5e9c1c8ed5a109f_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=5674062e-182a-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-3bff2c9fb5cab1b7a5e9c1c8ed5a109f_b.jpg)
Selenium 3.0
去掉了RC,简单用公式表示为:
Selenium 3.0 = Selenium 2.0 + Selenium RC(Remote Control)
Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动。
- Selenium环境搭建,安装Selenium:
- 联网的话,直接使用pip安装selenium,命令行执行:pip install -U selenium;
- 没联网的话,解压缩selenium-X.XX.X.tar.gz把 selenium 整个文件夹放入 Python27Libsite-packages 目录下。