软件测试基础知识

软件测试是一系列确保软件质量的过程,包括需求分析、测试计划、用例设计等。它涵盖多种开发模型,如瀑布、V模型等,以及敏捷、迭代开发方式。测试流程包括需求分析、测试计划、执行等,目的是发现并预防缺陷,评估软件质量。测试分类涉及单元、集成、确认、系统和验收测试等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件测试基础知识

前言

什么是软件测试

软件测试是一系列过程活动,包括软件需求分析,测试计划分析,测试用例分析,测试用例设计,执行测试用例等等。它贯穿于整个软件测试的周期,在软件项目的每个阶段,都要进行目的不同的内容测试活动,以保证各个阶段的正确性。

为什么要进行软件测试
假如安装的软件是一个未经过测试的软件,那么在使用过程中可能会遇到:软件卡死,账号被盗,资金被转等等。而软件测试工程师的出现是就为了规避这个问题。

一、开发模型

1、瀑布模型

计划——需求分析——设计——编码——测试——运行和维护

在这里插入图片描述
特点

  • 线性化的研发模型
  • 各个阶段具有里程碑的特性
  • 基于文档的驱动
  • 严格的阶段评审机制

优点

  • 有利于大型软件研发过程中人员的组织和管理
  • 有利于开发方法和工具的使用
  • 提高了软件的质量和效率

缺点

  • 不灵活

2、V模型

用户需求——需求分析——概要设计——详细设计——编码——单元测试——集成测试——系统测试——验收测试

在这里插入图片描述

优点

  • 软件测试分为若干个级别,更能提高软件质量
  • 软件测试和开发级别一一对应

缺点

  • 忽略了软件测试对象不止程序还有文档
  • 验收测试是最后阶段,需求分析阶段的问题只能在验收测试才能被发现

3、W模型
在这里插入图片描述
优点

  • 开发活动测试活动同步进行
  • 软件测试的对象不仅仅是程序还包括文档
  • 尽早投入测试可以降低开发成本

缺点

  • 无法迭代(指相对的,不是绝对的)

4、X模型
在这里插入图片描述
最早引入探索性测试的研发模型,将软件划分为几个片区,然后集成在一起形成最终软件

5、螺旋模型
在这里插入图片描述
非线性化的研发模型,引入了风险管理进行评估

6、快速原型
在这里插入图片描述
又称为原型定义,非线性化的开发模型,主要适用于小公司,客户到了最后才会知道软件的模样,先做成一个demo(模型或样式),给客户进行产品的预演

二、开发方式

1、迭代开发
每次只设计和实现产品的一小部分,通过逐步完成的方法叫迭代开发,每次设计和实现一个阶段叫迭代

优点

  • 降低需求变更的成本
  • 得到早期的用户反馈
  • 持续的集成和测试

2、敏捷开发
敏捷开发以用户需求进化为核心,采用迭代循序渐进的方法进行软件开发

敏捷开发的核心价值观:

  • 个人交互重于过程和工具(个人交互主要是指人和人的沟通)
  • 可用软件重于完备的文档
  • 客户协作重于合同谈判
  • 响应变化重于遵循计划

优点
敏捷确实是项目进入实质开发迭代阶段,用户很快就可以看到一个基线架构版的产品,敏捷注重市场快速反应能力

缺点
敏捷注重人员的沟通忽略了文档的重要性,若项目流动人员过大,又给维护带来了不少难度,项目中存在的新手较多时,老员工会比较累

tips:
敏捷和迭代虽然不一样,但是他们是分不开的,迭代开发和敏捷开发的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势,吸取精华,去其糟粕,只有这样,项目才会达到趋近完美的程度。

三、项目中的成员

1、项目经理(PM)
2、架构师
3、程序员
4、软件测试工程师
5、资料工程师
6、配置管理员(CMO)
7、QA
8、产品经理(BA)
9、UI设计
10、DBA(数据库管理员)

四、软件的生命周期

需求——设计——编码——测试——维护——升级——废弃

五、软件的测试流程

需求分析——测试计划——测试方案——测试用例——测试执行——测试报告

六、软件测试的定义

在规定的条件下操作程序,发现缺陷,评估软件质量

七、软件测试的目的

尽可能多的发现软件的缺陷,预防缺陷,对软件的质量进行评估,以提高软件的质量

八、测试的范围或者对象

程序、文档、数据

九、软件测试原则

1、所有的测试都应该追溯到用户需求

需求是软件测试的依据

2、应该把尽早测试,不断测试作为测试人员的座右铭

尽早测试能够降低开发成本,不断测试能提高软件质量

3、完全测试是不可能的,测试需要终止

处于成本和现实的考虑

4、测试不能反映出程序潜在的缺陷

缺陷有时候是在特定的情况下才能出现

5、避免程序员检差自己的程序

开发会沿用之前开发的思路去找问题,很难发现问题所在

6、充分留意程序缺陷的富集

二八定律,80%的缺陷会出现在20%的模块中

7,、避免出现测试的随机性

测试需要计划,节约成本和人力

十 、软件测试分类

按照开发阶段划分
(开发中阶段)

  • 单元测试
    单元测试也叫模块测试,是针对软件测试设计最小单位————程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。(这也是开发人员在开发过程中用的最多的一种方法。
    测试依据:详细设计
    测试人员:90%都是开发人员

  • 集成测试
    集成测试也叫组装测试,通常是在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步成为符合概要设计要求的程序部件或整个系统。
    测试依据:概要设计
    测试人员:软件测试工程师
    集成的分类:
    非增量式集成:一次性集成
    增量式集成:
    自顶向下增量式集成:测试桩
    自下而上的增量式集成:驱动程序
    ( 开发完成阶段)

  • 确认测试
    确认测试也叫有效性测试,在模拟环境下,验证软件所有功能和性能以及其他特性是否与用户的预期要求一致(也就是前面确认的概念,确定软件是否实现功能。一般都是正向测试(也叫冒烟测试)一般不是正式的测试阶段。)

  • 系统测试
    系统测试是在真实的系统运行环境下,检查完整的程序系统是否和系统正确配置、连接,并最终满足用户的所有需求
    1、这也是系统所有功能正式的,全面的测试。
    2、模拟所有的软件用户的操作。
    3、全方位的测试,包括承载硬件、外设、网络和软件系统、支持平台,与其他的软件的关系。
    4、系统测试的分类和范围:
    功能测试:测试系统功能是否实现
    性能测试:测试系统所消耗的时间和资源
    压力测试:系统在什么情况下会达到基线
    容量测试:测试系统的最大访问用户数
    安全测试:验证系统是否会被攻击
    可用性测试:验证系统是否容易使用
    GUI测试:界面测试
    安装测试:安装和卸载是否正常
    异常测试:检查系统对异常情况下的处理
    配置测试:测试系统软件和硬件的最优配置
    备份测试:测试系统的数据备份
    健壮性测试:用于检测系统出现故障时,能否自行恢复或者忽略故障继续运行
    文档测试:测试帮助文档
    在线帮助测试:联系产品的售后客服
    网络测试:在不同网络环境下进行测试(2G,3G,4G,5G,WiFi等)
    稳定性测试:软件长时间运行,测试系统是否能够长时间运行

  • 验收测试
    是软件测试的最后一个环节。按照项目的任务书或者合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或者拒收系统。
    1、一般是由供求双方达成的,一般有两种种及验收测试主体。
    α测试:软件开发商自己进行的交付前的测试。(非正式验收测试
    β测试:软件需求方自己进行的测试。(正式验收测试

α测试与β测试的区别:
1、α测试是由公司内部人员测试,β测试由典型用户测试
2、α测试发现的BUG可以控制,β测试发现的BUG不可控
3、α测试使用的是测试环境,β测试使用的是 现网环境
4、α测试发现的问题可以及时修复,β测试发现的问题只能集中统一修复

按照代码运行划分

  • 静态测试
    指不实际运行被测对象,而只是静态的检查程序代码、界面或者文档中可能存在错误的过程。
    1、代码测试:主要测试代码是否符合相应的标准和规范。
    2、界面测试:主要测试软件的实际界面与需求中的说明是否相符。
    3、文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。

  • 动态测试
    指实际运行被测对象,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。

所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序

按照测试技术分类

  • 黑盒测试
    通过软件的外部表现来发现其缺陷和错误。黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试实在程序界面处进行测试,它只是捡查程序是否按照需求规格说明书的规定正常实现。

  • 白盒测试
    通过对程序内部结构的分析,检测来寻找问题,白盒测试法把测试对象看成一个透明盒子,检查是否所有的结构以及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试也叫结构测试。

  • 灰盒测试
    介于白盒黑盒之间的测试,关注输入的正确性;同时也关注内部表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断程序内部的运行状态。

其他测试

  • 回归测试
    是指对软件新版本测试时,重复执行之前某一个重要版本所有测试用例。
    目的:
    1、验证之前版本产生的所有缺陷已经全部被修复
    2、确认修复这些缺陷没有引发新的缺陷

  • 冒烟测试
    是指在对一个新版本进行系统大规模测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

  • 随机测试
    是指测试人员基于经验和直觉的测试,发现一些边缘性的错误。

  • 猴子测试
    把自己当作不懂产品的用户。随意乱点,没有任何主观意识和规律的点击,让一些意想不到的操作造成错误的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值