【软件测试流程①】2020年12月21日课堂笔记整理

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

软件生命周期:

  • 软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件、编码、测试、软件发布维护的过程。

》软件定义

  • 问题定义——要解决的问题是什么
  • 可行性研究——上一阶段所确定的问题是否有行得通的解决办法
  • 需求分析——目标系统必须做什么

》软件开发

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

》运行维护

  • 使软件持久地满足用户的需要

软件研发模型
  • 大爆炸模式:简单,计划、进度安排和正规开发过程几乎没有,所有精力都花在开发软件和编写代码上,没有测试活动。
  • 边写边改模式:开发组最初有粗略的想法,进行简单的设计,然后开始漫长的来回编写、测试和修改缺陷的过程。适合快速制作而且用完就扔的小项目,例如原型范例和演示程序。

  • 软件生命周期的瀑布模型
    在这里插入图片描述
    1.瀑布模型非常强调产品的定义//开发或者代码编制阶段只是其中单独的一块
    2.瀑布模型各步骤是分立的、没有交叉
    3.瀑布模型无法回溯//一旦进入某个步骤,就要完成该步骤的任务,然后才能向下继续
    4.每个阶段都要仔细验证,线性过程太理想化,越来越不适合现代软件的开发模式

  • 快速原型模型
    在这里插入图片描述
    1.克服了瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险
    2.适合预先不能确切定义需求的软件系统开发
    3.不适合大型系统的开发(适合开发小型的、灵活性高的系统)
    4.前提是有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新

  • 螺旋模型
    在这里插入图片描述
    》特点:
    1.开始不必详细定义所有细节
    2.从小开始,定义重要功能,努力实现
    3.接受反馈,进入下一次循环
    4.测试活动贯穿于每个循环
  • 螺旋模式很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估
  • 在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。

  • 敏捷开发模型
    在这里插入图片描述
    》敏捷开发流程:
    1.产品经理调研客户需求,协商需求的优先级,进行排序
    2.项目经理接收到需求,分配任务,计划研发:迭代任务2-6周一个周期
    3.迭代周期,每日站会(立会),讲述昨天任务完成情况,今日计划安排,遇到什么问题等。参会人员有开发、测试、QA、设计人员等。
    4.交付客户进行确认,一个迭代周期结束需要开反思会,避免下个周期出现同样的错误
    5.进入下一个迭代周期…直到交付客户的所有需求,避免了后期出现大量不符合客户需求的功能
二、软件测试的生命周期

在这里插入图片描述

软件测试 — V模型

在这里插入图片描述

  • 优点:
    在V模型里,强调软件开发的写作和速度,反映测试活动和分析测试的关系,并且将软件的实现和验证有机的结合了起来,V模型,明确的界定测试过程是存在不同阶段的。

  • 缺点:
    但是V模型也有一定的局限性,它仅仅把测试过程放在了需求分析、系统设计、编码之后的一个阶段,忽视了测试对于需求的分析和验证。我们对需求的验证,对系统设计的验证,到后期的验收测试才有可能被发现,对于我们测试当中需要尽早测试的原则在V模型中没有体现,这是V模型的局限。

软件测试 — 双V模型

在这里插入图片描述

  • 优点:
    开发与测试并行,有利于尽早发现问题,有利于及时的了解项目的测试风险,来尽早的执行相应的应对方案

  • 局限性:
    需求、设计、编码仍然是串行进行的,测试和开发保持线性 的关系,上一个阶段完成之后才能进行下一个阶段,不能够很好的支持 迭代的开发模型。

软件测试 — H模型
  • H模型强调把测试分为测试准备和测试执行两个不同的阶段,只要由于其他流程的进展引发了测试就绪点的到位,这时候只需要测试准备完成,测试执行活动就可以或者需要开展,具有很强的灵活性。在H模型当中,测试是一个完全独立的模型,所以可以和其他流程交叉进行,也便于我们尽早执行测试。
    在这里插入图片描述
软件测试 — X模型
  • 左边描述的是针对单独的程序片段相互分离的编码和测试,此后进行频繁的交接,再通过集成,最终合成可执行的程序,然后再对这些程序进行测试,已经通过的程序可以进行封板提交给用户,也可以作为更大集成的一部分,X模型还定位了探索式测试,探索式测试是不进行事先计划的特殊类型的测试,能够帮助测试人员在测试计划之外发现更多的错误。
    在这里插入图片描述

三、软件测试流程

软件测试流程

  • 测试计划阶段
  • 测试设计和开发阶段
  • 测试实施阶段
  • 测试评估阶段

》软件测试流程图(需求阶段
在这里插入图片描述

  • 需求阶段测试相关的主要工作:
    1.产品基本情况调研
    2.测试需求说明
    3.测试的策略和记录
    4.测试资源的配置
    5.计划表
    6.配置测试环境

》软件测试流程图(设计编码阶段
在这里插入图片描述

  • 设计编码阶段测试相关的主要工作:
    1.参与评审
    2.设计测试方案(集成测试和单元测试)
    3.执行单元测试

》软件测试流程图(集成、系统、验收
在这里插入图片描述


项目组成员及相关工作:

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

》测试人员的服务对象:

  • 项目经理
  • 产品经理
  • 程序员
  • 文档编写人员(一般大型公司才有专门岗位)
  • 技术支持
  • 市场人员
  • 管理层和项目相关人员
  • 用户
作者:k0shl ####一些环境说明: 编译环境:Windows 10 x64 build 1607 项目IDE:VS2013 测试环境:Windows 7 x86、Windows 10 x86 build 1607 参数介绍: "-l" :开启志记录模式(不会影响主志记录模块) "-s" :驱动枚举模块 "-d" :打开设备驱动的名称 "-i" :待Fuzz的ioctl code,默认从0xnnnn0000-0xnnnnffff "-n" :在探测阶段采用null pointer模式,该模式下极易fuzz 到空指针引用漏洞,不加则常规探测模式 "-r" :指定明确的ioctl code范围 "-u" :只fuzz -i参数给定的ioctl code "-f" :在探测阶段采用0x00填充缓冲区 "-q" :在Fuzz阶段不显示填充input buffer的数据内容 "-e" :在探测和fuzz阶段打印错误信息(如getlasterror()) "-h" :帮助信息 ####常用Fuzz命令实例: kDriver Fuzz.exe -s 进行驱动枚举,将CreateFile成功的驱动设备名称,以及部分受限的驱动设备名称打印并写入Enum Driver.txt文件中 kDriver Fuzz.exe -d X -i 0xaabb0000 -f -l 对X驱动的ioctl code 0xaabb0000-0xaabbffff范围进行探测及对可用的ioctl code进行fuzz,探测时除了正常探测外增加0x00填充缓冲区探测,开启数据志记录(如增加-u参数,则只对ioctl code 0xaabb0000探测,若是有效ioctl code则进入fuzz阶段) kDriver Fuzz.exe -d X -r 0xaabb1122-0xaabb3344 -n -l 对X驱动的ioctl code 0xaabb1122-0xaabb3344范围内进行探测,探测时采用null pointer模式,并数据志记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值