2021-03-22

软件测试流程

一、软件生命周期及研发模型

1、什么是软件生命周期
软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件 设计、编码、测试、软件发布维护的过程

2、软件生命周期的三个时期
软件定义
问题定义——要解决的问题是什么
可行性研究——上一阶段所确定的问题是否有行得通的解决办法
需求分析——目标系统必须做什么

软件开发
概要设计——怎样实现目标系统
详细设计——应该怎样具体地实现这个系统
编码和单元测试——写出正确的容易理解、容易维护的程序模块
综合测试——通过各种类型的测试使软件达到预定的要求

运行维护
使软件持久地满足用户的需要

3、软件研发模型
大爆炸模式
特点:简单,计划、进度安排和正规开发过程几乎没有, 所有精力都花在开发软件和编写代码上,没有测试活动

边写边改模式
特点:开发组最初有粗略的想法,进行简单的设计,然后 开始漫长的来回编写、测试和修改缺陷的过程。适合快速 制作而且用完就扔的小项目,例如,原型范例和演示程序

软件生命周期的瀑布模型: 计划——需求分析——设计——编码——测试——运行+维护
瀑布模型的特点
①瀑布模型非常强调产品的定义 开发或者代码编制阶段只是其中单独的一块
②瀑布模型各步骤是分立的\没有交叉
③ 瀑布模型无法回溯( 一旦进入某个步骤,就要完成该步骤的任务,然后才能向下继续——无法 回溯)
④每个阶段都要仔细验证,线性过程太理想化,越来越不适合现代软件的开发 模式

软件生命周期的快速原型模型 快速分析——需求说明——构造原型——原型——运行原型——评价原型——修改意见
快速原型模型的特点
①克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带 来的项目开发风险
②适合预先不能确切定义需求的软件系统的开发
③不适合大型系统的开发(适合开发小型的、灵活性高的系统)
④不适合大型系统的开发(适合开发小型的、灵活性高的系统)

软件生命周期的螺旋模型 制定计划——风险分析——实施工程——客户评估
螺旋模型的特点
①开始不必详细定义所有细节
② 从小开始,定义重要功能,努力实现
③接受反馈,进入下一次循环
④ 测试活动贯穿于每个循环
⑤螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及 经常发生的循环之前,都必须首先进行风险评估
⑥在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。 过多的迭代次数会增加开发成本,延迟提交时间。

敏捷开发 开发流程
①产品经理调研客户需求,协商需求的优先级,进行排序
②项目经理接收到需求,分配任务,计划研发
③迭代周期,每日站会(立会),讲述昨天任务完成情况,今日计划安排,遇到什 么问题等。参会人员有开发、测试、QA、设计人员等
④交付客户进行确认,一个迭代周期结束需要开反思会,避免下个周期出现同样的 错误
⑤进入下一个迭代周期…直到交付客户的所有需求,避免了后期出现大量不符合客 户需求的功能

二、软件测试生命周期及模型

1、软件测试流程概述
软件测试的生命周期 制定测试计划——测试设计开发——实施软件测试——评审——版本发布

2、软件测试 - V模型
用户需求——需求分析与系统——概要设计——详细设计——编码——单元测试——集合测试——系统测试——验收测试
优点: 在V模型里,强调软件开发的协作和速度,反应测试活动和分析测试 的关系,并且将软件的实现和验证有机的结合了起来,V模型,明确的界 定测试过程是存在不同阶段的。
缺点:但是V模型也有一定的局限性,它仅仅把测试过程放在需求分析、系统 设计、编码之后的一个阶段,忽视了测试对于需求的分析和验证。我们对 需求的验证,对系统设计的验证,到后期的验收测试才有可能被发现,对 于我们测试当中的测试需要尽早进行的原则在V模型中没有体现,这是V模 型的局限。

3、软件测试 - W(双V)模型
优点: 开发与测试并行,有利于尽早发现问题,有利于及时的了解项 目的测试风险,来及早的执行相应的应对方案,加快项目的进度
局限性:需求、设计、编码仍然是串行进行的,测试和开发保持线性 的关系,上一个阶段完成之后才能进行下一个阶段,不能够很好的支持 迭代的开发模型。

4、软件测试 - H模型
H模型强调把测试分为测试准备和测试执行两个不同的阶段,只要由于其 他流程的进展引发了测试就绪点的到位,这时候,只要测试准备完成,测试 执行活动就可以或者需要开展,,具有很强的灵活性。在H模型当中,测试 是一个完全独立的模型,所以可以和其他的流程交叉地进行,也便于我们尽 早的执行测试

5、软件测试 - X模型
针对单独的程序片段相互分离的编码和测试,此后进行频繁的 交接,再通过集成,最终合成可执行的程序,然后再对这些程序进行测试,已 经通过的程序可以进行封板提交给用户,也可以作为更大集成的一部分,X模 型还定位了探索式测试,探索式测试是不进行事先计划的特殊类型的测试,能 够帮助测试人员在测试计划之外发现更多的错误。

三、软件测试流程

1、软件测试流程
测试计划阶段
测试设计和开发阶段
测试实施阶段
测试评估阶段

2、软件测试流程图(需求阶段
需求阶段——产品基本情况调研
需求阶段测试相关的主要工作:① 产品基本情况调研② 测试需求说明③ 测试的策略和记录④ 测试资源的配置⑤ 计划表⑥配置测试环境

3、软件测试流程图(集成、系统、验收)
上一阶段
集成测试(集成测试方案)
测试部评估
系统测试(系统测试方案)
验收测试
产品综合测试评价
测试工作总结(测试总结文档)

4、项目组成员及相关工作
项目经理:立项、计划、关联产品、关联需求等
产品经理:收集需求反馈,建立产品,整理需求等
设计人员:设计系统架构,概要设计和详细设计,UI设计等
开发:编码
测试人员:设计测试用例,执行测试,提交bug(缺陷)
运维:部署系统,搭建环境
QA:贯穿全过程,制定规范、辅助、审计

四、软件测试阶段

1、单元测试
单元测试又称为模块测试,是最小单位测试
单元测试具有独立性,可以与系统其他部分分隔离出来,从而完成测试,其依据是详 细设计
其测试对象是软件设计的最小单位模块与组件,类、文件、窗口、函数、菜单、报表 或一个存储过程都可以作为一个单元进行测试
单元测试可以发现的缺陷类型:①计算错误② 需求或功能遗漏③程序路径选择错误
执行方法: 代码扫描工具:SonarQube + PMD
测试原则
尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例 中重写模拟方法)
此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求
单元测试的好处:① 尽早的发现缺陷② 利于重构③简化集成
单元测试的不足
不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误
每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡

2、 集成测试
集成测试:是将已分别通过测试的单元按设计要求组合成系统或子系统,再 进行的测试。目的在于检查这些单元之间的接口是否存在问题
测试目标:API(接口测试) 对集成的组件之间的接口和组件与组件的协同工作进行测试。
测试依据:软件和系统设计文档 系统架构 定义和描述接口的文档、工作流和用例等
执行方法:
工具:Postman
自动化测试框架:python + requests + ddt + nose2
测试原则:① 尽早集成测试关键模块②尽早测试包含I/O的模块
集成测试的好处:① 可以检查一系列的环境配置正确与否②可以迅速定位BUG③ 可以为功能测试和性能测试提供支持
集成测试的不足:①难以完成业务场景测试②无法测试前端页面

3、系统测试
系统测试: 是充分运行软件系统,以验证系统是否满足产品的质量需求
功能测试
非功能测试: ① 性能测试、容量测试②安全性测试③兼容性测试④ 可靠性测试

集成测试和系统测试之间的比较
测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个 系统的功能和性能;
测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的 角度进行测试。

4、验收测试
验收测试也称交付测试,是针对用户需求、业务流程进行的正式 的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机 构决定是否接受系统。
在软件产品完成了系统测试之后、产品发布之前所进行的测试
验收测试一般会根据产品产品需求(用户故事),严格的逐项的检查产 品,确保所开发的软件产品符合用户预期的各项要求。

五、软件测试的分类

1、按策略
静态测试的特点:
静态测试不必动态运行程序,也不必进行测试用例设计和结果判断等 工作
静态测试可以由人工进行,充分发挥人的逻辑思维优势
静态测试实施不需要特别的条件,容易开展。
动态测试的特点:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确 性和健壮性等性能

2、测试设计技术
黑盒测试:又称为功能测试、数据驱动测试或基于规格说明书的测试
黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么 事情,只能通过输入输出看是否能得到我们所需的来测试。
黑盒测试的主要测试方法有: 等价类划分法、边界值分析法、因果图法、场景法、正交实验设 计法、判定表驱动分析法、错误推测法、功能图分析法等
白盒测试:
白盒测试称为结构测试或逻辑驱动测试
白盒测试是针对被测单元内部是如何进行工作的测试
白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而 我们可以通过去测内部结构来测试
白盒测试的主要测试方法有: 静态测试&动态测试、单元测试、代码检查、同行评审、逻 辑覆盖、基本路径测试等等
灰盒测试: 是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试 阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰 盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻 辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
灰盒测试关注的是一个模块或模块之间的接口问题
手工测试: 就是由人去一个一个的输入用例,然后观察结果,和 机器测试相对应,属于比较初级但是必须的一个步骤
自动化测试:通过将测试执行部分或者全部交由机器执行的一种 测试,叫做自动化测试。这种测试不需要人的实时参与。同时这 种测试在小规模应用时会比手动测试昂贵许多
优点:①对程序新版本运行前一版本执行的测试,提高回归测试效率② 可以运行更多更频繁的测试,比如冒烟测试③可以执行手工测试困难或不可能做的测试,比如大量的重复操作或者性能测试,如处理 精确的事务、大数据量事务、并发事务
局限:①不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发 现更多缺陷,手工测试比自动测试发现的缺陷更多②对测试设计依赖性极大,测试设计的不好会遗漏问题③ 自动化测试对软件开发具有很大的依赖性,开发上出现变更可能导致前面的自动化测试 完全失效④工具本身并不具备想象力,工具不具有智能⑤开发、维护脚本工作量大、费用高
适合使用自动化测试的情况: 版本稳定、项目周期长、脚本可复用
不适合使用自动化测试的情况:
定制型项目(一次性的)
项目周期很短的项目
涉及业务规则复杂的对象
关于美观、声音、易用性的测试
很少运行的测试
测试的软件不稳定
涉及物理交互的测试
测试自动化:这是一种让测试过程脱离人工的一次变革。对于 控制成本,控制质量,回溯质量和减少测试周期都有积极影响 的一种研发过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值