首页 > 其他分享 >软件测试 —— 冒烟测试(Smoke Test,ST)

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

时间:2023-10-30 14:55:04浏览次数:38  
标签:功能 Smoke 冒烟 ST 案例 测试 版本 bug 软件测试

1. 核心

冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。

  如果不通过,则打回开发那边重新开发;
  如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。

简化:门槛测试,一个开关而不是一个阶段。

目的:版本验证测试BVT(Build Verification Testing)。

时间:开发转测试,历时半至一个小时,很短。

对象:需求覆盖,主功能路径。

优点:节省测试时间,防止build失败。

缺点:覆盖率还是比较低。

操作:对着需求文档把新功能过一遍;把所有流程功能走一遍;用monkey跑个一两个小时;如果有历史用例的话,可以把用例分级,冒烟级、详细级、回归级等等

用例:冒烟测试基本上不需要什么用例,如果有的话,就用详细用例里,覆盖需求文档级别的用例就可以了

冒烟测试,是版本验证测试,主要确认新的版本是否存在致命性bug,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

回归测试,是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误导致其他代码产生错误

2. 定义

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

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

3. WHY

为什么进行冒烟测试?软件测试从业者都知道,bug发现的越晚,修复bug的成本就越高。那成本高在哪里呢?

  1. 影响的代码多,开发的修复成本会增加
  2. 影响的功能范围较大,测试回归的范围增加
  3. 容易引发更多的bug,拉长测试周期,还有质量风险
  4. 更多的bug,会增加bug的提交、沟通成本

所以,如何尽早发现bug,把bug置解决是降低成本和控制止风险的有效方式,也是QA的主要职责之一。因此使用冒烟测试的方式,对开发提测的代码进行审查,找出那些非常浅显的bug是很有必要的

4. 特点

  (1) 这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。

  (2) 冒烟测试是随着版本转测进行的,它应该是一个开关(判断版本能否转测试)而不是一个研发流程中的测试阶段。

  (3) 冒烟测试用例一般选取的是测试用例中level 0的用例,保证主功能可用。

  (4) 冒烟测试就是在一个新版本出来的时候,将软件的全部功能过一遍,看有没有什么大问题。如果功能可以正常运行,不会影响测试进行,那么这个版本就可以真正开始测试了。如果功能有重大问题或影响测试进行,那么这个版本就是不合格的,不用进行进一步的测试。

5. 实现

  开展冒烟测试工作有助于尽早发现软件代码存在的问题,提高软件代码的质量和开发效率。

  基于持续集成(Continuous Integration,CI)的冒烟测试采用自动化测试脚本进行测试工作,能够提高测试效率,减少测试人员大量的重复测试验证工作。

  冒烟测试的最佳实践还是最好被自动化,在CI中每一个Build都自动的去执行主流程的测试,确保其是一个基本可用的版本。

  冒烟测试可以手动执行,也可以自动化执行。稳定的系统适合自动化冒烟测试,集成过程中的系统适合手工冒烟测试,因为冒烟测试内容在动态变化,变化中的自动化脚本维护工作量比较大。

6. 案例选择原则

  既然只是个准入门槛那就不会选择全部案例进行测试,根据经验,选择全部案例数的 40%-50% 测试通过率在 80% 左右即可视为冒烟测试通过,允许测试准入,那这部分案例如何选择呢?

  遵循以下原则

  A选取重要功能案例。

    重要功能案例至少应占冒烟案例的 30%,特别关注对软件功能实现具有重要影响的功能模块测试案例,例如:一个事件(业务)的增加、删除、修改、查询,一个统计、计算逻辑的的结果校验等。

  B选取主要流程

    主、分流程,对于主流程案例原则上应选取,分支流程案例可视其与主流程关联度和影响度从高到低选择部分。如主流程未通过,即使总案例通过率达到通过标准,该软件也应被拒绝准入,待开发人员修正后重新进入冒烟测试环节。例如:一个审批流程,即使增加、删除、修改、查询的功能均通过,但如果整个流程环节中出现阻塞,无法完成完整的审批,则应视为冒烟未通过。

  C筛选数据案例

    筛选与主流程、重要功能相关度高的数据测试案例,原则是确保数据的埋设满足主流程、重要功能测试条件。例如:想校验一个商品购买的正确性,就离不开商品种类、单位、库存、价格、购买数量等数据相关案例。这仅是一个简单的商品购买,如果是统计分析则更需要大量不同种类、不同时点的数据作为测试基础。

7. 涉及角色

  冒烟测试在测试环境搭建与执行过程中,涉及到的人员包括:测试架构师、管理自动化工厂的测试工程师、开发工程师、持续集成工程师、质量工程师。

8. 冒烟测试 V.S. 回归测试

冒烟测试,是版本验证测试,主要确认新的版本是否存在致命性bug,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

回归测试,是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误导致其他代码产生错误

最后如果你想学习自动化测试和需要软件测试资料,欢迎加入笔者的交流群:320231853,里面会有很多测试资源和大佬答疑解惑,我们一起交流一起学习!

搜索

复制

标签:功能,Smoke,冒烟,ST,案例,测试,版本,bug,软件测试
From: https://www.cnblogs.com/nhb1234/p/17797849.html

相关文章

  • postgresql数据库经纬度转geometry
    postgresql数据库经纬度转geometry1、在postgresql数据库中,如果字段类型是geometry,更新该字段为经纬度(坐标),可以尝试采取以下脚本:注意:108.658463代表经度34.1437代表纬度中间没有逗号updatetablesetgeom=ST_GeomFromText('POINT(108.65846334.1437)',4490)wh......
  • 数组,list,字符串的一些转换
    //list转数组Long[]ids=updateIds.toArray(newLong[updateIds.size()]) // 数组转listList<String>reasonList=Arrays.asList(perm.trim().split(",")) // String转数组String[]reasons=business.getReason().split(",") //数组转字符串需要引⼊......
  • fastapi websockets
    #pipinstallwebsocketsfromuvicornimportrunfromfastapiimportFastAPIapp=FastAPI(title="websocket")fromtypingimportListfromfastapiimportFastAPI,WebSocket,WebSocketDisconnectfromfastapi.responsesimportHTMLResponseht......
  • 06ArrayList源码分析
    ArrayList一、ArrayList集合的底层原理--扩容机制利用空参创建的集合,在底层创建一个默认长度为零的一个数组。添加第一个元素时,底层会创建一个新的长度为10的数组。存满时候,会扩容1.5倍。如果一次添加多个元素,1.5倍放不下,则创建数组的长度以实际为准。如:添加100......
  • 07LinkedList集合
    LinkedList集合一、LinkedList集合底层数据结果是双链表,查询慢,增删快,但是如果操作是首尾元素,速度也是极快的。LinkedList本身多了很多直接操作首尾元素的特有API。特有方法说明publicvoidaddFirst(Ee)在该列表开头插入指定元素publicvoidaddList(Ee)......
  • 04List系列的集合
    List集合特点:有序:存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复一、List集合的特有方法Collection的方法List都继承了List集合因为有索引,所以多了很多索引操作的方法。方法名称说明voidadd(intindex,Eelement)在此集......
  • Atcoder Beginner Contest 326 (ABC326)
    不知道为什么拖到现在,我是摆怪。A.2UP3DOWN模拟,略。B.326-likeNumbers模拟,略。C.Peak双指针板子。D.ABCPuzzle基础dfs。但是赛时不知道为什么觉得状态数不会很少,于是写了一个巨大复杂的状压。这里粗略算算有效状态数:仅考虑每行的限制,有\(\binom{3}{5}=10\)种选......
  • C++23:多维视图(std::mdspan)
    C++23:多维视图(std::mdspan)介绍在C++23中,std::mdspan是一个非拥有的多维视图,用于表示连续对象序列。这个连续对象序列可以是一个简单的C数组、带有大小的指针、std::array、std::vector或std::string。这种多维视图通常被称为多维数组。多维数组的形状由其维数(也称为秩)和每个......
  • 使用Lombok@Builder、@Data(没有生成无参构造方法)这个坑要注意,使用@Builder时配合@NoAr
    使用Lombok@Builder、@Data(没有生成无参构造方法)这个坑要注意,,使用@Builder时配合@NoArgsConstructor和@AllArgsConstructor一起使用Lombok为我们开发带来了极大便利,特别是在想要使用建造者模式的时候只需要在类上加@Builder注解即可。但是不小心也会引发隐藏的bug。我们来看......
  • Stable Diffusion新玩法火了!给几个词就能生成动图,连动图人物的表情和动作都能随意控制
    作者|小戏单说大模型AI的发展对人们想象力释放的助力,基于StableDiffusion模型的方法首当其冲。透过文本描述到图像生成技术,大模型为我们的想象力打开了一个恢弘的梦幻世界。透过点滴文字,就有可能重现禁锢在我们脑海中无法释放的光怪陆离。而最近,StableDiffusion持续进化,......