第2章---自动化测试基础
手工测试(以人为驱动)
:表示的针对被测系统或者软件实现业务流中的每条路径进行覆盖(每条用例进行手工执行);
- 测试工程师在此过程中就会产生相应的一些弊端;
- 1.测试人员产生疲劳感
- 2.测试效率不高
- 3.每天重复执行测试用例
自动化测试(以工具为驱动):
使用工具或者框架完成相应业务流的脚本设计,然后进行运行判断其产生的实际结果和预期结果一致的过程;
- 注意:自动化测试主要是测试流程
问题:自动化直接可取代手工测试吗?
- 不可能;
- 1.手工测试是具有人为思想,可根据测试人员的思维方式进行多维度的测试;但是自动化测试是根据已设定的某种方式进行执行(固定);
- 2.自动化测试无法完成每一阶段的所有测试;
- 3.现如今自动化的成本实际相比以往来说已经降低(因为现如今存在大量的开源自动化测试框架,自动化也得以发展)
自动化测试的使用阶段:
回归测试阶段、版本迭代升级、大型的项目(业务流过多、用例过多)
自动化测试优点:
1.效率高2.可以释放人力资源3.自动化测试可以使用工具进行模拟一些手工测试无法完成的场景测试4.自动化测试脚本和性能脚本可以相互引用
自动化测试缺点:
1.成本高
2.对测试人员要求高
3.脚本的维护(脚本的定义规范(脚本名称、类名、方法名等一系列命名的规范)、脚本的设计规则(减少代码的重复性(使用面向对象的继承特征)、资源对象创建后需要将其进行关闭、减少死循环的产生和使用)、脚本的管理方式(版本管理工具git,svn))
自动化测试的发展过程:
- 第一代自动化:使用工具实现录制-回放的模式;再通过工具上的某些功能点(参数化、检查点等)实现脚本的增强;经典的工具代表(传统性自动化测试框架QTP---------UFT:使用C语言进行编程,非纯C,描述性编程)09-11年盛行,当年的神坛,已经走向灭亡。Loadrunner一个月几十万,功能还是很不错,还在用。
- 第二代自动化:数据驱动模式;实现数据与脚本代码的分离操作;将数据存储在指定的数据格式文件中(json,xml,csv,yaml,ini,dat,excel等)或者数据库中;数据驱动模式实际就是关键字驱动的低配;(以数据驱动业务)
- 第三代自动化:关键字驱动模式;基于数据驱动实现进一步的封装;(以行为以动作进行驱动业务)会将所有的每一步操作封装在单独的类,单独的函数,一个函数或者一个类中的方法可以表示一个动作的完成;(login------->登录操作:提取关键字)
自动化测试的工具:
QTP,LR,WebLoad,Robot、winrunner、开源:Jmeter、selenuim、appium、httprunner等
web自动化测试框架:
selenium 硒 selenium是一款免费开源的web自动化框架,可以实现跨浏览器、跨平台、跨语言;兼容性强;
selenium的家族:
selenium1.0、selenium2.0、selenim3.0 ,本人此时的selenium4.0已经使用化
- selenium1.0=seleniumIDE+seleniumRC+seleniumGrid
- selenium2.0=selenium1.0+webdriver
- selenium3.0=selenium2.0-seleniumRC,基于selenium2.0基础上进行优化,并摒弃一些无用的浏览器的兼容;
- seleniumRC:remote control:相当于建立一个服务,该服务完成脚本与浏览器之间的通讯操作;在selenium2.0版本将RC进行封装后得到的就是webdriver
- webdriver原理:(selenium的原理)
- 客户端即pycharm设计的脚本发送请求,基于json wire格式的协议进行创建一个绑定一个特定的端口的会话连接(selenium RC)相当于服务端;
- 服务端又会根据不同的浏览器驱动进行驱动不同类型的浏览器(浏览器不同的类型(四种内核:ie,firefox,chrome,opera,不同类型不同版本具有不同的驱动)),此时服务器会将客户端所发生过来的事件指令通过驱动在浏览器中进行完成操作,如果浏览器操作完成后会将结果返回给服务端,服务端将结果返回给客户端;
seleniumGrid:是一款实现多浏览器分布式操作;
seleniumIDE:是一款可以实现录制回放的操作;
安装selenium的两种方式:
1.使用pip
pip install pip install -U
2.pycharm
注意:如果使用pip记得你使用的是哪个版本的pip,是不是pycharm当中的python的pip