自动化测试理论
什么是自动化测试?
广义的:通过工具或程序替代或辅助人工测试的行为叫自动化测试
狭义的:通过工具录制或编写脚本模拟手工测试的过程,通过回放或运行脚本执行测试用例,从而代替人工对系统的功能验证。

分层自动化测试
金字塔模型:UI层,接口层,单元测试层。大多数人认为自动化测试就是产品UI自动化测试,其实不是的。UI自动化测试只是3层中的最上一层,操作简单,投入比例少,价值最低,我们倡导根据产品开发阶段分别进行自动化测试
UI层:关注模拟用户操作
接口层:关注函数,方法提供的接口是否可靠
调用函数或方法,进行传参,查看返回值是否正确。
接口测试通过url进行传递,通过get方式向服务器发起请求,服务器接收请求,返回值是否正确
单元测试层:主要关注代码实现逻辑

投入比例和价值体现
UI接口自动化:投入10%,全面UI自动化测试不现实,考虑人力,时间,资金投入,维护成本高(页面元素层级改变),价值低。但又并不可少,UI层直接呈现给用户。
接口自动化:投入20%,价值居中。
单元测试自动化:投入70%,价值最高,需求变动不大,如果有,也是直接增减用例。

自动化测试的必要性
目前测试行业的普遍现状
手工测试的人员占测试行业80%,主要还是测试入门门槛低,虽然测试人员对专业知识有一定的广度,但缺乏深度,这也是开发自认清高的原因。目前手工测试人员已经有一定的饱和,初级,门槛低,技术含量低等各种标签,那么被淘汰的可能性也会相应的增加,要想不被淘汰,那么提升自己就很有必要了。自动化测试就是一个很好的选择。

什么项目适合做自动化测试
需求变动不频繁
每一次需求变动,需要更新测试用例和测试脚本,脚本的维护本身就是一个花费时间的过程,比如修改,调试都会花很多时间。
项目周期时间长
需求的确定,测试框架的设计,用例的编写,调试需要相当的时间去完成
自动化脚本重复使用
自动化脚本根据项目本身,c/s,,b/s不同的架构,选择的自动化工具也可能不同。最重要的是脚本可以在以后的日子里重复使用,如果只是一次性的,那就失去了原本的价值。

选择什么工具做自动化测试
看你做什么项目,是桌面程序(c/s架构)web应用(b/s架构)
C/s架构 测试工具:QTP autorunner
B/s架构 测试工具:QTP Autorunner robotframework watir selenium
目前流行robotframework和 selenium,selenium支持多语言。 如果选择了selenium ,那么就需要学习一门语言,selenium支持多语言开发,java,c#,rube,python,php.

了解selenium
Selenium1.0
Selenium是一个开源的web功能测试工具。selenium核心是用javascript写的。通过javascript代码注入与浏览器进行交互。javascript全程管理测试流程,例如导入套件,执行用例,记录执行结果。Javascript与浏览器进行通信,浏览器执行,模拟用户真实的操作,包括浏览页面,点击链接,输入内容,提交表单等事务,从而达到自动化测试目的。

selenium是一个工具,这个工具分1.0,2.0,3.0,三个版本。
Selenium的组成
SeleniumIDE
一个浏览器插件,实现浏览器录制回放功能。
Selenium Grid
并行执行用例,通过一台主机控制用例在不同的环境,浏览器中运行
seleniumRC
核心,编写测试脚本,通过seleniumRC服务器作为代理服务器访问应用达到测试目的。
SeleniumRC组成
Seleniumclient,seleniumserver
seleniumclient编写测试脚本,seleniumclient库控制seleniumserver库。
Seleniumserver分launcher,http proxy,core
launcher:发射器,用于启动浏览器,把core加载到浏览器页面中,并把服务器代理设置selenium server的http proxy.
http proxy: seleniumserver 代理
Core:js函数集合

Selenium2
Selenium2=selenium1+webdriver
Selenium2核心是webdriver, webdriver取代了seleniumRC.
Webdriver和seleniumRC的区别

SeleniumRC核心是selenium Core,把core,也就是js函数,加载到浏览器页面中,使用js执行selenese命令,webdriver是使用原生api进行封装成selenium webdriver api直接控制浏览器。两者最大区别就是一个采用js代码注入浏览器页面技术,一个是用原生api进行封装成selenium webdriver api 控制浏览器。

学习selenium需要学习元素定位方法
元素定位提供了id,name,classname,tagname,link text,partial link text,xpath,css定位方法。还有javascript,jquery,xpath,css使用较难,但功能强大。
定位元素的目的是操作元素。例如输入框,下拉框,按钮点击,文件上传,对话框,单选多选按钮。
当用例写的多了,会发现很多关键字都是常用的,有些步骤都是重复的,就会学习案例分层。
当用例写的多了,维护脚本就成了问题,那么就会把所有变量提取出来,统一放在一个变量文件中。这样方便脚本维护
用例是流水线的,自己执行的用例如何判断执行成功了,那么就会学习脚本中一些验证和断言。

多测师讲解 自动化测试理论(1)_高级讲师肖sir的更多相关文章

  1. 多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir

    RF连接数据库:1.Connect To Database(连接数据库)2.Table Must Exist(表必须存在)3.Check If Exists In Database(查询某条件是否存在 ...

  2. 多测师讲解自动化测试_rf测试报告_高级讲肖sir

    (一)运行失败 1.1 1.2 用例失败log 2.3Repor 1.4Output (二)运行成功 (三)分析报告 3.1  log: 3.2Report (测试报告) 3.3 Output

  3. 多测师讲解requests __介绍_高级讲师肖sir

    我们今天讲解的内容 一.什么是Requests? Requests是用Python语言编写的简单易用的HTTP库,用来做接口测试的库. 二.安装requests库 1.按住Windows标志+r,在运 ...

  4. 多测师讲解 _requests安装问题解决_高级讲师肖sir

    步骤一:"dos下新建一个pip文件,在文件下建一个pip.ini 文件,步骤二:文件中内容[global]index-url=http://mirrors.aliyun.com/pypi/ ...

  5. 多测师讲解requests __中_高级讲师肖sir

    (1)生成报告 import unittest #导入单元测试框架 import requests #导入接口库 import time # #时间戳,导入time模块 from api.HTMLTe ...

  6. 多测师讲解requests __上_高级讲师肖sir

    1.三种接口接口请求方式 # # 在python当中接口的请求方式有哪些:# import requests # 导入requests接口库# # # # 请求方式有三种:# # # # 第一种:# ...

  7. 多测师讲解自动化测试 _RF分配id_高级讲师肖sir

    1.Assign Id To Element.

  8. 多测师讲解自动化 _rf 变量_高级讲师肖sir

    rf变量 log 打印全局变量 列表变量: 字典变量: 查看当前工程下的变量 紫色表示变量名有误 设置全局变量 设置列表变量 设置字段变量 关键字书写格式问题

  9. 多测师讲解seleniun_ ACTIONCHAUNS定位_高级讲师肖sir

    1.传统方法定位 2.模拟鼠标定位

  10. 多测师讲解selenium_iframe框定位_高级讲师肖sir

    iframe 框定位方法: 查看iframe框 京东点击登录定位元素 定位qq: qq登录定位的元素 查找iframe框 定位iframe框 from selenium import webdrive ...

随机推荐

  1. JVM学习第三天(JVM的执行子系统)之字节码指令

    早上看了Class类文件结构,晚上继续来看字节码指令,毕竟谁也不是一步登天的(说白了还是穷); 字节码指令 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码,Opcode ...

  2. 【Java】一句话获得你的IP地址

    System.out.println(java.net.InetAddress.getLocalHost().getHostAddress());

  3. GuestOS? HostOS?

    起因 今天在网上看到一篇文章  有几个陌生的关键词不太熟悉,就随笔记一下. 名词解释 # OS :操作系统 # VM(虚拟机)    里的OS 称为        GuestOS # 物理机      ...

  4. 下载安装gradle

    1.登录官网:www.gradle.org,进入到下图的界面: 2.点击Install Gradle,跳转到下一个界面后: 3.下载 4.下载成功后,解压到任意位置,将路径添加到path路径下,选择我 ...

  5. JavaScript五中迭代方法小解

    ECMAScript 为数组定义了五个迭代方法.每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值.传入这些方法中的函数会接收三个参数:数组项的值.该 ...

  6. MvvmLight框架使用入门(5)

    上一次写MvvmLight框架使用入门(4)的时候还在用Visual Studio 2015,我儿子也不会过来盖上我的XPS……重启这个系列一方面是因为最近又开始写UWP的东西了,另一个是因为Mvvm ...

  7. 【python练习册】1.3 将1.2题生成的n个激活码保存到mysql关系型数据库中

    该题涉及到mysql中一些指令,先熟悉一下 MySQL指令 参考:https://www.cnblogs.com/zhuyongzhe/p/7686105.html mysql -u root -p ...

  8. oracle之dblink

    当用户要跨本地Oracle数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据.下面讲介绍 ...

  9. HTML全局属性(global attribute)有哪些(包含H5)

    1.accesskey:提供了为当前元素生成键盘快捷键的提示.这个属性由空格分隔的字符列表组成.浏览器应该使用在计算机键盘布局上存在的第一个. 2.autocapitalize:控制用户的文本输入是否 ...

  10. HTTP协议(二)---请求和响应

    HTTP通过请求和响应的交换达成通信. HTTP请求 请求报文由请求行(请求方法.请求URI.协议版本).请求首部字段以及内容实体(可能没有)构成. 下面是一个GET请求,没有内容实体: 下面是 一个 ...