本文是《Selenium 2自动化测试实战》的读书笔记,文中部分图片和文字引自该书,以供需要时查阅
一、测试基础
1.1软件测试分类
本书中的分类方法比较全,相对于之前看的经典书籍《软件测试》以及《软件测试的艺术》两本书来说更加与目前中国互联网公司中的分类方法相契合,因此在此详细进行记录!
发现基础部分和Webdriver部分已经有人对书本内容进行了录入,可以直接在下面的网址中进行复习。
https://www.cnblogs.com/dongye95/p/10834639.html
执行第一个自动化脚本时由于没有安装浏览器驱动,因此无法进行操作会报错
火狐浏览器驱动:https://github.com/mozilla/geckodriver/releases
谷歌浏览器驱动:http://npm.taobao.org/mirrors/chromedriver
将exe放在对应浏览器的安装路径下,然后将路径加入环境变量path中即可。
一到四章基础、定位、控制浏览器等方法记录在xmind中
五 自动化测试模型
5.1自动化测试模型介绍
5.1.1线性测试
每个脚本完整且独立。
开发维护成本大。
5.1.2模块化驱动测试
提前写好常用模块,需要时直接调用。(合理使用封装)
5.1.3数据驱动测试
数据与脚本分离,不同输入对应不同输出。
写类,与封装结合,通过改变输入参数改变结果。
分为XML、csv等多种格式,有需求再进行对应的了解。
5.1.4关键字驱动测试
将数据改为关键字,写入表中,也称为表驱动。
六 Selenium IDE
火狐的一款组件,可以进行录制等操作。
不进行具体介绍,需要使用时学习。
七 unittest单元测试
unittest使用较少,看完本书后进行pytest框架的深入学习。
九 Selenium Grid
基于JAVA,可以进行分布式测试。
由一个HUB主节点和若干个node代理节点组成。
hub管理所有node的注册信息(配置)
Gecko firefox内核
Blink chrome内核
Webkit safari内核
十 多进程和多线程
与廖雪峰博客中的例子类似,不进行具体介绍,以下为手写的例子。
UNIX/LINUX
使用fork()通过系统调用创建一个与原来进程完全相同的进程,子进程全继承。
WINDOWS
没有fork,基于继承的共享对象比fork有更多限制,比如process的__init__必须可pickle
可以通过multiprocessing的pipe和queue(支持多进程同时放入取出)来进行数据的传输
自动化测试项目实践
目前自动化测试阶段主要定位在冒烟测试和回归测试部分。
自动化测试用例
注意点:
1)不是所有用例都适合自动化
2)考虑到开发成本,用例流程不要过于复杂,最好将复杂流程分为多个脚本实现。
3)选择的用例最好可以构成场景(多个用例使用同一场景模型)
4)带有明确目的性
5)用例可以是很繁琐但是重复多的(回归测试)
6)用例可以是主体流程(冒烟测试)
7)可以用来做配置和数据库检查
8)可以辅助构造数据
原则:
1)一个用例必须为一个完整的场景
2)只验证一个功能点
3)尽可能少编写逆向逻辑用例
4)用例之间避免依赖
5)场景用完后还原
十一 一个完整的自动化案例
感觉本质就是合理的封装和使用。
BDD、TDD和ATTD
TDD即测试驱动开发,是一种比较实用的方法。具体就是在开发之前提前写好测试用例,每一个功能对应一个测试用例,有一套完整的单元测试用例。
ATDD验收驱动开发,主要是一种使客户进入开发流程中的方法,通过一起制定明确的验收计划来驱动开发人员的开发实现以及测试人员的测试实现。
BDD即行为驱动开发,是一种敏捷开发的技术,为TDD和ATDD的结合体,