冒烟测试(smoke testing)&每日构建 (Daily Build)

Web功能测试实战:从核心流程到专项测试的完整指南 功能测试是软件质量保障的基石,其核心在于验证软件行为是否符合既定需求。在Web应用场景下,测试原理需充分考虑B/S架构的独特性,如跨浏览器兼容性、前后端分离交互及网络环境依赖。其技术价值在于通过系统化的测试策略,提前发现并修复缺陷,从而保障产品的稳定性与用户体验。典型的应用场景包括电商交易、在线学习等复杂业务流程的验证。本文将聚焦Web项目测试,深入剖析从需求分析到测试报告的全流程,并详解UI/UX、业务功能、接口测试等核心领域,同时结合兼容性测试与客户端性能监控等专项实践,为构建高质量的Web应用提供系统 阅读详情

关于冒烟测试,应该是微软首先提出来的一个概念,和微软一直提倡的每日build有很密切的联系。具体说,冒烟测试就是在每日build建立后,对系统的基本功能进行简单的测试。这种测试强调功能的覆盖率,而不对功能的正确性进行验证。从这一点看和所谓的“接受性(验收)测试(Acceptance Test)”非常相似。不同之处就在于他们执行的频率和被测的版本不同。

至于冒烟测试这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就必须重新来过。类似的如果冒烟测试没有通过,那么这个build也会返回给开发队伍进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。

冒烟测试的说法据说是:

就象生产汽车一样,汽车生产出来以后,首先发动汽车,看汽车能否冒烟,如果能,证明汽车最起码可以开动了。说明完成了最基本的功能。

冒烟测试准则

在软件中,“冒烟测试”这一术语描述的是在将代码更改签入到产品的源树中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。

注意
“冒烟测试”这一术语源自硬件行业。该术语源于此做法:对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。

下面的准则描述了冒烟测试的最佳做法。遵循准则的效果会有很大的不同,从增强团队成员之间的交流,到形成特定的使用测试和调试工具的方式等。

与开发人员协同工作

由于冒烟测试特别关注更改过的代码,因此必须与编写代码的开发人员协同工作。必须了解以下内容:

  • 代码中进行了什么更改。若要理解该更改,必须理解使用的技术;开发人员可以提供相关说明。
  • 更改对功能有何影响。
  • 更改对各组件的依存关系有何影响。

在进行冒烟测试前检查代码

在运行冒烟测试前,进行侧重于代码中的所有更改的代码检查。代码检查是验证代码质量并确保代码无缺陷和错误的最有效、最经济的方法。冒烟测试确保通过代码检查或风险评估标识的主要的关键区域或薄弱区域已通过验证,因为如果失败,测试就无法继续。

在干净的调试版本中安装私有二进制文件

由于冒烟测试必须侧重于仅对更新后的二进制文件中的功能更改进行验证,所以必须通过使用被测试文件的调试二进制文件来使测试在干净的测试环境中运行。

创建每日构建 (Daily Build)

每日构建要求团队成员协同工作,并鼓励开发人员彼此保持同步。如果新版本的迭代被延迟,则该延迟很容易导致具有多个依赖项的产品不同步。遵循每日构建和冒烟测试的过程,任何更改过的或新的二进制文件都可确保实现高质量。

将高质量的每日构建作为团队最重要的任务。如果由于签入代码未进行冒烟测试而导致版本中断,则需要开发人员和测试人员停止所有其他工作,直到问题被解决为止。对导致中断版本的人员的处罚不应该很重,但这个处罚一定要能强调这样一个道理:正确的每日构建是团队最重要的任务。

不需要执行穷举测试。冒烟测试的目的不是确保二进制文件 100% 没有错误。这样需要花费太多的时间。执行冒烟测试是为了在高级别验证版本。要确保二进制文件中的更改不会破坏常规版本的稳定性,也不会导致功能中出现严重错误。

Web 测试和负载测试

生成 Web 测试和负载测试时,在运行任何时间长、工作量大的测试之前运行冒烟测试是一种很好的做法。在 Web 测试和负载测试中,冒烟测试时间短,工作量也小。使用冒烟测试是为了在运行性能测试或压力测试之前,确保一切都已正确配置并可按预期运行。

每日构建和冒烟测试的优点主要有:

1.进度可见并可以控制到1-2天的细粒度,很容易看到进度的偏差

2.及早的发现开发BUG和缺陷并分析解决,对开发人员的一种监督和促进,提高软件质量

3.由于将大集成分解到每日构建中的小集成,避免了传统产品集成或集成测试时候出现的严重问题的可能。

4.在项目中宣灌质量意识,强调第一次就把事情做好,而不是等测试来帮你发现问题

每日构建和冒烟测试也存在一些风险和缺陷,具体主要有

1.给开发人员太大压力,开发每天都在较紧张环境中工作

2.需要额外的测试人力资源和每日构建硬件环境的投入

3.开发人员不能专注,既要分心去修改BUG,又要开发新的功能点

4.对开发负责人要求更好,需要将功能细化到1-2天的有明确输出的功能点

5.开发需要投入额外的精力来保证每日构建顺畅

适用场景

1.对进度偏差控制和要求很高的项目

2.开发检查点和里程碑制定的很细致的项目

3.采用增量和迭代开发的项目,快速和敏捷开发的项目

每日构建提前需要进行的准备工作

1.对开发进度计划的要求,需要细化出每1-2天的开发进度计划,可以到一个很小的功能点。

2.对每日构建测试计划的要求,需要根据开发进度计划来安排冒烟测试和系统测试进度计划。

3.需要提前准备好每日构建的环境(每日构建必须是独立的环境)

每日构建和冒烟测试工作的实现可以人工来实现,但更多的需要借助些自动化的工具来完成。对于每日构建一般要提前编写好每日够建的脚本,可以借助Ant或NAnt构建工具来完成。每日构建脚本的复杂性跟项目或系统本身复杂性相关,对于简单的只有一个项目的解决方案,可能构建脚本会很简单,而对于较复杂的系统或项目构建脚本将会教复杂。NAnt是一个强大的通过构建脚本自动编译的工具,在NAnt里面会做如下事情,而这个即使打开解决方案来编译也无法做到。

1.调用批文件重新自动生成数据访问层组件

2.创建相关的部署需要的cs_client,bs_client,server,service相关目录并拷贝公用文件

3.按照公用项目->逻辑层->界面层顺序和项目间依赖关系对各个项目逐一编译

4.调用外部工具soapsuds生成数据访问dll的代理类文件,逻辑层重新引用代理类进行编译(分布式部署需要)

5.引用3,4步需要的dll对Web项目进行编译

6.拷贝编译结果到相关的输出目录

每日构建和每日编译的最大区别就在于是否进行了冒烟测试,系统必须通过了冒烟测试才能够算每日构建成功。而测试人员人工介入的测试是基于冒烟测试通过的基础上面的。这里很简单一个例子,如我们NAnt配置文件忘记拷贝一个公共文件到server目录了,这个时候每日编译可能是通过的,但如果把这个版本部署出去测试无法进行测试的。或者说冒烟测试的一个重要作用就是要彻底解决由于构建自身原因引起的各种缺陷或Bug。

冒烟测试由于要验证整个编译的正确性,因此冒烟测试必须是针对整个系统进行冒烟测试。但冒烟测试只需要关注系统的主体功能即可,通过冒烟测试并不是说系统没有BUG,只是说通过了冒烟测试后可以说系统是一个稳定的版本,说系统的每日构建是成功了,代表系统可以转交专门的测试人员进行测试了。冒烟测试工作一般要采用自动化来进行,可以借助如LoadRunner等工具来录制自动化测试脚本,冒烟测试的脚本应该由专门的测试人员来维护,而且随着测试的进展冒烟测试脚本也应该是不断增加和补充的。

对于每日构建失败,直接责任的开发人员需要程度责任并付出代价。微软顾问经常爱举的一个例子就是凌晨2,3点开发人员被叫到公司解决每日构建失败的问题的案例。实际操作可能很难,但对构建造成影响的必须要承担应有的责任。

每日构建一般要配合使用源代码管理工具,而构建时间一般安排在每天下班后或晚上进行。开发人员需要保证每天检入的代码是能够顺利编译通过的,并保证在本机已经做了相关测试。每日构建并不是一定要要求每天都有新的功能点完成,如果今天开发完成的东西不是一个独立的可以提交测试的功能点,这个时候当天的源代码最好不要检入。代码的检入周期一般要在2-3天内,如果周期再长基本上就达不到每日构建的作用了。

每日构建必须有独立和专门的构建服务器和构建环境。构建服务器和构建环境与测试环境的最大区别在于构建环境是完全Copy开发环境,单独出构建环境目的是保证构建过程不和开发环境和过程冲突。如果条件不允许的话可以将构建环境和测试环境合并,但构建环境必须和开发环境分离。

每日构建的成功要素

1.每天都进行编译和冒烟测试

2.冒烟测试脚本随着测试的进度不断完善和补充

3.构建成功在项目中拥有较高的优先级

4.通过过程的制定保证构建失败更多的是因为异常因素而非规则不清

5.在压力下不要抛弃过程

软件测试人员之每日构建冒烟测试 冒烟测试应该对整个系统进行端到端的验证。通常我们会事前设计一些冒烟测试用例,然后对其进行测试 阅读详情

相关推荐

软件测试流程之每日构建

软件测试流程之每日构建测试管理()上周,manager告诉我,为了便于公司内部对版本进行管理,以后版本实现每日构建每日构建的意思是,以每几天为一个周期,对版本进行需求提交、程序开发、修改、测试等一系列过程。软件的版本问题,似乎是所有软件       软件测试流程之每日构建 测试管理  ()上周,manager告诉我,为了便于公司内部对版本进行管理,以后版本实现每日构建每日构建的意思是,以每几天为一个周期,对版本进行需求提交、程序开发、修改、测试等一系列过程。  软件的版本问题,似乎是所有软件公司的问题,因为版本的混乱导致了很多本来就不该发生的问题。在以前的公司,就出现过这个事情,程序开

每日构建 Daily build

一个好的办法是每日构建daily builds)。 每日构建意味着自动地,每天,完整地构建整个代码树、(译者按:“代码树”,原文为source tree,意思是将整个项目源代码的目录,子目录,文件的位置尽可能事先固定下来...

cptj5564的博客 404

【DevOps】我们忽视了Daily Build每日构建)吗?

一、什么是Daily Build每日构建,简而言之就是每天把当前最新的代码集合拉取下来,然后进行编译构建并进行自动化的冒烟测试,然后通过某种形式把构建结果进行系统性展示给相关干系人。这是持续集成的其中一项最佳实践,最早出现在微软,我个人认为这是放之四海而皆准的一个原则,只是不同公司的实际操作会有异同。它的目的不是在于减少构建失败的次数,而是要尽早发现问题,降低解决问题的成本。 二、为什么要做Daily Build? 1、可以让同事从日常工作中养成质量意识。 为什么会这样说呢?实际上我翻阅过.

justyman的博客 3979

软件工程进阶之每日构建

在昨天“正确地做事(善用工具)”的帖子里提到了代码提交频度的问题。当时我特别强调了“要保证提交的代码能编译通过”,理由是“对于每日构建很重要”。我估计列位看官中,不太熟悉每日构建的,大有人在;而且国内停留在手工作坊阶段的软件公司,为数也不少。因此今天我们就来说一下"每日构建"这个话题。假如你平时已经很善于运用"每日构建"这一有效的手段,可以直接略过本系列,去看其它帖子。   照例先来说说什么是“每

蜜我生活之牛仔“闺房” 584

每日集成 --- 也许被敏捷忽视的重要技术实践

先从每日构建说起:每日构建是什么? 每日构建对应的英文是Daily Build,由于翻译和理解的问题,也有称之为“每日编译” 由于一般的每日构建发生在晚上,发生在晚上的每日构建,也称为Nightly Build ,中文译为“夜晚构建”或者“晚间构建”,百度检索下,“夜晚构建”要远多于“晚间构建” 来自 http://en.wikipedia.org/wiki/Daily_build ...

各研发管理 407

冒烟测试和系统预测试的区别?

如题,冒烟测试就是在每日build建立后对系统的基本功能进行简单的测试,而系统预测试也是先验证项目某个版本的基本功能是否已经实现,2者有着什么区别呢?是不是冒烟测试DAILY BUILD,即每天都要做的,而预测试是一个版本提交后才做? == 测试重点不一样冒烟集中于新增功能是否能够使用,为后面的系统预测是做铺垫,防止因为一些严重问题而影响后期测试的计划具体问题具体处理,冒...

weixin_34211761的博客 1434

AI工程化实践:从GEO评估陷阱到CI/CD门禁的全链路方案

在AI工程化领域,持续集成与持续部署(CI/CD)是现代软件开发的核心实践,通过自动化构建测试和部署流程确保代码质量。其技术原理基于版本控制、自动化测试和容器化技术,能够显著提升开发效率和系统可靠性。在AI搜索和Agent开发场景中,CI/CD的价值尤为突出,需要建立分层门禁体系应对AI生成代码的随机性。GEO仪表盘作为传统搜索引擎的评估工具,在AI搜索时代面临测量失效的挑战,而基于业务结果的可验证指标和动态冒烟测试成为关键解决方案。这些工程实践结合大仓模式下的微服务治理,为AI Agent的自动化编码和

weixin_34054931的博客 345

技术项目管理实战:如何确保关键版本在截止日期前高质量交付

在软件工程领域,项目管理是确保复杂系统按时、按质交付的核心能力。其原理在于通过科学的方法论,将宏观目标拆解为可执行、可度量的任务,并对过程进行精细化管控,从而有效管理风险、协调资源,最终实现项目价值。对于技术团队而言,这不仅关乎流程,更直接影响产品的市场竞争力与团队效能。典型的应用场景包括重大版本发布、核心功能上线以及与时间赛跑的产品解禁日。本文聚焦于“目标拆解”与“过程管控”两大关键环节,结合“三点估算”和“看板方法”等实战工具,深入探讨如何将“跑赢日历”的挑战,转化为一套每日可追踪、可验证的具体行动体系

weixin_33816821的博客 413

每日构建

一个好的办法是每日构建daily builds)。 每日构建意味着自动地,每天,完整地构建整个代码 树、(译者按:“代码树”,原文为source tree,意思是将整个项目源代码的目录,子目录,文件的位置尽可能事先固定下来,这样在开发过程中各个模块间,各个文件间的相对位置都不会混乱。源代码 树指的就是一个项目所有的已经组织好的代码文件。通常代码树应该用版本控制软件管理起来。虽然这个概念很基本,但

王耀的专栏 1180

Daily Build--每日构建

在我现在的游戏项目中,基本上每天都要代码,各种游戏资源需要更新。而且每次从SVN服务器上更新代码后都要编译好久。另外资源的更新也是一件很麻烦的事情,因为我们的所有游戏资源都是统一放在一个FTP上面,每个版本发布之后都会把最新的游戏资源放在里面。每次从FTP上把好几G的数据更新下来很是费时间。于是我在想能不能写个小程序让这些都自动执行,即能够设定一个时间。例如每天的凌晨从FTP上把资源更新下来,然后

Zippo's Sky 6383

软件--冒烟测试

冒烟测试,是对软件的基本功能进行测试测试对象是每一个新编译的需要正式测试的软件版本,目的是确认软件的基本功能正常,保证软件系统能正常跑起来,可以进行后续的正常测试工作的进行,如果最基本的测试都有问题了,就直接打回开发部了,所以正式交付的测试版本,必须先通过冒烟测试的考验...

Aplumage的专栏 3334

冒烟测试用例

选择一个已存在的记录,并进行编辑操作(如修改任务的标题或描述)。- 确认每个链接是否导航到相应的页面,并且页面内容正确显示。- 在相关模块中创建一个新的记录(例如,创建一个新的任务)。- 确认记录是否成功删除,并且不再显示在相应的列表或视图中。- 确认系统是否能够正确处理这些错误,并给出适当的错误提示。- 确认记录是否成功创建,并显示在相应的列表或视图中。- 确认记录是否成功保存,并且修改后的内容正确显示。- 确认搜索结果是否准确,并且匹配预期的记录。- 选择一个已存在的记录,并执行删除操作。

m0_63770815的博客 2000

什么是 Nightly Build

每日构建(Nightly Build,也叫Daily Build), 是将一个软件项目的所有最新代码取出,从头开始编译,链接,运行测试软件包对代码进行单元测试并对主要功能进行测试,发现错误并报告错误的完整过程.每日 构建是连续集成的一个最佳实践,它要求每天至少构建软件一次.因为对于许多大型项目来说,每次构建花掉的时间可能高达几个小时,在白天进行构建可能会消耗 过多的计算机资源,对开发造成一定的影响

mingyuan's workspace 3686

Daily Build and Smoke Test

Steve McConnell,代码完成(code complete)的作者曾于1996年在IEEE Software杂志上发表了下面这篇关于每日编译和冒烟测试的文章,已经是别人当时的最佳实践(Best Practices)了。我们现在好几个项目组都在做Daily Build,就这一点上,其实已经落后别人十年了,但是我们希望能够坚持把Daily Build做好,为研发的正常进行提供保证。

1045

冒烟测试Smoke Testing

冒烟测试的定义,应用场景,编写流程等

weixin_43812150的博客 7009

什么是冒烟测试 每日build

 什么是冒烟测试?http://www.enet.com.cn 2007年04月23日11:04【导 读】:关于冒烟测试,应该是微软首先提出来的一个概念,和微软一直提倡的每日build有很密切的联系。具体说,冒烟测试就是在每日build建立后,对 系统的基本功能进行简单的测试。这种测试强调功能的覆盖率,而不对功能的正确性进行验证。从这一点看和所谓的“接受性(验收)测试(Accept

GreenLearner的专栏 1501

软件测试系列——冒烟测试Smoke Test,ST)

1.核心 冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。   如果不通过,则打回开发那边重新开发;   如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。 简化:门槛测试,一个开关而不是一个阶段。 目的:版本验证测试BVT(Build Verification Testing)。 时间:开发转测试,历时半至一个小时,很短。 对象:需求覆盖,主功能路径。 优点:节省测试时间,防止build失败。 缺点:覆盖率还是比较低。.

程序员-小枫的博客 2万+
上一篇: 浅谈-易用性测试[网摘]
下一篇: 黑盒测试——功能测试常用的策略和方法
hhb200766
博客等级 码龄18年 70粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值