当前位置: 首页 > news >正文

关于冒烟测试和回归测试的概念

鉴于之前跟开发提到提测前需要进行冒烟测试,然后几个开发一脸迷茫的问我:什么叫冒烟测试?所以我准备跟大家从以下几个方面简单的分享一下什么是冒烟测试。

一、软件测试的分类

1、按开发阶段:单元测试、集成测试、系统测试、验收测试
2、按测试实施组织:α、β、第三方
3、按测试执行方式:静态测试、动态测试
4、按是否查看代码:黑盒测试、白盒测试、灰盒测试
5、按是否手工执行划分:手工测试、自动化测试
6、按测试对象划分:性能测试、安全测试、兼容性测试、文档测试、易用性测试(用户体验测试)、业务测试、界面测试、安装测试
7、按测试地域划分:本地化测试、国际化测试

 

二、冒烟测试(Smoke Testing)的概念

        Smoke Testing 的概念最早源于制造业,用于测试管道。测试时,用鼓风机往管道里灌烟,看管壁外面是否有烟冒出来,以便检验管道是否有缝隙。这一测试显然比较初级,更深层一点的测试至少要进行渗油测试、带压测试等等。Smoke Testing 只是一种初级、直观的测试。

  软件测试中的 Smoke Testing 实际上用的是其引申含义,而且是引申了不止一道的含义,在这里,Smoke Testing 其实是个俚语就跟很多其他源于美国软件行业的名词一样。

   Smoke Testing 在软件测试中的意义,应该说取的是其原始概念中的目的而非手段。通过 Smoke Testing,在软件代码正式编译并交付测试之前,先尽量消除其表面的错误,减少后期测试的负担。因此可以说,Smoke Testing 是预测试。

       冒烟测试是指对提交测试的软件在进行详细深入的测试之前而进行的预测试,这种预测试的主要目的是暴露导致软件需重新发布的基本功能失效等严重问题。冒烟测试可以由开发人员执行,也可以由测试人员来执行。即,在版本编译后正式提交测试之前由开发人员执行;或开发发布版本后,测试人员在接受这个版本作为正式版本进一步测试前执行。

       微软提出在审查了变更的代码后,冒烟测试是确认修复的缺陷及功能变更是否有效的最经济有效的方法。冒烟测试能手动执行,也可以在版本编译后自动化执行,它是对基本功能的确认,非深入测试,但要覆盖到面,即所有的更改点都要进行确认。采用自动化执行是,可以结合每日构件后进行自动化的每日smoking test,如果测试通过,则把更改后的代码自动合并到主干代码仓库中,作为正式提交测试的版本。

三、冒烟测试可以实施的步骤

对于smoking test在软件开发过程中的应用,下面提出一种可实施的步骤:
1. 根据软件的变更,包括新需求的实现、bug修复,设计出更改满足预期的功能级checklist。

2. 准备好测试环境。如:软件的运行环境是嵌入式产品,如手机,数码相机,医疗仪器等,需准备好用户使用的真实运行环境。如果是windows平台运行环境,请准备干净的操作系统。

3.执行checklist,确认基本功能有效,足以支持更进一步的详细、全面测试。

四、冒烟测试的优缺点

冒烟测试就是在每日build建立后,对系统的 基本功能进行简单的测试。

冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

SmokeTest优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。 

五、冒烟测试(Smoke Testing)与回归测试(Regression testing)的区别

冒烟测试就是新版本送测后的测试,以决定是否要继续测试乃至发布。回归测试就是解决一个问题后的测试,方向是判断新的代码是否引入了新问题。冒烟测试一般用于每日构建(Nightly build),构建服务器首先从CVS服务器上,下载最新的源代码,然后编译单元测试,运行单元测试通过后,编译可执行文件,可执行文件若可运行,并能执行最基本的功能,则认为通过了冒烟测试。而回归测试,是软件维护阶段对软件修改后进行的测试。两种测试用在软件生命的不同周期。

根据对冒烟测试和回归测试的理解,总结了二者的一些区别,如下:

 

冒烟测试

回归测试

使用阶段

单元测试之后

软件维护阶段

测试侧重点

新版本送测后,对基本功能的粗略测试

解决一个问题后,判断是否引入新的问题

消耗时间

节省时间

消耗时间长

覆盖率

执行人

提测前是开发;版本上线前是测试

测试

相关文章:

  • 关于webstorm-----eslint一键自动修复所有错误
  • 微信授权,修改本地 host
  • 基于element封装一个公共的限制图片宽高的方法
  • elementUI编辑进入页面输入框输入内容没有作用问题
  • element上传图片校验尺寸
  • Vue Element采坑日记之图片上传后不及时更新视图
  • ellement非必填校验数字
  • ellement穿梭框,宽高调节
  • vue 中使用防抖和节流
  • element-ui 关于日期范围选择控件,如何限制只能选择30天
  • JS判断数组里是否有重复元素的方法小结
  • 防抖函数
  • vue中watch的详细用法,带deep,immediate
  • VScode ctrl+鼠标左键点击 无法定位的问题
  • 正则 校验英文逗号字符串
  • #Java异常处理
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 30秒的PHP代码片段(1)数组 - Array
  • ES学习笔记(12)--Symbol
  • JavaScript创建对象的四种方式
  • JavaScript实现分页效果
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • oldjun 检测网站的经验
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • TCP拥塞控制
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 马上搞懂 GeoJSON
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 在weex里面使用chart图表
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • (1)Android开发优化---------UI优化
  • (C++)八皇后问题
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Java数据结构)ArrayList
  • (多级缓存)多级缓存
  • (篇九)MySQL常用内置函数
  • (转)VC++中ondraw在什么时候调用的
  • (转载)OpenStack Hacker养成指南
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中 MVC 工厂模式浅析
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @EnableAsync和@Async开始异步任务支持
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [2]十道算法题【Java实现】
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Angular] 笔记 7:模块
  • [Deep Learning] 神经网络基础
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [HNOI2010]BUS 公交线路
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解