软件测试与开发流程

软件测试简介

        软件测试是对软件进行检测和评估,以确定其是否满足所需结果的过程和方法。它是在规定的条件下对程序进行操作,发现程序错误,从而衡量软件质量,并对其是否满足设计要求进行评估的过程。

        与计算机系统操作有关的计算机程序文档数据都可称为软件。程序、文档、数据这三者结合起来就是完整的软件。

软件开发模型

瀑布模型

优点:软件开发的各个阶段比较清晰,强调早期计划和需求调查,比较适合需求稳定的产品开发

缺点: 整个过程是线性的,测试排在最后,系统的早期错误可能后期才能被发现。

敏捷开发模型

适用于产品需求频繁变化和产品需要快速开发的场景。常见的敏捷开发模型有XP和Scrum。

XP(Extreme Programming,极限编程)

XP是一种近螺旋式的开发模型。它是把复杂的周期分解为一个个相对简单的小周期。极限编程从编程方法、小组实践、交付与发布三个维度来组织开发流程。

Scrum 

在Scrum模型中,最基本的概念就是Sprint。Sprint通俗来说就是一个迭代周期。

DevOps开发模型 

        DevOps(Dev和Ops的组合词)涉及软件整个开发生命周期中的各个阶段。DevOps是一个非常关注开发人员(Dev)、运维人员(Ops)以及测试人员之间沟通合作的开发模型。DevOps是通过自动化方式完成软件测试交付流程的,以便在构建、测试、发布软件能够更加快捷、频繁和可靠的运行。

 DevOps生命周期:

 (1)持续开发

  • 计划阶段
  • 编码阶段
  • 构建阶段

(2)持续测试

(3)持续集成(CI)

(4)持续部署

(5)持续监控

常见测试流程

单元测试

单元测试是对软件中的基本组成单位进行的软件测试。目的是检验软件的基本组成单位的正确性 

测试方法:白盒测试

集成测试  

集成测试是对软件系统集成过程中进行的测试,目的是检查软件模块之间的接口是否正确

测试方法:黑盒与白盒结合

冒烟测试

冒烟测试是在软件开发过程中针对软件基本功能的一种快速验证,是对软件基本功能进行确认验证的手段

测试方法:黑盒测试(手工或自动化测试方式)

系统测试

系统测试是对已集成好的软件系统进行彻底的测试,验证软件系统的正确性和性能等是否满足其规约所指定的要求。一般系统的主要测试工作都集中在系统测试阶段。在系统测试中,又包括功能测试、性能测试、安全测试、兼容性测试

测试方法:黑盒测试

验收测试

验收测试是部署软件之前的最后一种测试。验收测试的目的是确保软件准备就绪。

测试方法:黑盒测试

软件测试模型

V模型

V模型是开发模型中瀑布模型的一种改进。瀑布模型将软件生命周期划分为计划、分析、设计、编码、测试和维护这六个阶段。V模型改进了瀑布模型的缺点,在软件开发时期,开发活动和测试活动几乎同时开始。 

优点:明确标注了测试过程中存在着哪些不同的测试类型,并且可以清楚地表达测试和开发各阶段的对应关系。

缺点:顺序性,进入测试后发现的bug不容易找到根源。如果有较大的需求变更,会导致返工量较大。

W模型

W模型是从V模型演化过来,相对于V模型,在软件各开发阶段中W模型增加了应同步进行的验证和确认环节。W模型由两个V组成,分别代表测试过程和开发过程。测试与开发同步进行,有利于尽早、全面地发现系统中的问题。

优点:测试与开发同步进行,而且测试对象不仅仅是程序,还包括需求和设计。这样可以尽早发现软件缺陷,降低软件开发成本。

缺点:开发与测试依然是线性关系,项目的需求变更和调整依然不方便。如果前期工作中没有产生文档,根本无法执行W模型。

H模型 

H模型把测试完全独立出来,形成一个完成独立的工作。将测试准本工作和测试执行工作清晰地体现出来。

图中的其他流程可以是任意的开发流程。测试流程是灵活的,只要满足测试条件,并且完成测试准备活动,测试就可以进行了。

优点:在H模型中软件测试活动可以尽早准备、尽早执行,具有很强的灵活性。而且软件测试可以根据被测对象的不同而分层次、分阶段、分次序执行,同时也是可以被迭代的。

缺点:对于项目管理要求很高、对于测试人员的技能要求也很高、测试就绪点的分析也比较困难。

3种测试模型对比:

  • V模型适用于中小企业
  • W模型适用于中大型企业
  • H模型对测试人员的技能要求非常高,使用比较少 

系统测试工作流程

 Bug管理流程

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】JSON和YAML文件格式的相同点和不同点

JSON(JavaScript Object Notation)和YAML(YAML Ain’t Markup Language)都是用于数据表示的文件格式。它们有一些共同点和不同点: 共同点 数据表示:两者都用于表示结构化数据,并且都是人类可读的格式。支持复杂数据结构:都可以表示复杂的数据结构,如对象、数组、字符…

使用Python绘制堆积柱形图

使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图(Stacked Bar Chart)是一种数据可视化图表,用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值,子类别的数值在柱状条上堆积在…

刷题小记----Java的一些输入方式

场景1:输入字符串 输入描述: 每个测试输入包含2个字符串 Scanner scan new Scanner(System.in); String str1 scan.nextLine(); String str2 scan.nextLine();场景2:输入数组 输入描述: 输入的第一行为一个正整数n(1 ≤ n ≤ 1…

基于Redis和阻塞队列的 异步秒杀业务

异步前 之前的秒杀业务的查询优惠券、查询订单、减库存、创建订单都要查询数据库,而且有分布式锁,使得整个业务耗时长,对此采用异步操作处理,异步操作类似于餐厅点餐,服务员负责点菜产生订单、厨师负责根据订单后厨做…

[leetcode hot 150]第二十三题,合并K个升序链表

题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释&#xff1a…

解析Java中1000个常用类:Dictionary类,你学会了吗?

在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站 推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程…

IDEA越用越卡?教你轻松解决IDEA内存占用过高问题

大家好,我是瑶山,最近IDEA越用越卡了,刚刚内存卡爆,带着整个电脑也卡的飞起,只能重启了电脑。 虽然重启后又恢复到了流畅,但是问题还是如鲠在喉,痛定思痛,还是决定处理下&#xff01…

基于SpringBoot+Vue的招生管理系统(带1w+文档)

基于SpringBootVue的招生管理系统(带1w文档) 通过招生管理系统的研究可以更好地理解系统开发的意义,而且也有利于发展更多的智能系统,解决了人才的供给和需求的平衡问题,招生管理系统的开发建设,由于其开发周期短&…

WHAT - React useReducer vs Redux

useReducer 和 Redux 都是用于管理应用程序状态的工具,但它们有几点不同之处: useReducer React 内置钩子: useReducer 是 React 提供的一个内置 Hook,用于在函数式组件中管理局部状态。可以通过定义一个 reducer 函数来处理状态…

在 PostgreSQL 中,如何处理大规模的文本数据以提高查询性能?

文章目录 一、引言二、理解 PostgreSQL 中的文本数据类型三、数据建模策略四、索引选择与优化五、查询优化技巧六、示例场景与性能对比七、分区表八、数据压缩九、定期维护十、总结 在 PostgreSQL 中处理大规模文本数据以提高查询性能 一、引言 在当今的数据驱动的世界中&…

555定时器

硬件大杂烩 1. 555定时器内部结构 各引脚定义作用 引脚1: GND (地),功能:接地,作为低电平(0V)。 引脚2: TRIG (触发),功能:当此引脚电压降至1/3VCC (或由控制端决定的阈值电压)时,输出端给出高电平。 引…

MyBatis 的知识要点,面试多半会被问到的知识点

1、什么是 MyBatis? MyBatis 是一款优秀的支持自定义 SQL 查询、存储过程和高级映射的持久层框架,消除了 几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索 。 MyBatis 可以使用 XML,或注解进 行配置和映射,MyBatis 通过将参数映射到配置的 SOL,形…

【设计模式之美】策略模式方法论:解耦策略的定义、创建和使用

文章目录 一. 策略的定义-封装策略,面向接口二. 策略的创建-创建策略工厂1. 对于无状态策略2. 对于有状态策略 三. 策略的使用:动态选择四. 避免分支判断-策略的优雅1. 对于无状态的策略2. 对于有状态的策略 策略模式是定义一族算法类,将每个…

雅思词汇及发音积累 2024.7.6

地理方位 1.right 右边 2.left 左边 3.in front of 在前面 4.behind/rear 在后面 5.next to 在旁边 6.at the end of 在末端 7.opposite to 在对面 8.be far from 距离某处很远 9.be nearby 距离某处很近 10.go back/back/back up 向回走 11.go up/down 向上(北&…

数据结构(3.3)——栈的链式存储结构

链栈的定义 采用链式存储的栈成为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现。 typedef struct Linknode {int data; // 数据域struct Linknode* next; // 指针域 } LiStack; // 栈类…

常见的块元素、行内元素以及行内块元素,三者有何不同?

在HTML中,元素可以分为块级元素(block-level elements)、行内元素(inline elements)和行内块元素(inline-block elements)。它们之间的主要区别如下: 块级元素(block-le…

【CUDA】 由GPGPU控制核心架构考虑CUDA编程中线程块的分配

GPGPU架构特点 由于典型的GPGPU只有小的流缓存,因此一个存储器和纹理读取请求通常需要经历全局存储器的访问延迟加上互连和缓冲延迟,可能高达数百个时钟周期。与CPU通过巨大的工作集缓存而降低延迟不同,GPU硬件多线程提供了数以千计的并行独…

YOLOv8改进 添加轻量级注意力机制ELAttention

一、ELA论文 论文地址:2403.01123 (arxiv.org) 二、Efficient Local Attention结构 ELA (Efficient Local Attention) 被用于处理自然语言处理任务中的序列数据。它旨在提高传统注意力机制的效率,并减少其计算和存储成本。 在传统的注意力机制中,计算每个输入位置与所有其…

MYSQL 四、mysql进阶 6(索引的创建与设计原则)

一、索引的声明和使用 1.1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 按照 物理实现方式 ,索引可…

centos 7系统升级内核(ELRepo仓库)、小版本升级、自编译内核

使用ELRepo仓库 ELRepo是一个第三方仓库,提供了最新的linux内核版本。 安装ELRepo密钥: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安装ELRepo仓库: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elre…