总结(二)

一. 自动化测试两种方式

1. 代码驱动测试

普遍使用测试框架来进行单元测试。

2. 图形用户接口测试

测试框架产生用户接口事件,并捕获事件导致的图形用户接口的改变,以便验证可见的程序响应是否正确。如web自动化测试:selenium和webdriver。

* 自动化测试与人工测试的选择 *

如果用户界面最近发生改变,自动化测试案例面临重构,对于工期较短的项目,有严格的截止时间,并且没有可用的自动化测试案例,选择人工测试最佳。
自动化测试适用于一个长期的迭代测试中,有许多优点:

  • 支持频繁的回归测试;
  • 在软件开发中尽早发现bug;
  • 能够无限地循环执行测试案例;
  • 维护周期长;
  • 需要在多平台上运行相同的测试案例;

二. 自动化测试架构

1. 数据驱动测试

将测试数据与测试逻辑放在同一个框架中,采用测试数据与测试逻辑分离的方式,当测试数据发生改变时,不会影响测试逻辑。同一个测试逻辑可以针对不同的数据进行测试。提高测试逻辑的使用效率和可维护性。

2. 模块驱动测试

使用独立的脚本测试单独的模块,子功能。引入抽象和封装的原则。

3. 关键字驱动测试(QTP)

创建一些关键字以及相关联的一些方法和函数。然后创建一个函数库,它里面包含一个读取关键字的逻辑,然后调用相关的动作。关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数据。这些测试被开发成使用关键字的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。

4. 混合自动化测试

融合了”关键字驱动测试”和“数据驱动测试”。既拥有测试逻辑和测试数据相互分离的优点,又集成了关键字驱动对的先进架构。

5. 基于模型测试

在这种架构下,会有一个成熟的测试模型来描述测试数据的所有方面,以及测试案例和案例的执行环境。

三. 自动化测试基本流程

Paste_Image.png

** 对于近阶段的学习,查看书籍和资料,针对“图形用户接口测试”,使用最高60%的自动化,与人工测试相结合的方式,从而提高测试效率。**

四. Selenium及Webdriver

1. selenium介绍

  • selenium是用于测试web应用程序用户界面(UI)的框架,是运行端到端测试的工具,可以使用多个编程语言编写测试,如Java ,Python ,Ruby,C#,在我今后的学习工作中,我选择Python语言。selenium可以在多个浏览器中执行这些测试,并且可以使用selenium在自由测试过程中复现bug。
  • 目前selenium组件主要包括selenium IDE,selenium 1.x(RC),webdriver,selenium Grid

2. selenium IDE

selenium IDE 提供了一个浏览器插件模式,可以录制和运行脚本,将录制的脚本导出成Java ,Python ,Ruby,C#语言,目前只支持Firefox一种浏览器插件
总结(一):selenium-IDE的命令。

3. selenium RC

通过 selenium RC 的服务器作为代理服务器去访问应用,从而达到测试的目的。

4. Webdriver

提供一个更简单简洁的编程接口以及解决了一些Selenium-RC API 的限制。支持页面不需要重新加载而元素改变的动态页面
Selenium 1 +Webdriver=Selenium 2

对于webdriver API 基本主要的已经学习,能够将一些方法结合具体的web应用,其他的小部分在实际应用当中还是需要查找API文档。
主要包括:

  • 定位元素 XPath\CSS 定位
  • 控制浏览器(设置浏览器窗口大小、控制浏览器前进 后退、模拟浏览器刷新)
  • 简单元素操作(返回元素的尺寸、获取元素的文本、获得属性值、设置该元素是否用户可见 等等)
  • 鼠标事件
  • 键盘事件
  • 设置元素等待(显示等待、隐式等待、sleep休眠方法)
  • 定位一组元素
  • 多表单切换 switch_to.frame()
  • 对窗口切换 switch_to.window()
  • 警告框处理 switch_to_alert()

5. selenium Grid

支持并发、分布式运行多个测试用例。selenium Grid 可以在不同的主机上建立主节点和分支节点,可以使主节点上的测试用例在不同的分支节点上运行。对不同的节点来说,可以搭建不同的测试环境(操作系统、浏览器),从而使一份测试用例得到不同环境下的执行结果。
考虑在减少成本的情况下,使用浏览器分开执行的策略会好一些。

** 目前我使用的版本是selenium 3.4.0 **

那么selenium 3 相对于selenium 2 有哪些改动和区别呢?

  • selenium 3 标准化,并且支持更多的浏览器;
  • selenium 3 以开发“一款聚焦于移动和Web APP用户的自动化工具”为目标。selenium 3将会主导开发一个继承于Webdriver API的测试套件,促进许多不同的可用项目间的可操作性用以支持移动终端。

五. unittest单元测试框架

1. 重要概念

Test Case : 一个Test Case 的实例就是一个测试用例
Test Suite : 把多个测试用例集合在一起来执行,这就是Test Suite 测试套件
Test Runner : 执行策略和执行结果
Test Fixture : 对一个测试用例环境的搭建和销毁,就是一个fixture。setUp()通过建立数据库连接来进行初始化;tearDown()清除数据库产生的数据,然后关闭连接。

2. 用例执行的顺序

unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,a-z,A-Z。
addTest() 指定用例的执行顺序。

3. 跳过测试和预期失败

unittest.skip(reason) ——无条件的跳过装饰的测试,说明跳过测试的原因
unittest.skipIf(condition,reason) ——若条件为真,跳过测试
unittest.skipUnless(condition,reason) —— 条件为真,执行测试
unittest.expectFailure() —— 不管执行结果如何,测试标记为失败

4. fixtures

setUpModule\tearDownModule:在整个模块的开始与结束时被执行
setUpClass\tearDownClass:在测试类的开始与结束时被执行(需要通过@classmethod进行装饰,方法的参数为cls)
setUp\tearDown:在测试用例的开始与结束时被执行

六. HTML测试报告

HTMLTestRunner是python标准库unittest单元测试框架的一个扩展,它生产易于使用的HTML测试报告。
首先需要下载HTMLTestRunner,并修改。

Paste_Image.png
Paste_Image.png

七.python 多线程和多进程

(一)多线程技术

python通过两个标准库thread和threading提供对线程的支持。
应该避免使用thread模块,因为他不支持守护线程,当主线程退出时,所有的子线程不管他们是否还在工作,都会被强行退出。threading模块支持守护线程。

Paste_Image.png

import threading 引入线程模块
threads=[ ] 创建线程数组,用于装载线程
threading.Thread() 通过调用threading模块的Thread()方法来创建线程

创建线程类

Paste_Image.png

(二)多进程技术

multiprocessing模块与多线程的threading模块的用法类似, multiprocessing模块可以充分利用硬件的多处理器来进行工作。


八. Git 常用命令

首先,需要明白两个概念:工作区和暂存区
工作区:一个项目文件夹就是一个工作区。
暂存区:工作区有一个隐藏目录 .git ,这个不算工作区,而是git 的版本库。git 的版本库里存了很多东西,其中最重要的就是称为stage(或index)的暂存区,还有git 为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

(一)新建代码库

在当前目录新建一个git 代码库 —— git init
新建一个目录,将其初始化为git 代码库 —— git init [name]
下载一个项目和它的整个代码历史 —— git clone [url]

(二)配置

git 的配置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
显示当前的git 配置 —— git config --list
编辑git 配置文件 —— git config -e [--global]
设置提交代码时的用户信息 —— git config [--global] user.name "[name]"
—— git config [--global] user.email "[email address]"

(三)增加/删除文件

添加指定文件到暂存区 —— git add [file1] [ file2] ...
添加指定目录到暂存区,包括子目录 —— git add [dir]
添加当前目录的所有文件到暂存区 —— git add .
对于同一个文件的多处变化,可以实现分次提交 —— git add -p
删除工作区文件,并将这次删除放入暂存区 —— git rm [file1] [file2] ...
停止追踪指定文件,但该文件会保留在工作区 —— git rm --cached [file]
改变文件,并且将这个改名放到暂存区 —— git mv [原名] [新名]

(四)代码提交

提交暂存区到仓库 —— git commit -m "描述信息"
提交暂存区的指定文件到仓库 —— git commit [file] -m "描述信息"
提交工作区自上次commit 之后的变化,直接到仓库 —— git commit -a
提交时显示所有diff信息 —— git commit -v
如果代码没有任何新变化,则用来改写上一次提交的信息 —— git commit --amend -m "..."
重新上一次提交,并包括指定文件的新变化 —— git commit --amend [file] ..

(五)分支

列出所有本地分支 —— git branch
列出所有远程分支 —— git branch -r
列出所有本地分支和远程分支 —— git branch -a
新建一个分支,但依然停留在当前分支 —— git branch [name]
新建一个分支,并切换到该分支 —— git checkout -b [name]
新建一个分支,指向指定commit —— git branch [name] [commit]
切换到指定分支,并更新工作区 ——git checkout [name]
切换到上一个分支 —— git checkout -
合并指定分支到当前分支 —— git merge [name]
删除分支 ——git branch -d [name]
删除远程分支 —— git push origin --delete [name]

(六)标签

发布一个版本时,通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

列出所有标签 —— git tag
新建一个tag在当前commit —— git tag [name]
删除本地tag —— git tag -d [name]
删除远程tag —— git push origin :refs/tags/[name]
查看tag信息 —— git show [name]
提交指定tag —— git push [remote] [name]
提交所有tag —— git push [remote] --tags
新建一个分支,指向某个tag —— git checkout -b [branch] [tag]

(七)查看信息

显示有变更的文件 —— git status
显示当前分支的历史版本 —— git log
显示当前分支的最近几次提交 —— git reflog

(八)远程同步

显示所有远程仓库 —— git remote -v
显示某个远程仓库的信息 —— git remote show [remote]
上传本地指定分支到远程仓库 —— git push [remote] [branch]
推送所有分支到远程仓库 —— git push [remote] --all

(九) 撤销

恢复暂存区的指定文件到工作区 —— git checkout [file]
恢复某个commit 的指定文件到暂存区和工作区 —— git checkout [commit] [file]
恢复暂存区的所有文件到工作区 —— git checkout .

生成一个可供发布的压缩包 —— git archive


关于下一阶段的计划,在做好测试工作的基础上,系统的学习python语言,我的python版本:3.5.2,因为我觉得无论学什么,都要从语言入手,并且,我的测试脚本也是python语言,所,以掌握好python对测试至关重要。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,664评论 1 17
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,760评论 0 8
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,621评论 9 163
  • 在来之前,我就在心里想着以前看到过的瑜伽体式画面,不由自主的感觉好难,一直到上课之前,还是感觉有压力。 刚进教室,...
    max的昵称阅读 260评论 0 0
  • 网文小白一枚,在作者群里请各位大大帮我看看文,提下意见。结果,原来你们是这样的作者大大╭(╯ε╰)╮ 我喜欢这样调...
    涤情阅读 173评论 0 0