软件测试的基础理论总结

1.前言

我是今年的应届生,好几个月的软件测试实习结束,准备找个好地方干活了。面试前复习一下软测的基础知识,顺便做个总结。

1.1 什么是软件测试?

软件测试是一系列过程活动,包括需求分析,测试计划分析,测试用例设计和执行等。它贯穿于软件项目的每个阶段,目的是保证各个阶段软件的完整性和正确性。

1.2 软件的研发模型

1.2.1 瀑布模型

计划----需求分析----设计----编码----测试----运行和维护
在这里插入图片描述
特点 :
线性化的研发模型
各阶段具有里程碑的特征
基于文档的驱动
严格的阶段评审机制
优点 :
有利于大型软件研发过程中人员的组织和管理
有利于开发方法和工具的使用
提高了软件的质量和效率
缺点 :
不灵活,在初始阶段就指出全部需求,项目负责人可能需要很长时间才能拿到需求版本,浪费了人力资源,而且需求发生变动时会有较大损失。

1.2.2 V模型

用户需求----需求分析----概要设计----详细设计----编码----单元测试----集成测试----系统测试----验收测试
在这里插入图片描述

特点:
在瀑布模式上进一步细化
优点 :
软件测试被分为不同的级别,和开发过程一一对应,提高了软件的质量
缺点 :
验收测试是最后阶段,需求阶段的问题只能到验收测试才能发现

1.2.3 X模型

在这里插入图片描述
特点:
最早引入探索性测试的研发模型(微信用的就是这种模型),边测试边开发。

1.2.4 螺旋模型

在这里插入图片描述
特点:
引入了风险管理和评估的概念

1.2.5 快速原型

在这里插入图片描述
特点:
非线性化的研发模型,主要适用于小公司,客户到了最后才知道软件长啥样,会先做出一个模型或样本,给客户进行产品的预演。

1.2.6 迭代开发

在这里插入图片描述
特点:
现在比较流行的研发模型,每次只设计和实现产品的一部分,逐步完成。每次设计和实现一个阶段就是一次迭代。
优点:
降低了需求变更的成本
可以得到早期的用户反馈

1.2.7 敏捷开发

story划分–story串讲–story分析–story实现–story验收–story测试–story总结

story划分:
将story依据整体的需求划分负责人(一般由系统架构师来做)
story串讲:
将story划分后,给技术人员进行串讲,让大家明白自己的需求
story分析:
开发和测试将分配给自己的story进行需求分析,确定方案。双方进行头脑风暴,确保方向一致。
story实现:
开发进行编码实现,测试快速验证
story验收:
由测试或者开发演示,项目经理或产品经理以及项目评审委员会的人员点评项目实现情况和匹配度
story测试:
区别于story实现阶段的测试,这时发现了bug必须提单
story总结:
一般指文档经验的固化,如:测试需求分析的进一步完善、测试用例的整改、测试指导书的编写等

在这里插入图片描述

1.3 软件的生命周期

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

1.4 软件的测试流程

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

2. 软件测试基础

2.1软件测试的定义

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

2.2 软件测试的目的

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

2.3 软件测试的范围

程序、数据、文档

2.4 软件测试的原则

1.所有的测试都要追溯到用户需求
2.尽早测试、不断测试
3.完全测试是不可能的,测试需要终止
4.无法显示潜在的缺陷
5.二八定律:80%的缺陷集中在20%的系统模块,发现缺陷越多的模块,遗留的缺陷就越多
6.避免由程序员自己检查程序
7.测试要有计划,节约成本和人力

2.5 软件测试的风险

人员风险:
核心测试人员的离职,测试人员的技术、工作态度不合格
进度风险:
开发完成后,留给测试的时间不够
质量风险:
软件开发的质量较差,缺陷过多,导致测试漏测的可能性加大,提升软件质量的难度过大
成本风险:
软硬件配置不够或用来做测试的预算不足
变更风险:
用户需求发生变动

2.6 软件测试工程师应具备的素质

1.心理素质:

细心、耐心,有责任心、信心
良好的理解能力和表达能力
团队沟通和协作的能力
发现问题的敏锐度较高,具有发散性的思维

2.专业素质:

熟悉软件开发流程和测试流程
熟悉测试的理论基础、测试技术、测试方法、测试文档的编写
掌握测试相关工具使用
具备一定的计算机相关知识:数据库、操作系统、网络基础、开发语言等

2.6 软件测试的分类

2.6.1 按照阶段划分:

单元测试
对于软件中最小可测单元进行检查和验证:如:java中的类,C语言中的函数,UI界面中的窗口,侧重于检查程序内部结构,逻辑控制和异常处理,单元测试能够发现 80% 左右的缺陷
依据:详细设计
测试人员:一般是开发人员测试,因为必须有代码阅读能力
单元测试工具:java语言中的junit,python语言中的unittest,pytest

集成测试
在单元测试基础上,把模块组装成系统或者子系统,然后进行测试,侧重于检查模块与模块之间以及接口传递数据的正确性,又称 联合测试 , 组装测试
依据: 概要设计
测试人员:软件测试工程师

系统测试
将软件,硬件,网络等设备连接系统进行测试,依据需求规格说明书,测试其中的功能是否全部实现
依据: 需求规格说明书 (产品经理编写的需求文档)
分类和范围:

功能测试 :测试软件的功能是否正常实现
性能测试 :测试系统所消耗的时间和资源
压力测试 :系统在什么情况下会达到极限
容量测试 :测试系统最大的访问用户数
安全测试 :验证系统是否容易被攻击
可用性测试 :验证系统使用是否方便
GUI测试 :界面测试
安装测试 :安装和卸载
异常测试 :检查系统对于异常情况下的处理
配置测试 :测试系统软件和硬件的最优配置
备份测试 :系统的数据备份
健壮性测试 :用于测试系统出现故障时,是否能够自动恢复或者忽略故障继续运行
文档测试 :测试帮助文档
在线帮助测试 :联系产品的售后客服
网络测试 :不同网络下的使用情况,5g,4g,3g,2g,wifi
稳定性测试 :软件长时间运行,系统是否能够正常运行

验收测试
重点验证软件各项功能与用户的需求是否匹配,可能需要用户参与
依据:用户需求
分类:
正式验收测试
非正式验收测试
阿尔法测试(α测试)和贝塔测试(β测试)

阿尔法测试和贝塔测试的区别 :
阿尔法测试是由公司内部人员测试,贝塔测试是由典型用户测试
阿尔法测试遇到 bug可以控制 ,贝塔测试遇到 bug不可控
阿尔法测试使用的是测试环境 ,贝塔测试使用的是现网环境 ,又称 线上环境, 公网
阿尔法测试发现问题能够及时修复 ,贝塔测试需要统一收集然后集中修复

2.6.2 按照是否运行程序划分

动态测试:
运行被测试的软件

静态测试:
查看文档、代码走查

2.6.3 按照技术划分

黑盒测试:
在验收测试和系统测试中普遍使用,只关注输入和输出、性能和功能,不关注软件内部的逻辑结构

白盒测试:
与黑盒测试相反,适用于单元测试

灰盒测试:
介于白盒和黑盒之间,适用于集成测试

2.6.4 其他测试

回归测试 :
执行上个版本的用例,查看bug是否修复,或者修复bug后是否引入了新的bug

冒烟测试 :
又称 BVT 测试,在正式测试之前,抽取项目中基本流程用例(大概10%左右),全部执行通过,如果冒烟测试不通过,项目直接打回,冒烟测试之前需要安装测试环境,测试时间半天至一天

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值