想入门学自动化不止从哪开始?自动化测试基础知识帮你快速入门

软件测试打卡交流←←←

第一节 软件测试的分类

关于软件测试领域名词颇多,发现有许多测试新手混淆概念,从不同的角度可以将软件测试有不同的
分类的方法;所以,这里汇总常见软件测试的相关名词,对软件测试领域有个概括的了解。
在这里插入图片描述
上图是一个典型“V”模型软件开发流程,那么各项软件测试工作是在项目开发流程中循序渐进进行
的。下面将介绍各个阶段测试的含义

单元测试

单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过

集成测试

集成测试是单元测试的基础上,将通过单元模块组装成系统或子系统,再进行测试,重点
是检查模块之间的接口是否正确。

系统测试

系统测试是针对整个产品系统进行的测试,验证系统是否满足了需求规格的定义,以及软
件系统的正确性和性能等是否满足其规约所指定的要求。

验收测试

验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,向
软件购买都展示该软件系统满足其用户的需求

白盒测试、黑盒测试、灰盒测试

白盒测试与黑盒测试,主要是根据在软件测试工作中对软件代码的可见程度进行的划分;这也是软件
测试领域中最基本的概念。

黑盒测试:
黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只
关心软件的输入数据和输出结果。

它只检查程序呈现给用户的功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输
入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

白盒测试:
白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果。
它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正
常进行,检验程序中的每条通路是否都能按预定要求正确工作。

灰盒测试:
灰盒测试介于黑盒测试与白盒测试之间。
可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那
样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,
但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取
这样的一种灰盒测试的方法。

功能测试与性能测试

从对软件的不同测试点可以划分为功能测试与性能测试。

功能测试
功能测试检查实际的功能是否符合用户的需求。测试的大部分工作也是围绕软件的功能进行,设计软
件的目的也就是满足客户对其功能的需求。如果偏离的这个目的任何测试工作都是没有意义的。
功能测试又可以细分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。

性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进
行测试。
软件的性能包括很多方面,主要有时间性能和空间性能两种。

时间性能
主要是指软件的一个具体的响应时间。比如一个登录所需要的时间,一个交易所需要的时
间等。当然,抛开具体的测试环境,来分析一次事务的响应时间是没有任何意义的。需要搭建一个具体且
独立的测试环境。

空间性能
主要指软件运行时所消耗的系统资源,比如硬件资源,CPU、内存,网络带宽消耗等

手工测试与自动化测试

从对软件测试工作的自动化程度可以划分为手工测试与自动化测试。
手工测试:
手工测试就是由人去一个一个的去执行测试用例,通过键盘鼠标等输入一些参数,查看返回结果是否
符合预期结果。

手工测试并不非专业术语,手工测试通常是指我们在系统测试阶段所进行的功能测试,为了更明显的
与自动化测试进行区分,所以这里使用了手工测试

自动化测试
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过
评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在

此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。

自动化测试又可分为:功能自动化测试与性能自动化测试。

我们一般所说的自动化测试就是指功能自动化测试,通过相关的测试技术,通过编码的方式用一段程
序来测试一个软件的功能,这样就可以重复执行程序来进行重复的测试。如果一个软件一小部分发生改变,

我们只要修改一部分自动化测试代码,就可以重复的对整个软件进行功能测试;从而大大的提高了测试效
率。

性能自动化测试,当然,除了早期阶段,现在的性能测试工作都是通过性能测试工具辅助完成的。通
过工具可以模拟成千上万的用户向系统发送请求,用来验证系统的处理能力

冒烟测试、回归测试、随机测试

这三种测试出现在软件功能测试周期中,既不算具体明确的测试阶段也不是具体的测试方法。

冒烟测试:
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可
测性。

引入到软件测试中,就是指测试小组在正规测试一个新版本之前,先投入较少的人力和时间验证一个
软件 的主要功能,如果主要功能都没有实现,则打回开发组重新开发。这样做的好处是可以节省大量的
时间成本和人力成本。

回归测试:
回归测试是指修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错
误。

回归测试一般是在进行软件的第二轮测试开始的,验证第一轮中发现的问题是否得到修复。当然,回
归也是一个循环的过程,如果回归的问题通不过,则需要开发人员修改后再次进行回归,直到通过为止。

随机测试:
是指测试中的所有输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错
误。

随机测试可以发现一些隐蔽的错误,但是也有很多缺点,比如测试不系统,无法统计代码覆盖率和需
求覆盖率,发现的问题难以重现。一般是放在测试的最后执行。其实随机测试更专业的升级版叫 探索性
测试

其他测试

探索性测试
探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测
试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试

用例设计过程,强调在碰到问题时及时改变测试策略。

安全测试
安全测试是在 IT 软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以
验证产品符合安全需求定义和产品质量标准的过程。

安全测试也在越来越受到企业的关注和重视,因为由于安全性问题造成的后果是不可估量的。尤其对
于互联网产品最容易遭受各种安全攻击

第二节 什么样的项目适合自动化测试

虽然,在你看到这篇文章时已经对要测试的项目做了一些分析和考量,但博主还是有必要在这里啰
嗦一下不是所有项目有适合实施自动化测试的,以免读者对项目实施自动化过程中发现困难重重,浪
费了大量的人力和时间而没有得到应有的收益。

  1. 任务测试明确,不会频繁变动
  2. 每日构建后的测试验证
  3. 比较频繁的回归测试
  4. 软件系统界面稳定,变动少
  5. 需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
  6. 软件维护周期长
  7. 项目进度压力不太大
  8. 被测软件系统开发比较规范,能够保证系统的可测试性
  9. 具备大量的自动化测试平台
  10. 测试人员具备较强的编程能力

当然,并非以上 10 条都具备有情况下才能开展测试工作。这里就需要你们自己做综合的权衡。在我
们普遍的经验中,只要满足三个条件就可以对项目开展自动化测试:

  1. 软件需求编程不频繁
    测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根
    据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需
    要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试
    成本,那么自动化测试便是失败的。
    项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动
    化测试,而变动较大的仍是用手工测试。
  2. 项目周期较长
    由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
  3. 自动化测试脚本可重复使用
    自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如
    C/S 系统和 B/S 系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架

第三节 自动化测试及工具简述

自动化测试的概念有广义与狭义之分;广义上来讲所有借助工具来进行软件测试都可以称为自动化测
试;狭义上来讲,主要指基于 UI 层的自动化测试;除此之外还有基代码编写阶段的单元自动化测试,基
本集成测试阶段的接口自动化测试。

注意:如果没有特别说明,本文所说的“自动化测试”均指基于“UI 的功能自动化测试”。

目前市面上的自动化测试工具非常多,下面几款是比较常见的自动化测试工具

QTP

QTP 是 HP Quick Test Professional software 的简称,是一种企业级的自动测试工具。提供了强大
易用的录制回放功能。支持 B/S 与 C/S 两种架构的软件测试。是目前主流的自动化测试工具。

Robot Framework

Robot Framework 是一款 python 编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,
可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。

watir

Watir 全称是“Web Application Testing in Ruby”。它是一种基于 Web 模式的自动化功能测试工具。
watir 是一个 ruby 语言库,使用 ruby 语言进行脚本开发。

selenium

Selenium 也是一个用于 Web 应用程序测试的工具,支持多平台、多浏览、多语言去实现自动化测试。
目前在 web 自动化领域应用越来越广泛。

当然,除了上面所列自动化测试工外,根据不同的应用还有很多商业的、开源的以及公司自己开发的
自动化测试工具

第四节 selenium 工具介绍

什么是 selenium?

selenium 自动化测试浏览器,它主要是用于 Web 应用程序的自动化测试,但肯定不只局限于此,同
时支持所有基于 web 的管理任务自动化。

selenium 的特点:

 开源,免费
 多浏览器支持:FireFox、Chrome、IE、Opera
 多平台支持:linux 、windows、MAC
 多语言支持:java、python、ruby、php、C#、JavaScript
 对 web 页面有良好的支持
 简单(API 简单)、灵活(用开发语言驱动)
 支持分布式测试用例执行

selenium 经历了两个版本,selenium 1.0 和 selenium 2.0 ,selenium 也不是简单一个工具,而
是由几个工具组成,每个工具都有其特点和应用场景

selenium工具

selenium IDE

selenium IDE 是嵌入到 Firefox 浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
那么什么情况下用到它呢?

快速的创建 bug 重现脚本,在测试人员的测试过程中,发现了 bug 之后可以通过 IDE 将重现的步骤录
制下来,以帮助开发人员更容易的重现 bug。
IDE 录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本,关于这个功能后而用到时
再详细介绍。

selenium Grid

Selenium Grid 是一种自动化的测试辅助工具,Grid 通过利用现有的计算机基础设施,能加快 Web-app
的功能测试。利用 Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。其特点为:
 并行执行
 通过一个主机统一控制用例在不同环境、不同浏览器下运行。
 灵活添加变动测试机

selenium RC

selenium RC 是 selenium 家族的核心工具,selenium RC 支持多种不同的语言编写自动化测试脚本,
通过 selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
selenium RC 使用分 Client Libraries 和 selenium Server,Client Libraries 库主要主要用于编
写测试脚本,用来控制 selenium Server 的库。
Selenium Server 负责控制浏览器行为,总的来说,Selenium Server 主要包括 3 个部分:Launcher、
Http Proxy、Core。其中 Selenium Core 是被 Selenium Server 嵌入到浏览器页面中的。其实 Selenium Core
就是一堆 JS 函数的集合,就是通过这些 JS 函数,我们才可以实现用程序对浏览器进行操作。Launcher 用
于启动浏览器,把 selnium Core 加载到浏览器页面当中,并把浏览器的代理设置为 Selenium Server 的
Http Proxy。

selenium 2.0

搞清了 selenium 1.0 的家族关系,selenium 2.0 是把 WebDriver 加入到了这个家族中;简单用公
式表示为:
selenium 2.0 = selenium 1.0 + WebDrive

第五节 前端技术介绍

由于 selenium 基于 web 的自动化测试技术,我们的要操作的对象是页面,所以有必要对前端的技术
和工具做一个简单的介绍。

HTML 简介
HTML(Hyper Text Markup Language)中文为超文本标记语言,HTML 是网页的基础,它并不是一种
编程语言,而是一种标记语言(一套标记标签),但我们可以在 HTML 标签中嵌入各种前端脚本语言,

VBScript、JavaScript 等。下面是一个简单的 HTML 页面:

<html>
<title>标题</title>
<body>
<h1>正文</h1>
</body>
</html>

[html] 与 [/html] 之间的文本描述网页
[title>]与[/title>]之间的内容显示在浏览器的标题栏
[body] 与 [/body] 之间的文本是可见的页面内容
[h1] 与 [/h1] 之间的文本被显示为正文,h1 为页面中的一号字体

现在我们通过浏览器打开任意一个页面,在页面上右键菜单选择“查看网页源代码”,在复杂的前端
代码中你依然可以找到 HTML 的身影。

当然了,HTML 还定义了其它许多功能,请参考其它资料进行学习。
软件测试打卡交流←←←

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值