测试理论与方法----测试流程的第二个环节:测试计划

二、软件测试分类与测试计划

1、软件测试的分类(理解掌握)

  1. 根绝需求规格说明书,在设计阶段会产出的两个文档:

    • 概要设计(HLD):设计软件的结构,包含软件的组成,模块之间的层次关系,模块与模块之间的调用关系,每个模块的功能等。(大范围描述)
    • 详细设计(LLD):在概要设计的基础上,为每个功能模块做详细的描述,把功能转换为详细,精准化的过程
  2. 按照【开发阶段】划分:

    • 单元测试:又被称为“模块测试”,是针对程序的每个模块进行正确性检验的测试工作,目的在于检查程序的每个模块是否能够正确实现详细设计文档中给出的需求。
    • 集成测试:又称为“组装测试”,在单元测试基础上,逐步将程序所有的模块有序,递增的集成在一起,最终满足概要设计文档给出的需求。
    • 确认测试:又被称为“有效性测试”,验证软件的功能,性能,其他的特性是否和用户的预期结果一致。只有通过确认测试,才会进入系统测试阶段。
    • 系统测试:在真实的环境下,运行被测软件,检测软件能否和不同的系统平台相匹配或配置,从而满足用户的需求。
    • 验收测试:是检测产品的最后一个环节,根据双方签订的协议,合同书,任务书,交付依据等等,做最后的测试与评审,从而决定接收或拒收产品。(第三方/外包)
  3. 按照【测试技术】划分:

    • 黑盒测试:把被测对象看成是黑色的盒子,通过程序的外部表现发现错误和缺陷,完全不考虑程序的内部结构,只在程序的界面处进行测试,来检查程序的功能是否符合需求(功能测试)
    • 白盒测试:把被测对象看成是透明的盒子,通过对程序内部的结构分析,来发现问题,关注程序内部结构的实现是否正确,所以又被称为“结构测试”
    • 灰盒测试:白+黑,既要关注程序的功能(外部表现),又要关注程序的内部结构
  4. 按照【代码运行】划分:——>看程序是否运行

    • 静态测试:指的是不实际运行被测对象,只是静态观察代码,界面,文档的正确性。
      • 代码测试:主要检测代码是否符合标准和规范
      • 界面测试:主要检测软件的实际界面与需求说明是否相符合
      • 文档测试:主要测试用户手册和需求文档是否满足用户的实际需求
    • 动态测试:指的是实际运行被测对象,通过输入相关的测试数据,来观察实际结果和预期结果是否一致。
  5. 按照【软件特性】划分:

    • 功能测试:属于黑盒测试一部分,检测软件的功能是否符合用户的需求,以及功能结果的正确性。比如:易用性测试,界面测试,安装、卸载测试,兼容性测试等
    • 性能测试:除了功能测试外,另一个测试指标。一个程序除了能够正确实现对应的功能外,还要考虑到功能实现的响应时间,处理速度,承受的负载压力
    • 安全测试:检测系统中嵌入的保护机制,是否真正能够提供保护功能,防止非法入侵,数据丢失等问题
  6. 其他测试类型:

    • 回归测试:①验证提交的缺陷已经被修复;②确保修复了旧的缺陷没有引发新的缺陷
      • 方式之一:按照之前设计好的测试用例(测试场景)再执行一遍
    • 冒烟测试:是在正式进入测试流程前,对软件的可测性进行评判的依据,先来验证软件是否具备可测性的操作,所以也叫做“可测性测试”,只有通过了冒烟测试,才会进入到正式的测试流程中。
    • 随机测试:是测试人员根据经验和直觉,再来发现一些边缘性的缺陷
    • Monkey测试:把测试人员看成“小白”,对被测软件进行任意随机的操作,看软件多长时间会出现异常(比如,程序未响应ANR),主要测试程序的稳定性,属于移动端自动化测试手段

2、软件测试的原则

  1. 所有测试标准是建立在用户需求之上
  2. 时间服从于质量
  3. 事先定义好测试的标准
  4. 不能穷举测试(把软件功能可能会出现的情况全部测一遍,比如:测试计算器的加法功能:把所有的数字全部加一遍——>不现实)
  5. 第三方测试更为客观和有效(毕竟第三方是专门做测试,接触的产品类型和测试经验会更多一些;可以让本公司的测试人员能够安排其他的任务,节约了公司的人力成本)
  6. 测试计划是做好测试工作的前提
  7. 对于错误发现较多的地方,重点关注(缺陷集群效应)
  8. 尽早的和不断地测试
  9. 妥善保存测试文档
  10. 测试应该从“小规模”,逐步转向到“大规模”
  11. 对测试错误的结果要有一个确认的过程

测试流程的第二个环节:测试计划

3、测试计划的概述

  1. 定义:test plan:规定了测试的活动范围,方法,资源,进度安排;明确正在测试的项目,要测试的特性,要执行的测试任务,每个任务的负责人,以及和计划相关的风险。
  2. 编写测试计划的原则:5W1H
    • what:测什么,明确测试范围和内容
    • why:为什么要测试,测试的目的
    • who:谁来测,测试人员的分配
    • where:在哪测,测试环境
    • when:测试开始的时间和结束的时间
    • how:如何测,测试方法和工具

4、测试计划的编写

备注:形式:一个小组出一份,但是每个人都会参与到计划书的编写过程

  1. 测试项目的简介

    1. 描述测试计划文档的目的
    2. 描述项目背景
    3. 产品介绍(核心功能)
    4. 预期用户(面向的阅读者)
    5. 项目功能的说明(每一个模块的说明)
  2. 测试参考文档

    1. 项目相关的文档(需求文档,说明书,计划书,合同书…)
    2. 专业书籍
    3. 技术论坛文章
  3. 测试提交文档

    1. 概述:测试过程中要产出的文档

    2. 测试用例:“怎么测”,证明测试的深度,广度

    3. 缺陷报告:证明测试的成果

    4. 测试报告:整理本轮测试所做的事情

      关键在于:做好模板统一

  4. 专业术语

    1. 测试技术相关的专业术语
    2. 业务层面的专业话术(金融,医疗,军工,银行…)
    3. 和开发相关的专业术语(基本上可以忽略)
  5. 测试策略(最核心的模块)

    1. 根据【模块】来明确测试范围和测试类型:

      可以按照系统的模块来进行划分,制定测试策略:

      系统模块1:功能测试,性能测试,安全测试…

      系统模块2:功能测试,UI界面测试…

      系统模块3:功能测试,性能测试,易用性测试,兼容性测试…

      ……

    2. 可以按照【测试类型】来进行划分,制定测试策略

      功能测试:系统模块1,系统模块2,系统模块3…

      性能测试:系统模块1,系统模块3…

      界面测试:系统模块1,系统模块2…

      ……

    3. 测试范围

      测试范围和测试策略是相辅相成,根据明确的系统模块,整理出对应的(功能)测试点

      例:信贷系统:用户管理模块:筛选功能,修改功能,删除功能,添加功能…

    4. 测试方法和工具

      测试过程中会采用的一些测试方法,使用的一些测试工具

      例:进行功能测试时,用到的方法:等价类边界值,场景法…;进行性能测试时,用到的工具:LR…

    5. 测试进入和退出的标准

      ①测试进入标准:当达到某一个目标时,就进行测试

      ​ 例:当程序的一个模块被开发出来时,就可以进行单元测试

      ②测试退出标准:当实现某一个目标时,就可以退出测试

      ​ 例:当每个模块的检测无误时,就可以退出单元测试

  6. 资源

    1. 硬件资源:被测项目所需要的最低环境资源支持

    2. 软件资源:比如服务器版本,数据库版本…

    3. 网络资源:5G 4G WIFI…

      上述三点,都属于测试环境资源

    4. 人力资源:设定好参与测试的人员,明确分工,哪些人做哪些事情(角色+职责)

    5. 设定里程碑事件:在既定的时间节点要完成既定的任务

  7. 测试计划中的风险(风险分析)

    1. 市场:比如目前市场上同类型竞争产品较多
    2. 人员:比如请假,离职….
    3. 项目开发和需求:比如需求变更…
    4. 技术层面:比如参与人员技术有限…

回顾
  1. 软件测试分类:

​ 开发阶段:单元测试,集成测试,确认测试,系统测试,验收测试

​ 测试技术:黑盒测试,白盒测试,灰盒测试

​ 代码运行:静态测试,动态测试

​ 软件特性:功能测试,性能测试,安全测试

​ 其它类型:回归测试,冒烟测试,随机测试,Monkey测试

  1. 测试计划 test plan 5W1H原则

​ what测什么,why为什么要测,who谁来测,where在哪测(测试环境),when什么时候测(开始、结束时间),how如何测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序密码显示与隐藏的实现

默认密码隐藏起来(显示为点),后面的图标是闭眼;用户点击图标后,图标变成睁眼,同时把密码明文显示出来;如此循环 Page({data: {passwordType: true, // 切换是否密码框show_pass: false // 是否…

镜之Json Compare Diff

前言 “镜” 寓意是凡事都有两面性,Json 对比也不例外! 因公司业务功能当中有一个履历的功能,它有多个版本的 JSON 数据需要对比出每个版本的不同差异节点并且将差异放置在一个新的 JSON 当中原有结构不能变动,差异节点使用数组对象的形式存储,前端点击标红即可显示多个版本的节…

Ubuntu20.04如何更换国内源-阿里云源

1.备份源文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.打开源文件,注释默认的源 vim /etc/apt/sources.list ## 注释原本内容 # deb http://mirrors.ivolces.com/ubuntu/ focal main restricted universe multiverse # deb-src http://mirrors.ivolc…

pandas由入门到精通-数据清洗-分类数据

pandas-02-数据清洗&预处理 E. 分类数据1. 适用情况2. Categorical 扩展数据类型2.1 通过astype将一个Series转化为Categorical类2.2 通过pd.Categorical 生成Categorical类2.3 通过pd.Categorical.from_codes 将标签列表和整数列表转化为Categorical类2.4 Categorical类的…

Django(7)-项目实战-发布会管理

登录功能 模板页面 sign/templates/index.html <!DOCTYPE html> <html> <head><title>Login Page</title> </head> <body><h1>发布会管理</h1><form action"/login/" method"post"><la…

linux————ELK(日志收集系统集群)

目录 一、为什么要使用ELK 二、ELK作用 二、组件 一、elasticsearch 特点 二、logstash 工作过程 INPUT&#xff08;输入&#xff09; FILETER(过滤) OUTPUTS&#xff08;输出&#xff09; 三、kibana 三、架构类型 ELK ELKK ELFK ELFKK EFK 四、构建ELk集群…

Android基于JNI的Java与C++互调

java调用C++: #include <jni.h> //导出c函数格式 extern "C" JNIEXPORT //供JNI调用 JNICALL 函数名格式 Java_包名_类名_函数名(包名.替换为_) Java_com_example_getapplist_MainActivity_stringFromJNI 包名:com_example_getapplist 类名:MainActi…

异常的捕获和处理

目录 一、异常 1.异常概述 1.1认识异常 1.2Java异常体系结构 2.Java异常处理机制 2.1异常处理 2.2捕获异常 2.2.1使用try-catch捕获异常 2.2.2使用try-catch-finally处理异常 2.2.3使用多重catch处理异常 2.3抛出异常 2.3.1使用throws声明抛出异常 2.3.2使用throw…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——形式逻辑——选言假言——要么、或者与箭头的关系

角度 或则转化/鲁滨逊定律 (1)或者变箭头: P ∨ Q = ┐ P → Q = ┐ Q → P P∨Q=┐P→Q=┐Q→P P∨

详细介绍typescript的所有变量类型

目录 1. 任意类型&#xff08;Any&#xff09;2. 数字类型&#xff08;Number&#xff09;3. 字符串类型&#xff08;String&#xff09;4. 布尔类型&#xff08;Boolean&#xff09;5. 数组类型&#xff08;Array&#xff09;6. 元组类型&#xff08;Tuple&#xff09;-需求明…

研磨设计模式day14模板方法模式

目录 场景 原有逻辑 有何问题 解决方案 解决思路 代码实现 重写示例 模板方法的优缺点 模板方法的本质 何时选用 场景 现在模拟一个场景&#xff0c;两个人要登录一个系统&#xff0c;一个是管理员一个是用户&#xff0c;这两个不同身份的登录是由后端对应的两个接…

Android笔记--Hilt

Hilt 是 Android 的依赖项注入库&#xff0c;可减少在项目中执行手动依赖项注入的样板代码。执行手动依赖项注入要求您手动构造每个类及其依赖项&#xff0c;并借助容器重复使用和管理依赖项。依赖注入的英文是Dependency Injection&#xff0c;简称DI,简单说一个类中使用的依赖…

Win11更新致蓝屏死机,应对技巧你必知!

Windows 11用户应该意识到&#xff0c;微软的最新更新导致一些电脑崩溃&#xff0c;并在可怕的死亡蓝屏上显示“UNSUPPORTED_PROCESSOR”。 这一点尤其值得注意&#xff0c;因为据报道&#xff0c;这种情况发生在自然情况下的Windows 11 PC上&#xff0c;因此对任何下载最新更…

数据结构day04(概念、顺序表)

今日任务 2.冒泡排序和选择排序 #define MAX 10typedef struct{int id; }data;typedef struct seq{data arr[MAX];int len; }seqList,*seqListP;/** function: 选择排序* param [ in] * param [out] * return */ int selectSort(seqListP p){if(is_empty(p))return 1;…

React Navigation 路由传参

页面之间传递参数 实现页面之间传递参数很简单&#xff0c;跟普通的 React 项目一样&#xff0c;具体实例入戏&#xff1a; // 传入参数 export default function Home(props: { navigation: any }) {return (<View><Text>Home</Text><Buttontitle"…

干翻Dubbo系列第十五篇:Rest协议基于SpringBoot的规范化开发

文章目录 文章说明 一&#xff1a;Rest协议简介 二&#xff1a;搭建开发环境 1&#xff1a;父项目里边引入的新的版本内容 2&#xff1a;Api中的操作 3&#xff1a;Provider模块 三&#xff1a;编码 1&#xff1a;API模块 2&#xff1a;Provider模块 3&#xff1a;Co…

学习总结(二) node.js服务器如何使用net模块向硬件发送命令与接收数据?

服务器server.js: const net require("net"); //此模块用于tcp/ip通讯 当收到get请求时: server.get("/cfjcApi/v1/SkyTempHudi", (req, res) > { let client new net.Socket(); client.connect(网络模块端口, 网络模块Ip, () > { //此模块…

leetcode做题笔记111. 二叉树的最小深度

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 思路一&#xff1a;递归 int minDepth(struct TreeNode* root){if(!root)return 0;int leftminDepth(root->le…

在springboot中配置mybatis(mybatis-plus)mapper.xml扫描路径的问题

我曾经遇到过类似问题&#xff1a; mybatis-plus的mapper.xml在src/main/java路径下如何配置pom.xml和application.yml_idea 把mapper文件放到java下如何配置_梓沂的博客-CSDN博客 当时只是找到解决问题的办法&#xff0c;但对mybatis配置来龙去脉并未深入了解&#xff0c;所…

Servlet的使用(JavaEE初阶系列17)

目录 前言&#xff1a; 1.Servlet API的使用 1.1HttpServlet 1.2HttpServletRequest 1.3HttpServletResponse 2.表白墙的更新 2.1表白墙存在的问题 2.2前后端交互接口 2.3环境准备 2.4代码的编写 2.5数据的持久化 2.5.1引入JDBC依赖 2.5.2创建数据库 2.5.3编写数…