软件测试之基础概念学习篇(需求 + 测试用例 + 开发模型 + 测试模型 + BUG)

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 1. 什么是软件测试2. 软件测试和软件开发的区别3. 软件测试和软件调试的区别4. 什么是需求1)以需求为依据设计测试用例5. 测试用例是什么6. 什么是 BUG(软件错误)7. 五个开发模型1)瀑布模型2)螺旋模型3)迭代模型、增量模型4)敏捷开发模型8. 测试模型1)V 模型2)W 模型9. 软件测试的生命周期(软件测试的流程)10. 如何描述一个 BUG11. BUG 的级别1)崩溃2)严重3)一般4)建议(次要)12. BUG 的状态转移图

1. 什么是软件测试

软件测试就是验证软件功能是否满足用户需求

在具体业务中表现为,最终交付的产品是否和用户的需求一致,如果不一致,则需要找出不一致的点


2. 软件测试和软件开发的区别

  • 难易程度方面
    开发对于知识的广度小,专业度高,测试的广度大,专业度低
  • 技能要求方面
    测试比开发要求更广泛,测试人员需要具备一定的业务能力、沟通能力、对测试工具的收敛使用,是需要有一定的编程能力

3. 软件测试和软件调试的区别

目的


软件测试的目的是验证软件是否满足用户的需求


软件调试的目的是验证软件是否实现了开发人员想让它实现的功能


角色


软件测试是由开发人员和测试人员共同完成的


软件调试是由开发人员完成的


阶段


软件测试贯穿了整个软件开发的生命周期


软件调试只是在开发阶段

软件开发的生命周期


需求分析 -> 计划 -> 设计 -> 开发 -> 测试 -> 运维


4. 什么是需求

需求就是实现用户的期望或者满足文档(合同、标准、规范)所需要的条件或者权限


需求包括软件需求和用户需求


用户需求就是用户想要软件实现的功能,用户需求比较粗略直接实现比较困难


软件需求是从用户需求转化而来的,是对用户需求的细化和具体实现


软件需求是测试人员进行测试工作的基本依据


1)以需求为依据设计测试用例

首先验证需求,保证需求正确可实现,然后细化需求,从需求中提炼出一个个测试项


以 “ 用户登录 ” 为例,具体过程如下:

77.png


5. 测试用例是什么

测试用例是为了实施测试向被测试系统提供的一组集合,包含:测试环境、测试步骤、测试数据、预期结果等因素

测试用例告诉我们该测什么,怎么测

设计一条网易邮箱登录的测试用例:


78.png

测试环境: Chrome PC端 Windows操作系统


测试数据: 用户名:123456 密码:h123456789


测试步骤:


在 Chrome 浏览器打开网易邮箱 URL

输入用户名和密码

点击登录

预期结果: (操作完测试步骤后的结果)登陆成功


6. 什么是 BUG(软件错误)

当且仅当规格说明书(软件需求)存在且合理,程序和软件需求之间不匹配的情况就是 BUG

当软件需求不存在,用户需求存在且合理,软件功能和用户需求不符合,就说明是软件错误

软件测试在需求分析阶段时需要验证需求的合理性和正确性


7. 五个开发模型

软件开发的生命周期


需求分析 -> 计划 -> 设计 -> 开发 -> 测试 -> 运维


1)瀑布模型

瀑布模型是严格按照软件开发的生命周期进行的分阶段的开发模型

79.png


优点: 强调开发的阶段性,强调早期的需求分析和后期的测试


缺点: 测试在编码后才开始介入,导致前期的问题后期才发现,可能会失去错误补救的机会


2)螺旋模型

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模型,螺旋模型就是典型的 渐进式开发模型,螺旋模型适用于 规模庞大、复杂度高、风险大 的项目


80.png


优点: 强调严格的风险管理,强调各开发阶段的质量


缺点: 引入严格的风险管理,需要更多人员、时间和金钱的投入


3)迭代模型、增量模型

将一个系统分为四个模块,A、B、C、D,在两周内将四个模块开发完成


迭代模型:


第一周先开发 A、B、C、D四个模块的基础功能


第二周再在第一周的基础之上完成其他的功能


增量模型:


第一周开发 A、B 两个模块的功能


第二周开发 C、D 两个模块的功能


增量模型和迭代模型抗风险能力都很强,迭代模型相比较增量模型还要更强些


4)敏捷开发模型

敏捷开发是一种可以应对快速变化的用户需求的一种软件开发模式


特点:


轻文档、轻流程、重目标、重产出


拥抱变化,客户可以在整个流程中对需求进行更改


周期短,团队人员少但精干


敏捷宣言:


个体与交互重于过程和工具


可用的软件重于完备的文档


客户协作重于合同谈判


响应变化重于遵循计划


Scrum 中的角色


PO(product owner)产品经理,负责整理用户需求,形成 userstory

SM(scrum master)项目经理,管理整个团队,负责敏捷流程的顺利实施,以及各种会议的顺利召开

ST(scrum team)研发团队,负责整个项目的研发,由各种技能的工程师组成

Scrum 流程


81.png

81.png

发布计划会议: 产品经理收集需求相乘 userstory,讲解 userstory,决定本次迭代需要开发的 userstory 形成 sprint backlog

迭代计划会议: 分析 userstory,把 userstory 分解成一个个的任务,分配给开发人员,制定开发计划

每日会议: 讲解昨天干了什么,遇到的问题、今天的计划

产品演示会议: 给客户演示研发的成果,产品经理整理和手机演示后客户的意见形成新的 userstory,放到下一次迭代中

回顾计划会议: 回顾整个迭代过程,把不足的地方找出,在下一次迭代过程中改进,优化迭代流程


8. 测试模型

1)V 模型

特点: 明确标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程各阶段的对应关系


缺点: 测试在编码之后才被引入,会失去对错误及时纠正的机会

82.png


2)W 模型

特点:

  • 测试贯穿整个软件开发的生命周期,对需求、代码等都会进行测试测试
  • 测试更早的介入,可以尽早发现错误并解决
  • 测试与开发独立并行

缺点:

  • 测试和开发保持一种线性的前后关系,上一阶段完全结束才可开始下一阶段工作
  • 无法支持敏捷开发模型

83.png


9. 软件测试的生命周期(软件测试的流程)

生命周期: 需求分析 -> 测试计划 -> 测试设计、测试开发 -> 测试执行 -> 测试报告


需求分析


测试人员对需求进行分析,验证需求的合理性和正确性,细化需求,根据需求提炼测试点


测试计划


确定测试的范围、目的、人员名单、测试工具以及测试环境


测试设计、测试开发


测试人员根据提炼的测试点编写测试用例


测试执行


在开发人员提交代码之后,测试人员根据测试用例和计划执行测试,记录测试过程中发现的 BUG 并提交


测试报告


对本次测试进行分析和总结,记录在本次测试中使用了哪些测试用例,发现了哪些 BUG,修改了多少,剩余的 BUG 有哪些比较好的解决方案


10. 如何描述一个 BUG

一个合格的 BUG 描述包括以下几部分:


发现 BUG 的版本


开发人员提交代码时代码的版本号


测试环境


在不同的测试环境下问题出现的情况可能不一样


测试步骤


告诉开发人员测试数据和执行测试时的具体步骤,以便于开发人员复现 BUG


实际结果


预期结果


BUG 产生时的日志、错误截图等


11. BUG 的级别

1)崩溃

系统崩溃、死机、死循环,黑屏、闪退等导致系统不能运行的问题


如果系统已经发布,用户在使用过程中出现崩溃级别 BUG 怎么办?


可以采用停服维修的方式来对 BUG 进行维护,但是这样会影响用户的体验和产品的利润

最高效且损失最低的方法是,回到上一个稳定可用的历史版本

2)严重

系统可以用,但是不稳定,继续使用会产生严重的错误,如数据库插入用户数据时出错,用户数据的安全性问题等


3)一般

系统可以正常使用,但是一些次要的功能没有实现,如系统的提示语不完善,删除时没有确认弹窗等


4)建议(次要)

一些建议性的问题或者可以对系统进一步优化的方案,比如界面排版不符合用户习惯等


12. BUG 的状态转移图

84.jpg



目录
相关文章
|
20天前
|
缓存 运维 数据库
【测试人员兼职指南】利用专业技能:如何从测试转向开发赚钱
本文分享了作者作为测试人员如何利用专业技能转向开发来兼职赚钱的经验,包括分析和解决登录页面跳转、避免重复账号注册、用户登录后首页显示用户名以及添加退出功能等问题,并提供了Django项目中使用sqlite3数据库和后台管理的扩展技巧。
36 1
【测试人员兼职指南】利用专业技能:如何从测试转向开发赚钱
|
24天前
|
Java 测试技术 开发者
在软件开发中,测试至关重要,尤以单元测试和集成测试为然
在软件开发中,测试至关重要,尤以单元测试和集成测试为然。单元测试聚焦于Java中的类或方法等最小单元,确保其独立功能正确无误,及早发现问题。集成测试则着眼于模块间的交互,验证整体协作效能。为实现高效测试,需编写可测性强的代码,并选用JUnit等合适框架。同时,合理规划测试场景与利用Spring等工具也必不可少。遵循最佳实践,可提升测试质量,保障Java应用稳健前行。
31 1
|
9天前
|
Android开发
Android学习 —— 测试init.rc中的条件触发的处理顺序
Android学习 —— 测试init.rc中的条件触发的处理顺序
|
21天前
|
测试技术 API
软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具
这篇文章详细介绍了Postman工具的各个模块功能,包括创建请求、集合、环境、自动化测试等,并解释了如何使用Postman进行GET、POST、PUT和DELETE等常见HTTP请求的测试。
|
11天前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
20 0
|
16天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
18天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
18天前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
|
20天前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
29 1
|
2月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
99 5
Postman 接口测试配置 Pre-request Script