单元测试、集成测试、系统测试

单元测试、集成测试、系统测试

一、单元测试

1、概念

  • 单元测试是指对于软件设计的最小单元(软件组成单元)进行测试。

  • 软件组成单元

    • 面向过程的编程语言:c语言,函数
    • 面向对象的编程语言:java,类或者类当中的方法
  • 测试重点

    • 单元内部的数据结构
    • 输入条件的边界
    • 程序执行的路径
    • 单元间的数据接口
    • 出错处理:例,计算器中除数为0

2、单元测试策略

  • 概念

    驱动程序driver:主要用来接收数据,并传递给被测试单元,以及输出测试结果

    桩程序stub:用来代替被测试单元需要调用的子单元

  • 孤立的单元测试策略
    在这里插入图片描述

    • 方法:不考虑单元间的联系,仅针对每个单元进行独立的测试,设置驱动和桩
    • 优点:简单、可以并行开展
    • 缺点:驱动和桩的开发工作量大
  • 自顶向下的单元测试策略
    在这里插入图片描述

    • 方法

      先对于顶层的单元进行测试

      对于顶层的下一层单元进行测试,将已测试过的顶层的单元作为驱动

      以此类推,直到所有单元测试完成

    • 优点:节省驱动程序开发的工作量

    • 缺点:随着底层单元的不断加入,程序越来越复杂,测试维护成本高

  • 自底向上的单元测试策略
    在这里插入图片描述

  • 方法:

    先测试底层的单元

    再对于底层单元的上一层进行测试,将已测试过的底层单元作为桩程序

    以此类推,直到所有单元测试完成

  • 优点:可以节省桩程序开发的工作量

  • 缺点:顶层控制单元最后测试,底层单元对于上层影响较大,不是纯粹的单元测试

3、单元测试过程和输出物

  • 计划:单元测试计划
  • 设计:单元测试方案
  • 实现:单元测试用例、单元测试规程
  • 执行:缺陷报告、单元测试报告

二、集成测试

1、概念

  • 在单元测试的基础上,按照设计(HLD)的要求将模块组装起来,测试组装后的功能以及模块间的接口。

  • 测试方法:主要方法属于灰盒测试

  • 集成测试的层次:单元》模块》子系统》系统

  • 测试重点:

    • 组装后的功能:

      功能是否实现

      一个模块是否会对其他的模块产生影响

    • 接口间的数据传递:

      是否存在数据丢失

      是否存在异常修改

2、集成测试策略

  • 大爆炸集成
    在这里插入图片描述

    • 方法:先对每个模块单独进行测试,设置驱动和桩,然后全部组装起来进行测试

    • 优点:

      可以迅速完成测试

      需要的驱动和桩,以及测试用例的数量相对较少

    • 缺点:

      一次性组装所有模块是比较困难的,不可避免地存在较多问题

      一次性组装后,某些问题可能存在漏测

    • 适用范围:

      维护项目

      规模较小的项目

  • 自顶向下集成

    • 方法:

      采用和设计一样的顺序进行拼装,从顶层模块开始向下层模块进行集成.

      深度优先:优先集成下一层的模块
      在这里插入图片描述
      广度优先:优先集成同一层的模块
      在这里插入图片描述

    • 优点:

      驱动开发相对较少

      如果是深度优先策略,可以优先完成一个完整功能的测试

    • 缺点:

      桩程序成本较高

      底层组件的测试被推迟了

    • 适用范围:

      产品结构稳定,顶层变化小

  • 自底向上集成

    • 方法:

      从底层模块开始,往上层逐步进行集成

    • 优点:

      桩程序的工作量相对减少

      底层模块的集成是可以并行的

    • 缺点:

      驱动工作量较大

      顶层模块的验证被推迟

    • 适用范围:

      底层模块较为稳定,变化较少,高层接口变动较频繁的产品

  • 三明治集成

    • 方法:

      将系统划分成三层:顶层、中间层(目标层)、底层

      从定层开始使用自顶向下的策略集成

      自底层开始采用自底向上的策略集成

      最后在目标层汇合

    • 优点:

      集合了自顶向下和自底向上的优点

    • 缺点:

      中间层(目标层)测试不充分

      改进:再加上对于中间层采用独立的测试策略进行测试

    • 适用范围:

      适用于大多数的项目

  • 其他

    • 基干集成
    • 分层集成
    • 基于功能集成
    • 基于消息集成
    • 基于进度集成
    • 基于风险集成

3、集成测试过程和输出物

  • 计划:集成测试计划
  • 设计:集成测试方案
  • 实现:集成测试用例、集成测试规程
  • 执行:缺陷报告、集成测试报告

三、系统测试

1、概念

  • 将已经集成好的软件,作为整个系统的一部分,与其他部分(硬件,系统软件,数据,人员等)结合在一起,在实际运行环境下,进行的测试活动。
  • 目的:验证与需求规格是否相符

2、系统测试常见类型

  • 功能测试

    • 最基本的测试类型
    • 验证软件的功能与需求规格是否一致
    • 方法:人工测试、自动化测试
  • 性能测试

    • 软件系统在运行时所表现出的性能

    • 时间特性:

      app测试:app的启动时间

      web测试:网页响应时间

    • 资源利用特性:

      软件运行时CPU占用率

      内存的占用

      带宽的占用

    • 测试方法:

      工具和自动化

  • 压力测试

    • 测试系统在资源超负荷,长时间运行情况下的性能
    • 例:网站连续运行1个月后,10万用户并发访问,测试登录请求能否在30秒内完成
  • 负载测试

    • 对比测试系统在高负载情况下的性能表现
    • 例:分别测试网站在5万,10万,20万,50万用户并发情况下,系统的响应时间
  • 容量测试

    • 测试系统能够正确处理的最大的数据的容量
    • 例子:测试网站最大并发访问人数
  • GUI测试

    • 测试对象:

      简单界面元素:按钮、输入框

      组合界面元素:下拉菜单、工具栏

      完整界面:窗口

  • 安装测试

    安装前:安装文件、文档

    安装中:安装步骤、参数

    安装后:生成的文件、卸载

    升级

  • 稳定性测试(可靠性测试)

    • 测试系统在一定的负载,长时间下能否正常运行
    • 通常使用自动化方式进行测试
    • 例子:app测试中的monkey测试
  • 安全性测试

    • 测试系统的安全性,保障数据的完整性和保密性

      例:保障已授权的用户正常访问数据、阻止未授权的用户访问数据

  • 其他

    配置测试、恢复性测试(异常测试)、备份测试、

    健壮性测试、文档测试、在线帮助测试、网络测试

3、系统测试过程

  • 计划

    • 需求分析:确定测试需求
    • 系统测试计划-评审
  • 设计

    • 系统测试方案-评审
  • 实现

    • 系统测试用例-评审
    • 系统测试规程
    • 预测试项
  • 执行

    • 搭建测试环境

      真实环境、仿真环境

    • 准备测试数据

      数据来源:手工构造、产品原生数据、工具捕获的数据、随机数据

    • 执行预测试

      只有预测试通过,才转系统测试

      提交预测试报告

    • 执行系统测试用例、提交缺陷报告并跟踪

    • 回归测试

    • 每日提交测试日报、提交系统测试报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值