自动化

一、概念

互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)

1.1. 持续集成(采蜜)

持续集成指的是,频繁地(一天多次)将代码集成到主干。

它的好处主要有两个:

(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。

(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

1.2. 持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

1.3. 持续部署

定义:持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

目标:代码在任何时刻都是可部署的,可以进入生产阶段。

前提:能自动化完成测试、构建、部署等步骤。

二、Jenkins介绍

2.1.  Jenkins概念

Jenkins 是一个开源软件项目,是基于Java开发的一种可拓展持续集成工具,主要用于持续、自动地构建 / 测试 / 集成软件项目以及监控一些定时执行的任务。

2.2. Jenkins目的

1、持续、自动地构建/测试软件项目。

2、监控软件开放流程,快速问题定位及处理,提示开放效率。

2.3. 特性

•  易于安装,只要把 jenkins.war 部署到 Tomcat 即可运行

•  易于配置,所有配置都是通过其提供的 web 界面实现

•  集成 RSS/E-mail,通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知

•  生成 JUnit / TestNG 测试报告

•  分布式构建,支持 Jenkins 能够让多台计算机一起构建/测试

•  插件支持,支持扩展插件,你可以开发适合自己团队使用的工具

2.4. 产品发布流程

产品设计成型 → 开发人员开发代码 → 测试人员测试功能 → 运维人员发布上线

三、安装配置Jenkins

去官网下载jenkins.war包。

官网地址

3.1 两种方式开启Jenkins

方式1:

在tomcat的bin目录下启动(最常用)

方式2:

打开cmd,进入jenkins目录,然后运行命令:java -jar jenkins.war

四、搭建JMeter+Jenkins+Ant持续化

Ant下载及配置安装

下载Apache-ant

解压到你想要安装的目录

配置环境变量

验证是否安装成功

拷贝Jemter包到ant下

新建一个build.xml文件,里面填入如下代码

<?xml version="1.0" encoding="UTF-8"?><projectname="ant-jmeter-test"default="run"basedir="."><!-- 需要改成自己本地的 Jmeter 目录--><propertyname="jmeter.home"value="G:\jmeter\apache-jmeter-3.0"/><!-- jmeter生成jtl格式的结果报告的路径--><propertyname="jmeter.result.jtl.dir"value="G:\jmeter\jmeter-ant-jenkins\testResult"/><!-- jmeter生成html格式的结果报告的路径--><propertyname="jmeter.result.html.dir"value="G:\jmeter\jmeter-ant-jenkins\testResult"/><!-- 生成的报告的前缀--><propertyname="ReportName"value="TestReport"/><propertyname="jmeter.result.jtlName"value="${jmeter.result.jtl.dir}/report.jtl"/><propertyname="jmeter.result.htmlName"value="${jmeter.result.html.dir}/index.html"/><!-- 接收测试报告的邮箱 --><propertyname="mail_to"value="barryli89@163.com"/><propertyname="lib.dir"value="${jmeter.home}/lib"/><pathid="xslt.classpath"><filesetdir="${lib.dir}"includes="xalan*.jar"/><filesetdir="${lib.dir}"includes="serializer*.jar"/></path><targetname="run"><antcalltarget="test"/><antcalltarget="report"/></target><targetname="test"><taskdefname="jmeter"classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/><jmeterjmeterhome="${jmeter.home}"resultlog="${jmeter.result.jtlName}"><!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--><testplansdir="G:\jmeter\jmeter-ant-jenkins"includes="*.jmx"/><propertyname="jmeter.save.saveservice.output_format"value="xml"/></jmeter></target><targetname="report"><!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --></xslt><copytodir="${jmeter.result.html.dir}"><filesetdir="${jmeter.home}/extras"><includename="collapse.png"/><includename="expand.png"/></fileset></copy></target></project>

进行命令行模式后,进入刚才创建的xml文件存放目录,如:D:\build 输入ant即可

五、集成jenkins

打开Jenkins,配置Ant环境

新建一个自由风格任务

构建触发器

构建配置

配置HTML插件

立即构建

针对报告中不显示聚合报告的情况

Jenkins执行自动化测试后发送测试报告邮件

一、认识web自动化测试

什么是自动化测试?

了解为什么要进行自动化测试?

掌握自动化测试的分类?

web自动化测试的使用条件和场景

自动化测试工具的优缺点

自动化测试的前景和发展方向

1.1 什么是自动化测试

首先比较一下手动和自动:

手动操作如下:

image-20210131103124998.png

自动操作如下:

http://n1.itc.cn/img8/wb/sohulife/2016/02/24/145626026613873378.GIF

1.1.1 自动化测试的概念

软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够 完成许多手工测试无法完成或者难以实现的测试工作,正确合理的实施自动化测试,能够快速,全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件的发布周期。

1.1.2 自动化测试的历史

自动化测试就是任何利用工具来辅助的测试,几乎在计算机工业产生的第一天,这种测试就出现了。

历史上从来没有出现过“测试自动化取代测试工程师工作”这种事情发生,除非你完全忽略测试人员们的真正工作。

测试自动化意味着使用测试工具。自动化测试是个古老的理念。

1.2 为什么要进行自动化测试

1.2.1 自动化测试的好处

缩短测试周期

计算机行业更新迭代快速,大量频繁的回归测试消耗时间,自动化测试能够将重复的实行交给计算机去做,加快测试速度。

避免人为出错

测试人员不可能持续高度集中,并且人类易受外界影响(头疼脑热,精神不振),可能会造成人为错误

测试信息存储

自动化测试将测试信息和数据储存在文件中,思路清晰明确,交接方便

轻易获取覆盖率

自动化测试能够解放测试人员,使测试人员能够有更多的精力做那些非重复性的工作。

其他

自动化测试可以是实现自动或者定时执行

注意:自动化测试的方向是对的,而且趋势也是如此,但是有些自动化实现不了的还是会手动测试的。

1.3 自动化测试的分类

整体分类

1)自动化功能测试

2)自动化性能测试

自动化功能测试的分类:

1)单元测试:程序员搞定2)功能测试3)接口测试:大中型项目或长期项目可以采用自动化测试

性能测试主要是使用测试工具

Loadrunner、Jmeter等,对软件进行压力测试、负载测试等等,因为这些无法用手工进行代替,所以必须自动化。

为了测试一个web站点的服务能力,需要模拟上千上万的请求(比如打开浏览器访问站点),人的速度是远远达不到这样的操作的

1.4 web自动化条件和使用范围

1.使用自动化的前提条件

1)手动测试已经完成,后期再不影响进度的前提下逐渐实现自动化2)项目周期长,重复性的工作都交给机器去实现3)需求稳定,项目变动不大4)自动化测试脚本复杂度比较低5)可重复利用

2.使用自动化测试的场景

1)频繁的回归测试2)冒烟测试3)传统行业需求变化不大,应用频繁4)性能测试

1.5 web自动化常用的工具

常见的自动化web测试工具

QTP(收费)

QTP是Mercury公司的Quick Test Professional的简称,是一种自动测试工具。

Selenium(开源)

Selenium一个强大的基于浏览器的开源自动化测试工具,通常用来编写web应用的自动化测试

RFT(收费)

IBM Rational Test Professional的简称,是一款先进的自动化的功能和回归测试工具,使用与测试人员和GUI开发人员,基础是针对Java,.NET的对象计数和基于web应用程序的录制,回放功能。

1.6 元素的定位

为什么要学习定位元素?

环境及工具

css选择器

xpath路径表达式

1.6.1 为什么要学习元素定位?

1)计算机没有智能到人的程度。2)计算机不能像手动测试人员一样通过眼看,手操作鼠标点击,操作键盘输入。3)计算机通过一系列计数手段找到元素(按钮、输入框、模拟键盘等)

1.6.2 元素定位的工具或手段有哪些?

1)css选择器2)xpath

1.6.3 环境及工具

材料

1)firefox352)firebug插件3)firepath插件

安装步骤

1. 下载浏览器插件2. 菜单 → 添加附件 → 设置图标 → 从文件中添加附件

1.7 xpath

1.7.1 什么是xpath?

XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在 HTML\XML 文档中查找信息的语言。

W3School官方文档:http://www.w3school.com.cn/xpath/index.asp

1.7.2 什么是XML?

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

1.7.3 XML与HTML

image-20210131105328723.png

1.7.4 节点

节点的概念:每个XML/HTML的标签我们都称之为节点

image-20210131105451339.png

image-20210131105508204.png

1.7.5 获取元素

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

image-20210131105621486.png

/根节点//title      全局模糊定位title//head/.  定位head元素//haad/.. 定位head元素的父元素 //meta[@conent]      //meta[@conent=""]       

查找某个特定的节点或者包含某个指定的值的节点

image-20210131105640774.png

/html/head/meta[1]

选择未知节点

image-20210131105702030.png

选取若干路径

image-20210131105721728.png

image-20210131105749178.png

1.8 css选择器

1.8.1 什么是css选择器?

CSS 中,选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过css选择器定位到相应元素,我们在编写自动化测试脚本的时候很多时候是在不断地找到css选择器。

1.8.2 css选择器语法

1)通过伪类名、id、标签名定位

image-20210131105944480.png

测试站点:http://www.baidu.com

2)通过元素之前嵌套关系

image-20210131110014690.png

测试:Form span

3)通过属性

image-20210131110048947.png

image-20210131110106391.png

4)通过父子关系

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

推荐阅读更多精彩内容

  • 自动化 一、概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuou...
    G_eebd阅读 332评论 0 0
  • 一、概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous in...
    __65a0阅读 823评论 0 4
  • 一、Python介绍 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python...
    成啦过客的青春阅读 451评论 0 0
  • 一、认识web自动化测试 什么是自动化测试? 了解为什么要进行自动化测试? 掌握自动化测试的分类? web自动化测...
    会冒泡的鱼____阅读 405评论 0 1
  • 一、认识web自动化测试 什么是自动化测试? 了解为什么要进行自动化测试? 掌握自动化测试的分类? web自动化测...
    玉奎阅读 159评论 0 0