软件测试基本概念

简介: 本篇文章开始,博主带领大家走入新篇章——软件测试,使得自己慢慢掌握测试开发的技能,能使得自己在职场竞争中更具竞争力。

1.什么是软件测试?


最常见的理解是:软件测试就是找BUG,发现缺陷。


就像我们在刚买来一部手机或者一台电视的时候,会进行一遍检查,看看能不能正常使用,就是在“测试”。


软件测试就是验证软件产品特性是否满足用户的需求。


2.调试和测试的区别


调试和测试共有以下三点的不同:


1.目的不同

调试:为了发现并解决软件中的缺陷

测试:为了发现软件中的缺陷

2.参与的角色不同

调试:开发人员

测试:测试人员、开发人员

3.执行阶段不同

调试:编码阶段

测试:贯穿于软件的整个生命周期


3.软件测试的常见名称解释


3.1 需求


需求就是指满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。


用户需求就是指甲方提出的需求,该需求一般比较简略。


软件需求或者叫功能需求,会详细描述开发人员必须实现的软件功能。


公司在进行软件开发的时候,会把用户需求转化为软件需求,因为用户需求存在市场可行性和技术可行性的问题,并不一定能够实现,所以需要产品经理主刀,与其他人员共同,根据用户需求来制定软件需求,来详细的描述必须实现的软件功能,让开发人员和测试人员进一步开展工作。


软件需求是测试人员进行测试工作的基本依据(用户需求并不能直接作为测试或开发人员的基本依据,因为用户需求不一定合理、正确,需要进行用户需求的提取和分析,将其转化为软件需求,再作为进一步工作的依据)


3.2 bug


历史上的第一个BUG:

1945年9月的某天,在一间老式建筑里,从窗外飞进来一只飞蛾,此时Hopper正埋头工作在一台名为Mark II的计算机前,并没有注意到这只即将造就历史事件的飞蛾。这台计算机使用了大量的继电器(电子机械装置,那时还没有使用晶体管)。突然,Mark I死机了。Hopper试了很多次还是不能启动,他开始用各种方法查找问题,最后定位到了某个电路板的继电器上。Hopper观察这个继电器,惊奇地发现一只飞蛾已经被继电器打死。Hopper小心地用镊子将飞蛾夹出来,用透明胶布贴到“事件记录本”中,写上“第一个发现虫子的实例”。Hopper的事件记录本,连同那只飞蛾,现在都陈列在美国历史博物馆中。


微信图片_20230111192233.png

bug的概念:


当且仅当产品规格书说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。

当需求规格说明书没有提到的功能,判断标准最终以用户为准;当程序没有实现其用户合理预期的功能要求时,就是软件错误。


3.3 测试用例


测试用例是为了实施测试而向被测试系统提供的一组集合,这组集合包含:测试环境、测试步骤、测试数据、预期结果等要素。【主要解决测什么和怎么测两个问题】


以注册网易邮箱为例,体会什么是测试用例:


微信图片_20230111192230.png

标题:注册网易邮箱


测试环境:

windows 10

Microsoft Edge 版本 107.0.1418.56 (正式版本) (64 位)


测试数据:

邮箱地址:abc

密码:123456

手机号:13137197608

验证码:123


测试步骤:

1.打开微软浏览器,输入网易注册地址https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail

2.输入邮箱地址、密码、手机号,获取验证码并输入验证码,勾选用户协议

3.点击注册


预期结果:

展现注册成功的结果页,并且使用账号可以正常登录。


围绕着软件需求来设计测试用例,解决了重复测试的问题,测试用例要保持的原则是避免用后即弃。


4.软件的生命周期


软件的生命周期是指从软件产品的设想开始,到软件不再使用而结束的时间。


如果把软件看成是有生命的事物,那么软件的生命周期可以分为六个阶段,即需求分析——计划——设计——编码——测试——运行维护。


需求分析:分析用户需求是否合理(市场分析、技术分析),完成软件需求文档。

计划:制定需求执行计划,什么时候开始、结束,耗时多久。

设计:将需求细化成一个个任务,进行技术设计(设计哪些接口,采用哪些技术),产出设计文档。

编码:开发人员按照需求文档以及设计文档来进行编码。

测试:测试人员参考测试用例来执行测序

运行维护:项目上线之后对产品进行线上的维护

5.开发模型


5.1 瀑布模型


微信图片_20230111192226.png

瀑布模型是其他所有模型的基础框架,其特点是线性的开发流程,并不能够应对需求而发生变化,这就导致产生了测试被后置的缺陷。


测试被后置将会使得风险往往被推至后期才显露,失去了及早纠正的机会;而且必须有足够的时间预留给测试阶段,否则将导致测试不充分,从而把缺陷直接遗留给客户。


该模型适用的场景只有需求固定的小项目。


5.2 螺旋模型


一般在软件开发初期阶段,需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。


微信图片_20230111192223.png

该模型引入了全流程的风险分析(其实相当于在瀑布模型的每个阶段后进行了风险分析),每次分析完成后都会生成一个新的原型。


该模型的适用场景:需求不确定,变化的可能性很大的大型项目。


缺陷:风险暴露的可能性与风险分析人员的能力有关,消耗一定的资金和时间


5.3 增量模型和迭代模型


增量模型把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。


微信图片_20230111192220.png

优势:产品能够在较短时间内尽快的交付给用户去使用(可以只有部分功能)


迭代模型是先开发一个基础版本(包含功能A、B、C),但是A、B、C功能比较简陋,接下来会在这个基础版本上对A、B、C功能进行迭代优化。


增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。


5.4 敏捷模型


《敏捷宣言》

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

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

客户协作重于合同谈判

响应变化重于遵循计划


在上述的《敏捷宣言》中体现了敏捷模型的特点:

轻文档,轻流程,重目标,重产出,响应变化。


敏捷开发有很多种方式,其中scrum是比较流行的一种,在scrum流程中,有三个角色和五个会议。


三个角色:

产品经理:收集用户的需求,编写需求文档,对产品负责

项目经理:负责召开各种会议,协调项目,为研发团队服务。

研发团队:开发人员、测试人员、ui设计人员等等。


五个会议和scrum的开发流程:

微信图片_20230111192216.png

scrum模型中每个迭代周期为1~4周,通常情况下为一周。


6.测试模型



在软件测试模型中有V模型和W模型,下边我们来具体了解:


6.1 V模型


V模型是瀑布模型的一种演化,目的是改进软件开发的效率和结果。


微信图片_20230111192213.png

特点:左边每一个阶段和右边的阶段一一对应,左边每个阶段是右边测试每个阶段的依据。

缺点:测试后置


6.2 W模型


微信图片_20230111192208.png


特点:双V模型,开发一个V,测试一个V,软件开发的过程和软件测试能同步进行,保证项目前期的问题能够及时被发现。

缺点:虽然开发和测试是同步的,但是仍然存在着前后的线性关系,不支持敏捷模型

相关文章
|
3月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
57 4
|
4月前
|
jenkins 测试技术 持续交付
软件测试:基础概念
软件测试:基础概念
54 0
|
5月前
|
测试技术 UED
软件测试/测试开发|软件测试基础概念
软件测试/测试开发|软件测试基础概念
32 0
|
14天前
|
测试技术 开发者
【专栏】测试驱动开发(TDD)和行为驱动开发(BDD)的核心概念与实践
【4月更文挑战第27天】本文探讨了测试驱动开发(TDD)和行为驱动开发(BDD)的核心概念与实践。TDD强调先写测试用例,通过测试推动设计,确保代码质量与可维护性。BDD侧重软件行为和业务价值,提倡使用通用语言描述行为,减少沟通障碍。选择TDD或BDD取决于项目复杂性、团队技能和业务需求。理解两者差异有助于团队做出合适的选择,发挥测试的最大价值。
|
1月前
|
敏捷开发 编解码 测试技术
【测试】1. 概念 + 基础篇
【测试】1. 概念 + 基础篇
41 1
|
9月前
|
测试技术
软件测试开发的基本概念
软件测试开发的基本概念
|
5月前
|
安全 物联网 测试技术
一些安全测试相关的概念梳理
一些安全测试相关的概念梳理
|
5月前
|
敏捷开发 分布式计算 测试技术
【软件测试学习】—软件测试的概念与软件测试模型(一)
【软件测试学习】—软件测试的概念与软件测试模型(一)
|
1月前
|
存储 人工智能 Java
软件测试/人工智能|Python 变量解析:从基础概念到内存地址探究
软件测试/人工智能|Python 变量解析:从基础概念到内存地址探究
33 0

热门文章

最新文章