测试-1-基础篇

2023-10-29

一.相关概念

1. 软件测试

软件测试就是检测软件是否满足用户的需求。测试就是以评价一个程序或者系统属性为目标的一种活动,是对软件质量的度量。

2. 软件测试和研发的区别

(1)软件测试和调试区别
目的不同:
测试是发现软件中存在的问题;
调试是定位并解决软件中存在的问题。
角色不同:
测试可以是开发人员,也可以是测试人员;
调试只能是开发人员。
阶段不同:
测试贯穿于整个软件开发的生命周期;
调试只能在开发阶段。
(2)开发要求技能少,专业度高;测试要求技能广,深度低。

3. 软件开发的生命周期

需求
计划
设计
编码
测试
运行维护

4. 需求

满足用户的期望或者合同规定的文档所需的条件和权能。
软件开发的过程:

用户需求
软件需求
开发编码
测试
运行上线

软件需求是用户需求转化而来的,经过对用户需求的验证和分析之后,具体功能实现的细节说明。

5. 什么是 BUG ?

当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。
当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

6. 什么是测试用例?

测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

二. 开发模型

软件开的发的生命周期:

需求
计划
设计
编码
测试
运行维护

1. 瀑布模型

流程:

start
需求分析
计划
设计
编码
测试
end

定义:
瀑布模型是一个项目开发架构,将软件生命周期的各项活动规定按固定顺序连接成若干阶段的工作,形如瀑布流水,因此是线性顺序进行的软件开发模式,是所有其他模型的基础框架。
优点:

  • 强调开发的阶段性;
  • 强调早期计划及需求调查;
  • 强调产品测试。

缺点:

  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化;
  • 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
  • 风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。

2. 螺旋模型

定义:
螺旋模型采用一种周期性的方法来进行系统开发,这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段。由这4个阶段进行迭代,软件开发过程每迭代一次,软件开发又前进一个层次。

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目,每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。

优点:

  • 强调严格的全过程风险管理;
  • 强调各开发阶段的质量;
  • 提供机会检讨项目是否有价值继续下去。

缺点:

  • 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入。

3. 增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个版本纳入一部分需求,下一个版本纳入更多的需求,依此类推,直到系统完成。

4. 迭代模型

把整个软件开发过程细化为一系列不同功能的小项目,在一次次的迭代过程中,不断有新的功能被创造出来,每一次的迭代都包含了对项目的需求分析、设计、实现与测试。当迭代到了一定程度后,可以通过客户的反馈来进一步细化需求,开始新一轮的迭代。

优点:

  • 降低了项目的开支风险;
  • 可以在较为靠前的时间就发现风险
  • 加快了整个开发工作的进度
  • 可以适应需求的变化。

增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。

5. 敏捷开发

小结: 轻文档、轻流程、重目标、重产出

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。

scrum里面的角色
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。

  • 产品经理负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • 项目经理负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。

scrum的基本流程:

在这里插入图片描述

  • 产品负责人负责整理user story,形成左侧的product backlog。
  • 发布计划会议:产品经理负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的任务列表sprint backlog。
  • 迭代计划会议:项目团队对每一个任务分解,分解的标准是完成所有任务,每个任务都有明确的负责人,并完成工时的初估计。
  • 每日例会:每天项目经理召集站立会议,团队成员回答昨天的进度和问题。
  • 演示会议:迭代结束之后,召开演示会议,相关人员都应参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由产品经理整理,形成新的任务。
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

三.测试模型

测试工作的核心内容就是不断地找Bug,只是要调整好自己的心态,一切以敏捷的原则为主

1. 软件测试v模型

图片

  • V模型最早是由Paul Rook在20世纪80年代后期提出的,目的是改进软件开发的效率和效果。是瀑布模型的变种,明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系
  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求
  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试。

2. 软件测试W模型

图片

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
  • W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的
  • W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
  • 局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

四.其它知识

1. 软件测试的生命周期

需求分析
测试计划
测试设计/开发
测试执行
测试评估

2. 配置管理

配置管理是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程。

3. 如何描述一个 BUG ?

  • 测试版本
  • 测试环境(web系统、电脑系统、浏览器的版本号)
  • 测试数据
  • 实际结果
  • 预期结果
  • 其它附件(截图错误、错误日志等)

4. BUG 的级别

  • Blocker(崩溃):
    阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。
  • Critical(严重):
    系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。
  • Major(一般):
    功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。
  • Minor(次要):
    界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。

5. BUG 的生命周期

Created with Raphaël 2.2.0 Start new Open 是否修改 ? Fixed 验证通过? Closed End Reopen Rejected,Delay yes no yes no

● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:如果认为不是Bug,则拒绝修改。
● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。

6. 执行测试的步骤

  • 打开待测试的系统
  • 打开测试管理工具用例模块,开始执行用例
  • 发现bug!进行复现并确认bug的复现步骤
  • 记录bug
  • 沟通bug
  • 验证以前提交的bug
  • 确认本次测试完成
  • 编写测试报告

五. 总结

本篇我们介绍了有关测试部分的基础概念,包括测试的模型和开发的模型。作为测试人员,需要清楚的去描述一个 BUG,尽可能的锻炼自己的沟通能力,在最短的时间内能够把问题讲述清楚,同时应该不断提升自身的业务能力,具有一定的原则性,对于可能出现的问题,一点也不能放过,做到——胆大、心细!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试-1-基础篇 的相关文章

  • 接口用例设计与常见接口问题汇总

    一 接口用例设计 一 接口测试用例可以从功能 性能 安全三方面进行入手 设计 详情参看以下思维导图 二 接口常见问题汇总 一 接口技术层面 1 输入参数验证校验不全面 如 1 1入参数据类型长度边界 范围边界 1 2 入参数据内容 成员内容
  • 软件测试质量度量指标

    软件测试质量度量指标 度量模块 度量指标 统计方法 度量说明 产品完成度 1 需求通过率 已通过需求 已计划需求 体现需求的完成度 也常可以统计为 测试用例通过数 计划的测试用例总数 即默认用例覆盖是完全的 2 功能点通过率 已通过功能点
  • linux tc模拟弱网环境(丢包)

    0 背景 项目需要模拟弱网环境下 测试音视频的编解码功能 在linux系统下可以使用tc工具模拟弱网环境 包括出 入流量的丢包等 1 tc工具介绍 2 网卡出数据 netem Network Emulator 可以用来对网卡发出的数据包进行
  • 使用较广泛的安全测试工具有哪些?

    使用较广泛的安全测试工具有哪些 安全测试是一个非常复杂的过程 安全测试所使用到的工具也非常多 而且种类不一 如漏洞扫描工具 端口扫描工具 抓包工具 渗透工具等 一 Web漏洞扫描工具 AppScan AppScan是IBM公司开发的一款We
  • Python中的logging模块解析

    前言 在自动化测试中 为了定位问题 调试框架代码 需要使用日志模块 今天我们重点讲解Python中的logging模块 在学习使用logging模块前 我们先要了解logging模块的四大天王 logger handler filter f
  • 汽车部件IPX9K/IP69K、IP66K等ip防护等级测试的应用

    汽车部件IPX9K IP69K IP66K等ip防护等级测试的应用 汽车传感器 连接器 水泵 灯具等部件的ip防护等级测试 以IPX9K IP69K IPX5 IPX6 IPX6K IPX7 IPX8 IP5X IP6X测试为主流 其中高等
  • 《第四部分:测试用例--等价类、边界值与用例编写》

    目录 关联实例练习文档 一 认识基本术语 一 术语一 二 术语二 三 术语三 控制流图的概念 四 圈复杂度计算公式 二 用例设计 一 等价类 1 1 等价类介绍 1 2 等价类划分举例 1 3 等价类划分的设计用例思路 1 4 小结 等价类
  • 软件测试学习心得-3

    静态技术 一 静态技术与测试过程 静态测试和动态测试的区别 二 评审 正式评审过程 角色与职责 评审类型 三 静态分析和工具支持 编译器分析工具 规范标准一致性 数据流分析 控制流分析 圈复杂度 一 静态技术与测试过程 静态测试不以测试数据
  • 成为一个优秀的测试工程师需要具备哪些知识和经验?

    软件测试每个阶段有不同的要掌握的技术和经验 先按照薪资范围划分下 月薪 5 9K 零基础入门 学会功能测试能够找到工作 15 25K 测试在职能搞定性能测试和自动化测试 25K 搞定测试开发 在一线大厂工作 每一个阶段的侧重也不同 入门到找
  • 2022接口自动化测试工具Postman 使用教程

    一 Postman接口测试概述 1 1 接口测试 接口是指对协定进行定义的引用类型 通俗讲是就是软件系统不同组成部分衔接的约定 接口测试是测试系统组件间接口的一种测试 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点 测
  • 功能测试和非功能测试有什么区别?

    转载 https dzone com articles whats the difference between functional and nonfun fromrel true 功能测试验证功能是否按照要求工作 而非功能测试则对更广泛
  • 发现一个bug如何定位是前端还是后台问题?

    1 经验法 软件测试人员应不断精进自己的技能 负责的项目多了 自然对功能的实现过程有了解 也就明白如何分类bug了 例如 网页上的某个图片的分辨率不对 如果我们了解实现过程 可以想到一般情况下 是根据某个地址去服务器取图片的 数据库一般只保
  • CS安装卸载测试总结

    最近在执行C S控制客户端安装卸载的测试 通过自己的测试经历和网上的资料 总结以下安装卸载测试点 安装测试 1 GUI测试 安装过程中所有的界面显示 提示信息等是否正确 2 兼容性测试 在不同的操作系统 不同配置的主机上能否正常安装 3 安
  • 弱网测试总结

    一 弱网测试 网络请求 代理proxy 进行目标操作 修改返回值 延迟 丢包等 返回给数据接收端 二 弱网测试的重要性 1 弱网情况下 缺少丢包 延时软件的处理机制 程序处理出问题 2 实时同步性高的场景 微信视频聊天 远程会议 同步书写等
  • python单元测试之pytest

    前提 需要安装pytest和pytest html 安装pytest 在控制台输入 命令 pip install pytest 进行下载安装 安装pytest html 在控制台输入 命令 pip install pytest html 进
  • 一文2000字详细介绍Android APP 常见概念与 adb 命令

    01 背景 因 team 正在推进 APP 自动化测试 那么主要业务是 IoT 相关的产品 既然是 APP 自动化测试 那么 Android APP 相关的一些概念与知识就很关键了 在之前遇到相关的问题都是现查现用 对于一些常用的概念和命令
  • 使用KIF进行功能性iOS UI测试

    开始使用KIF 从Github下载KIF源资产并将其放置在可以轻松找到的地方 或者 可以使用 Git 的子模块来获取本地使用的源代码 git 初始化 git submodule 添加 https github com kif framewo
  • 百度应用部署秘籍

    背景介绍 传统PaaS采用sandbox实现app间的资源安全隔离 sandbox需要对运行环境和编程语言进行底层的功能限制 例如 禁止创建进程和线程 禁止部分系统调用 禁止对某些系统路径的读写 禁止加载C语言模块 禁止某些网络功能等 这大
  • 组合测试方法PK正交分析方法

    测试过程中 我们经常遇到需要覆盖多个变化参数的测试场景 如我们测试BS配置控制客户端组织资源远程配置一个设备时 进行一个设备通道视频参数设置的各种组合测试 如下图 多数情况下 类似于这种多组合测试时 老员工则是依靠经验去进行有针对性的测试
  • Zabbix安装部署(国内源镜像)----一次性解决centos7安装zabbix报错:[Errno 256] 的问题

    Zabbix安装部署 环境准备 OS CentOS 7 安装步骤 一 关闭selinux和iptables root localhost systemctl stop firewalld service root localhost set

随机推荐

  • 2021-02-04

    问题描述 小明要做一个跑步训练 初始时 小明充满体力 体力值计为 10000 如果小明跑步 每分钟损耗 600 的体力 如果小明休息 每分钟增加 300 的体力 体力的损耗和增加都是均匀变化的 小明打算跑一分钟 休息一分钟 再跑一分钟 再休
  • JavaScript数组筛选的两种方法

    筛选数组的方法有两种 先简单说一下筛选数组主要是按照要求筛选数组里面的值 假设日常开发需要用到筛选数组里面大于十的值并放入到一个新的数组里面 这个时候我们就应该想到需要建一个新的数组并且还要把符合条件的值放入到新的数组里面下面我们先来看一下
  • End-to-End Semi-Supervised Object Detection with Soft Teacher 解读

    端到端的半监督目标检测 论文 https arxiv org pdf 2106 09018v3 pdf 代码地址 https github com microsoft SoftTeacher 整体框架 student model 的训练 标
  • JAVA年度安全 第三周 SESSION COOKIE SECURE 标识

    http www jtmelton com 2012 01 17 year of security for java week 3 session cookie secure flag What is it and why do I car
  • MySQL 数据库(DBMS)安装教程图文详解

    一 下载 在MySQL的官网上提供了两种安装方式 第一种是在线联网安装 第二种是本地安装 第一种必须联网安装 当安装时必须能够访问网络 第二种 离线安装即可 区别 第一种 在线联网安装 msi 会有图形界面向导方式安装 优点是可以比较清晰地
  • 分布式系统详解--框架(Hadoop-Ssh免密登陆配置)

    分布式系统详解 框架 Hadoop Ssh免密登陆配置 配置Ssh非常简单 其实就是为了避免将来集群机器变得很多导致操作本机 后者操作其它服务器输入密码的次数太多而浪费了太多的时间 在这儿我们配置了这个Ssh免登录将会节省一大部分时间 我们
  • Java-StringBuffer 和StringBuilder

    Java StringBuffer 和StringBuilder 1 StringBuffer StringBuilder中的常用方法 增 append xxx 删 delete int start int end 改 setCharAt
  • 用SQL语句从AD中读取用户相关属性 从AD中读取用户的相关属性

    参考原文链接 http www myexception cn sql server 1011477 html EXEC sp addlinkedserver ADSI Active Directory Services 2 5 ADSDSO
  • 从隔离中崛起:我重新梳理的‘大厂面试指南’助你一战成就职业巅峰

    在这个独特的时期 求职者们面临着前所未有的挑战 而我希望通过这份重新梳理的 大厂面试指南 能够为他们提供有力的支持和指导 我深知 面试是一个关键的环节 能否在众多竞争者中脱颖而出 决定着求职者能否顺利进入理想的大厂 现在 V2 0版的 大厂
  • 解决Error: Cannot find module 'node-sass'问题

    今天在运行angular前端的时候出现了以下的问题 解决办法 1 在项目目录cmd下运行 npm install g cnpm registry https registry npm taobao org 2 下载成功后再运行 cnpm i
  • Node.js在数据库进行多条件模糊查询的sql技巧

    实现简单的前台输入框查询筛选出内容包含的数据 使用ajax请求后台 后台拦截后再交给逻辑处理层 controller 再在dao层进行sql语句的查询并返回数据给逻辑层 blog search function req resp let s
  • 【多线程】ThreadPoolExecutor 类的使用详解

    ThreadPoolExecutor 构造方法 ThreadPoolExecutor共4个构造方法 咱们直接看参数最多的7个参数分别代表 public ThreadPoolExecutor 线程池核心线程数 int corePoolSize
  • 蓝桥云课——数字三角形 Python(动态规划)

    由于本人还在复习考研 留给蓝桥杯的时间不会太多 能不能拿奖还另说 听天由命吧 题目地址 数字三角形 一道比较简单的动态规划题目 比较适合新手学习 从动态规划三部曲开始走 1 先确认dp方程含义 在这我们采用二维数组 每个数组用来储存最大的值
  • Typora文本颜色设置

    Typora文本颜色设置 前言 方法一 使用markdown语法的内联公式 设置颜色 文本颜色设置公式 常用的颜色公式代码表 效果预览 方法二 使用html代码 设置颜色 文本颜色设置公式 颜色代码 方法三 借助第三方软件AutoHotKe
  • 数据库之SqlSessionTemplate源码解析

    前言 在普遍的JAVA WEB项目的实际业务处理中 最终都是通过SqlSessionTemplate执行数据库的CURD操作 本文结合mybatis源码 对SqlSessionTemplate进行详细的介绍 SqlSessionTempla
  • 【微信小程序】微信小程序怎么让tabbar右上角的红点动起来,闪烁红点。

    1 需要用到两个API分别是wx showTabBarRedDot 和wx hideTabBarRedDot wx showTabBarRedDot 显示 tabBar 某一项的右上角的红点 wx hideTabBarRedDot 隐藏 t
  • ERC20接口下USDT代币的深入解析

    ERC20代币合约规则简介 ERC20 是各个代币的标准接口 ERC20 代币仅仅是以太坊代币的子集 为了充分兼容 ERC20 开发者需要将一组特定的函数 接口 集成到他们的智能合约中 以便在高层面能够执行这些操作 获得代币总供应量 获得账
  • Hbase存储方式

    Hbase概念 HBase是一个分布式的 面向列的数据库它介于nosql和RDBMS之间 仅能通过主键 row key 和主键的range来检索数据 仅支持单行事务 可通过hive支持来实现多表join等复杂操作 主要用来存储非结构化和半结
  • do{}while(0)的用法

    这几天在看代码的时候遇到了一个好像很神奇的用法 do while 0 do while 1 我能理解 就是一直循环 然后在循环体内设置跳出条件 或者干脆就不跳出 那do while 0 是干嘛的呢 在内部也改变不了循环条件 然后执行一次就结
  • 测试-1-基础篇

    基础概念 一 相关概念 1 软件测试 2 软件测试和研发的区别 3 软件开发的生命周期 4 需求 5 什么是 BUG 6 什么是测试用例 二 开发模型 1 瀑布模型 2 螺旋模型 3 增量模型 4 迭代模型 5 敏捷开发 三 测试模型 1