测试工具以及测试方法并不能代表自动化测试,大多数人提到自动化测试,都会说会使用什么工具或者什么技术,这完全是错误的,和我在刚接触的时候一样,以为掌握了Selenium/QTP就以为自己是一名自动化测试工程师了,现在想想几年前的自己,还会笑笑。在开始学习测试工具之前,必须先了解一下自动化测试相关的基础知识,对自动化测试有个一个正确的认识。

1.1   什么是自动化测试?

首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter)或自己所写的程序代码,用于生成多个测试数据。狭义上来讲,就是通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。

总结一下自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。

  当然,我们更普遍的认识把“自动化测试”看做“ 基于产品或项目UI层的自动化测试”。这种观念是错误的,因为现在国内的自动化测试大多数停留在UI层,所以造成我们的认知误区,我在华为项目时接触自动化时的前半年,很多“前辈”把我也带进了误区,其实我本身也那时在工作时丢失了大学时的学习方式,导致很长一段时间停留在这个误区,把自己的眼光放在一个小圈子里,所以我希望后面学习的人不要进入这个误区,其实自动化测试在国外很早就提出了分层的概念。

1.2 测试金字塔

传统的自动化测试更关注产品UI 层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段(层次)都需要自动化测试。

相信很多测试同学对上面的测试金字塔并不陌生,这个不仅对应产品开发各个同阶段所对应的测试!而且经常被各种测试书中或者测试培训中提到,但实际生产中,大多公司与开发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,并且投入的比重以及自动化实现与其完全不相符,当然这也与每个公司文化并且人员能力有关,所以,在分层的自动化测试中,我们只需要对这些定义重新理解和定义。

单元测试:

 

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

通常单元测试由开发人员编写,测试人员很少参与进去,归根结底是因为测试人员编码能力不足。

集成、接口、API测试

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等

例子1:例如,我定义一个add()函数用于计算两个参数的结果并返回,那么我需要调用add()并传参,并比较返回值是否两个参数相加。

例子2: 接口测试也可以是url 的形式进行传递。例如,我们通过get 方式向服务器发送请求,那么我们发送的内容做为URL 的一部分传递到服务器端。但比如Web service 技术对外提供的一个公共接口,可以通过postman/soapUI 等工具对其进行测试。

UI 层的自动化测试:

 

大部分测试现在的大部分工作都是对UI层的功能进行测试。例如,我们不断重复的对一个表单提交,结果查询等功能进行测试,我们可以通过相应的自动化测试工具来模拟这些操作,从而解放重复的劳动。UI 层的自动化测试工具非常多,比较主流的是QTP,Robot Framework、watir、Selenium 等。

1.3 为什么要自动化测试?

了解自动化基本概念后,那么要思考的是什么原因让一家公司或者一个团队决定要在公司推行自动化测试?并且要采用什么自动化方法?

说到这里,我想说很多小团队在决定引入自动化测试都是很茫然的,如朋友a说领导让做他就试试,朋友b说不知道看别人他们也试试,朋友c说可以提高年终绩效。。等等

其实这个问题真的很重要,因为最起码我可以知道我到底需要什么解决什么问题以及什么样目标对自动化来说是合理和最好的。有时,因为测试人力不足却大量需要回归测试保证产品质量,我们需要引入自动化来进行会测试,有时因为需要对一些测试数据进行定期维护,我们需要引入自动化测试,在你想做自动化测试之前,最好想想引入自动化能帮你解决目前需要解决的问题吗?由于这个问题具有发散性,所以为了找出最佳的答案,我们可以通过下面的问题思考:

  1. 什么能够进行自动化测试?
  2. 什么应该进行自动化测试?
  3. 什么必须进行自动化测试?
  4. 什么无需进行自动化测试?
  5. 自动化测试能帮助解决这个问题吗?

1.3 什么样的项目适合自动化测试

当决定引入自动化测试时,我们需要知道引入自动化测试的时机和项目的可测试性,以下是很多项目以及测试前辈总结的实践经验以及我的一些修改,因为不是什么所有项目的都适合实施自动化测试,并且能够取得成功,往往,浪费了大量的人力和时间而没有得到应有的收益。所以在你要对一个项目/或者需求实施自动化前,请认真思考下面的总结:

1、任务测试明确,不会频繁变动,

2、是否需要每日构建后的测试验证

3、是否存在比较频繁的回归测试

4、软件系统界面稳定变动少,是否有重构的计划

5、需不需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务

6、软件维护周期

7、项目进度压力不太大

8、被测软件系统开发比较规范,能够保证系统的可测试性

9、对于UI项目需要进行demo评估产品的可测试性(大量的第三的插件或者难维护的UI元素)

10、对于API项目了解APi是否独立,是否太过于依赖数据等等、

1.4 技术提升(自动化测试方向)

认为比较好技术岗的学习步骤如下(当然你也可以选择偏测试顾问岗位,可能需要大量的项目经验,并且多实践/总结/产出落地,我个人比较喜欢,只是一直没机会):

à做好手工测试(了解各种测试的知识/不同测试产品的测试方法,提高测试分析能力)

à学习编程语言(了解一门主流的编程语言,并且能够在后面的工作中不断深入学习)

à学习Web基础(了解HTML,HTTP,CSS,DOM,Javascript,UI层自动化必须掌握的)

à学习自动化测试工具 (熟练掌握Selenium/Appnium/Httpclient)

à学习自动化测试框架 (熟练掌握testng/junit)

à实现自动化测试用例 (最好能够接触不同的项目,不断总结用例转换的经验以及难点分析,这将成为你设计测试框架的最用力的需求)

à开发自动化测试工具(能够根据需求编写的符合项目需求的工具)

à开发自动化测试框架(能够独立完成框架实现)

自动化测试技术方向的最高境界是:  开发测试工具,设计自动化测试框架, 让别人用(但是需要真正了解测试的需求)

通过上面简单的学习初步对自动化测试有一定了解,你可以尝试用正确的方式把自动化引入到项目,并且树立自己学习的目标顺序。后面内容再提到自动化测试就是指分层模型的UI层自动化测试,并且测试方法针对的是Web  B/S类型的产品。

转载于:https://www.cnblogs.com/hylinux/p/7444391.html

第一章 软件自动化测试的基础知识相关推荐

  1. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  2. 第一章c语言基础知识答案,第一章 C语言的基础知识练习题

    第一章 C语言的基础知识练习题 第一章 C语言的基础知识 第一节 对C语言的初步认识 习题 1. 下列叙述中错误的是 B A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始 ...

  3. Python基础教程(第3版)中文版 第一章 快速上手:基础知识(笔记)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,分享给大家: https://www.captainai.net/lf 如果你学完了Python不知道干什么,不妨去了解一下. 第一章 快速 ...

  4. 第一章、Excel VBA基础知识

    01-01.Excel VBA简介 1.VBA是什么,能干什么 VBA可以说是一种编程语言,是VB的分支 VBA的作用,可以将重复的Excel工作简单化 2.VBA具备的基础知识 2.1基础操作,能发 ...

  5. 自学golang【第一章:go语言基础知识】为什么要学习go语言?go语言与c语言的关系?go语言创始人?go语言的特性有哪些?go语言适合做什么?国内外有哪些企业或项目使用go语言?

    事先声明:本文部分内容参考了尹成的笔记,如果侵权请联系删除. 我是一名自学go语言的初学者,从今天开始我将会坚持更新go语言的相关知识,从入门到精通,如果大家有什么需要可以加我QQ:239479969 ...

  6. 计算机专业英语基础知识,第一章 计算机专业英语基础知识

    1.1 计算机专业英语的特点 :清晰.精练.严密.准确 1.1.1 用词和语法的特点 用词:专业术语多,缩略词汇多且都仍在扩充. 语法:被动语态为主体,常用非谓语动词,名词化结构和从句等. 1.1.2 ...

  7. 【2023 · CANN训练营第一季】晟腾AI入门课(TensorFlow)第一章 晟腾AI基础知识介绍

    本章学习目标 了解CANN在晟腾AI全栈架构中的位置和作用. 了解基于CANN的应用开发编程框架.基本概念. 晟腾AI全栈架构 晟腾AI全栈可以分差四个大部分: 应用使能层面,此层面通常包含用于部署模 ...

  8. 计算机网络协议第一章,网络协议基础知识

    序    我计划开发一个系列专栏,将自己在网络方面的积累完善成一个系列知识,让读者的监督和拍砖督促自己并提高自己.如果在读本人的系列文章得到些许收获,那对我来说是更大的收获.    本系列的阅读应该不 ...

  9. 软件设计模式--第一章 软件设计模式基础

    目录 第一章 软件设计模式基础 1.软件设计模式概述 (1)什么是软件设计模式 (2)学习设计模式的意义 (3)软件设计模式的基本要素 (4)GoF的23种设计模式简介 2.UML中的类图 (1)统一 ...

最新文章

  1. 测试DeltaCopy
  2. Java并发编程:进程和线程之由来
  3. python学习-序列化对象(pickle)
  4. python类库31[文件和目录os+os.path+shutil]
  5. 远程桌面服务怎么测试_快速的远程服务测试
  6. 实现企业员工外出登记(二)
  7. Ubuntu安装OpenTSDB
  8. 使用Mac终端给文件夹加密压缩
  9. 辛客小杰个人博客源码
  10. T32添加Toolbar按钮
  11. [贴图]TVB香港大部分演员照片、姓名(值得收藏)
  12. Linux就该这么学第十三节课学习心得
  13. MySQL Key的含义
  14. Android APP 检测和监听当前USB设备插入拔出以及读取VID/PID
  15. 顺序栈—栈顶指针的两种初始化
  16. 【microbit】micropython 之 体感遥控器
  17. archetype-catalog
  18. java math tan_Java Math tan() 使用方法及示例
  19. python中文件最重要的功能_重点汇总-python-gitbook-重要点学习-1
  20. Kafka,ActiveMQ,RabbitMQ等消息队列使用的场景介绍

热门文章

  1. scala akka 修炼之路5(scala特质应用场景分析)
  2. 才知道百度也提供了智能DNS服务 - 加速乐
  3. INODE上网IP地址刷新超时处理
  4. 用 Navicat for Oracle 管理 Oracle10g/11g 数据库
  5. 怎么样才能快速的把淘宝店铺推广出去
  6. 不错的工具:Reflector for .NET
  7. iOS下JS与OC互相调用(三)--MessageHandler
  8. MonoRail学习笔记五:定制服务实现自定义功能
  9. ASP连接Access2013
  10. Linux下查看显示器输出状态以及修改显示器工作模式(复制 or 扩展)