热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么是冒烟测试??

原文出处:https:www.jianshu.comp46a2fc4a1d00近期在和一些研发团队沟通时,发现许多同学对于冒烟测试有一些理解的误区,CC先生就想来捋一捋这个概

原文出处:https://www.jianshu.com/p/46a2fc4a1d00

近期在和一些研发团队沟通时,发现许多同学对于冒烟测试有一些理解的误区,CC先生就想来捋一捋这个概念。

误区一:开发不知道冒烟测试是干嘛的。

通常一提到冒烟测试,大家都习惯性的把关注点放在后面两个字:测试 ,开发的同学一听这个活动,很开心,这不是我们的活儿,应该是测试人员来完成的。真的是这样么?

先来看看维基百科上对冒烟测试的解释:
smoke testing is preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release. Smoke tests are a subset of [test cases] that cover the most important functionality of a component or system, used to aid assessment if main functions of the software appear to work correctly.[1][2] When used to determine if a computer program should be subjected to further, more fine-grained testing, a smoke test may be called an intake test.[1] Alternately, it is a set of tests run on each new build of a product to verify that the build is testable before the build is released into the hands of the test team.[5] In the DevOps paradigm, use of a BVT step is one hallmark of the continuous integration maturity stage.

冒烟测试这个名称的来历,最初是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟再进行其它测试,否则就必须重新来过。


 
冒烟的电路板.jpg

而在软件研发中,冒烟测试其实是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系。具体说,冒烟测试就是在每日build(构建版本)建立后,对系统的基本功能进行简单的测试。这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。

冒烟只是这类测试活动更形象化一些的叫法,直接叫做BVT(Build Verification Testing)其实CC先生个人觉得更为贴切。

误区二:冒烟测试为一个测试阶段

有些团队在定制流程时会有一个阶段叫冒烟测试,但是就算不通过也会继续做后面其它部分的测试。就像平时进机场的时候机场口都会有个小哥哥或者小姐姐拿一个不知名的物体对你扫一次,大多数情况下旅客们都是面无表情的走过他们身边,扫就扫呗,又不少两斤肉。

实际上什么打火机啊,充电宝啊会在之后的安检过程才会被一一挑出来。


 
安检中.png

我们反过头来看当时微软提出来的这个概念,它的重点其实在于 daily build ,也就是说冒烟测试是随着每一次构建而走的,它应该是一个开关而不是一个研发流程中的测试阶段。

过,你可以继续后面的测试。

不过,直接返工等待下一次的构建。

这才是冒烟测试应有的态度。

误区三:冒烟测试需要把此次需求的主流程都走一遍

一些团队通常为了督促开发人员提高研发质量而把冒烟通过率作为一个衡量指标。CC先生认为出发点是极好的,实现手段上经常会有一点点小偏差。

冒烟测试主要是测试系统的主流程是否可用,如果这次的需求不涉及到太多主流程上面的更改,那真的有必要把这些案例都加入到冒烟测试中么?

最后,冒烟测试的最佳实践还是最好被自动化,在CI中每一个Build都自动的去执行主流程的测试,确保其是一个基本可用的版本。手工测试这事儿吧,西部世界都第二季完结了,你们还没醒悟么?



作者:CC先生之简书
链接:https://www.jianshu.com/p/46a2fc4a1d00
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

推荐阅读
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • LeetCode 204: 计算质数
    本题要求计算小于给定非负整数n的所有质数的数量。感谢@mithmatt为此问题提供测试案例。 ... [详细]
  • Go从入门到精通系列视频之go编程语言密码学哈希算法(二) ... [详细]
author-avatar
IHH_MCWONG_142
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有