【软件测试】软件测试基础

news2024/10/6 6:49:16

  • 1. 需求
    • 1.1. 需求的概念
    • 1.2. 为什么要有需求
    • 1.3. 测试人员眼中的需求
  • 2. 测试用例
    • 2.1. 为什么需要测试用例
    • 2.2. 什么是测试用例
    • 2.3. 一个简单的测试用例
  • 3. 软件测试的整体流程
  • 4. bug
    • 4.1. 如何描述一个bug
    • 4.2. bug的级别
    • 4.3. bug生命周期

1. 需求

1.1. 需求的概念

简单的来说,就是一个人想要干什么,这就是需求。比如张三想要吃饭,想要工作…

在多数软件公司中,有两部分需求,一部分是用户需求,一部分是软件需求。

  1. 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。
  2. 软件需求:或者叫做功能需求,该需求会详细描述开发人员必须实现的软件功能。
  3. 大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求。

笼统的来说,用户需求就是掏钱的金主提出的需求,比如金主的一句话,我需要一个登录的功能。而软件需求就是根据用户需求进行细化的文档,用以描述要实现的软件功能。

img

1.2. 为什么要有需求

一般来说,在公司中,开发测试都时根据软件需求来进行工作的。如果没有需求的,那对于开发人员和测试人员来说,就是没有统一的规定,那么工作可能就不能很好的展开。

比如在高考中,学校都是有录取分数线的,假如你考的学校没有分数线的这个标准,那么你就不能很好的开展你的学习了。

1.3. 测试人员眼中的需求

产品经理写好需求规格说明书之后,就会有详细的需求说明,那么在测试人员眼中的需求是是什么样子的呢?拿登录来举例子,测试眼中的需求如下图。

img

2. 测试用例

2.1. 为什么需要测试用例

测试用例如同剧本,把对某一个功能或业务进行测试的步骤用文档描述出来,用这个文档指导测试,这个文档就是测试用例,是执行测试所要参考的“剧本”。

设计测试用例是为了更有效、更快地发现软件缺陷,测试用例具有很高的有效性和可重复性,依据测试用例进行测试可以节约测试时间,提升测试效率。

测试用例具有良好的组织性和可追踪性,有利于测试管理。

2.2. 什么是测试用例

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

测试用例解决了两大问题:测什么?怎么测?

如果要测试一个登录系统,该如何进行呢?

img

如上的一个登录界面,包括两个输入文本框,分别用来接收用户输入的账号和密码,测试时要把各种不同的用户名和密码进行组合来完成此页面的功能测试。

如下表列出了测试该功能的测试用例文档,包含了相应的测试该功能的测试点,每个测试点对应的测试用例都记录了测试时使用的特定输入以及测试软件的过程步骤。

img

2.3. 一个简单的测试用例

在测试系统登录功能时,只有输入正确的用户名和正确的密码,登录才能成功。如果没有输入争取的用户名和密码,情况又会如何?下面列举一些可能遇到的非正常登录情况。

  1. 如果输入正确的用户名,而密码输入错误,登录应该失败。
  2. 如果输入争取的用户名,不输密码,登录应该失败。
  3. 如果用户名输错,输入正确的密码,登录应该失败。
  4. 如果用户名和密码都不输,直接单击"登录"按钮,也不能通过登录。

以上这些都是测试点,每一个测试点都可以看作一个测试用例。下面以输入正确的用户名和错误的密码为例,展示一个简单的测试用例描述。

img

3. 软件测试的整体流程

  1. 测试需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。
  2. 制定测试计划阶段:参考软件需求规格说明书、项目总体计划等文档确定本次测试的测试范围、测试内容、进度安排以及人力物力等资源的分配,制定整体测试策略。
  3. 测试用例设计阶段:主要任务是依据需求文档、概要设计、详细设计等文档设计测试用例,用例编写完成后会进行评审。
  4. 测试建模阶段:对被测形同的行为进行抽象和建模,针对业务逻辑复杂的功能和流程进行业务建模,可以为设计测试用例提供支持。
  5. 测试执行阶段:测试设计完成后紧接着进入测试执行阶段,包括搭建环境、执行测试、缺陷管理等等。
  6. 测试总结阶段:对整个测试进行评估和总结,编写测试报告,确认系统是否可以上线。

4. bug

4.1. 如何描述一个bug

一个合格的bug描述应该包括以下几个部分:

  1. 发现问题的版本:开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的表示也有利于统计和分析每个版本的质量。
  2. 问题出现的环境:环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
  3. 错误重现的步骤:描述问题出现的最短步骤
  4. 预期行为的描述:要让开发人员知道怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。
  5. 错误行为的描述:描述错误的现象。
  6. 其他:某些公司会有一些其他的要求,例如故障的分类:功能故障、界面故障、兼容性故障等。有些有优先级的分类。
  7. 不要把多个bug放到一起,在无法确认是同一段代码造成的故障时,不要将bug放在一起提交。

4.2. bug的级别

不同的bug,其处理的紧急程度是不同的。优先级的衡量抓住了在严重性中没有考虑的重要程度因素,优先级的各个等级的具体描述可以参考下图。

img

4.3. bug生命周期

当一个bug被报告后,测试人员应该对它进行跟踪和响应的处理。而要进行有效的缺陷跟踪和处理,首先要了解缺陷的生命周期。

当一个软件缺陷被发现并报告时,意味着这个缺陷诞生了。缺陷被修正后,经过测试人员的进一步验证,确认这个缺陷不复存在,然后测试人员关闭这个缺陷,意味着缺陷走完了它的历程,结束其生命周期。

从上述可以看出,缺陷的生命周期可以简单地描述为“打开” -> “修正” -> “关闭”。

在缺陷的生命周期,必须设置一些缺陷的状态描述这些情形,并在整个软件开发组织中建立缺陷生命周期模型,以使整个开发团队对缺陷获得一致的理解。软件缺陷的主要状态描述如下表所示。

img

软件缺陷在生命周期中经历的状态变化的整体过程如下图所示。

img

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

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

相关文章

如何在iOS设备(iPhone,iPad等)上恢复丢失的照片

如果你像现代90%的人一样拥有智能手机,那么你很可能使用口袋里的微型电脑拍摄大部分(如果不是全部)照片,而不是标准的傻瓜相机或数码单反相机。 像任何数字设备一样,存储和保存这些照片可能是一个变化无常的过程&…

nvm 切换 Node 版本失败

创建vue3项目时,需要切换到更高版本的 node,于是使用 nvm (node 包版本管理工具)进行版本切换 切换版本时,显示成功,但再次查看当前 node 版本时,发现没切换过来。 解决方法: where node 查看node的安装…

spring高级篇(七)

1、异常处理 在DispatcherServlet中,doDispatch(HttpServletRequest request, HttpServletResponse response) 方法用于进行任务处理: 在捕获到异常后没有立刻进行处理,而是先用一个局部变量dispatchException进行记录,然后统一由…

找不到msvcr110.dll的多种解决方法,轻松解决dll问题

在日常使用计算机的时候,突然提示:“由于找不到msvcr110.dll,无法继续执行代码”。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。这个问题可能会给用户带来困扰,但是不用担心,下面…

ReentrantReadWriteLock(可重入读写锁)源码解读与使用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java源码解读-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 读写锁是什么 3. ReentrantReadWriteLock是什么 4. 源码解…

每日OJ题_贪心算法二⑥_力扣409. 最长回文串

目录 力扣409. 最长回文串 解析代码 力扣409. 最长回文串 409. 最长回文串 难度 简单 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个…

spring框架学习记录(1)

前半个月一直在应付期中考试,快被折磨似了orz 文章目录 SpringIoC(Inversion of Control) 控制反转与DI(Dependency Injection)依赖注入bean相关bean配置bean实例化bean的生命周期 依赖注入相关依赖注入方式依赖自动装配 容器创建容器获取bean Spring IoC(Inversi…

场景文本检测识别学习 day08(无监督的Loss Function、代理任务)

无监督的Loss Function(无监督的目标函数) 根据有无标签,可以将模型的学习方法分为:无监督、有监督两种。而自监督是无监督的一种无监督的目标函数可以分为以下几种: 生成式网络的做法,衡量模型的输出和固…

网络安全审计

一、什么叫网络安全审计 网络安全审计是按照一定的安全策略,利用记录、系统活动和用户活动等信息,检查、审查和检验操作时间的环境及活动,从而发现系统漏洞、入侵行为或改善系统性能的过程,它是提高系统安全性的重要手段。 系统…

巨人网络发布2023年年报:全力拥抱AI浪潮,开启游戏产业新篇章

易采游戏网5月3日消息,国内知名游戏公司巨人网络发布了其2023年度财务报告,报告显示,公司在过去一年中积极拥抱AI技术,实现了业绩的稳步增长,为游戏产业带来了新的活力与机遇。 在报告中,巨人网络详细阐述了…

XYCTF2024 RE Trustme 复现

但是只得到用户名 admin 法一:猜Sql注入,直接万能密码 法二:正常逆向 jadx中的AndroidManifest.xml有奇怪之处 怀疑有加壳,进ProxyApplication看看 大量安卓一代壳的特征 Android第一代壳加固原理及实现 - 知乎 GitHub - Huye…

零基础学习数据库SQL语句之定义数据库对象的DDL语句

DDL语句 DDL Date Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段) 基本操作 数据库操作 查询所有数据库 SHOW DATEBASES查询当前数据库 SELECT DATEBASE() 创建 CREATE DATEBASE [IF …

张大哥笔记:付费进群创业项目玩法及详细操作教程

今天给大家分享一个赚钱小项目,它就是付费进群系统,这个项目应用范围很广。比如表情包,知识付费,美女写真,虚拟资料,交友扩列等都可以。今天我们就来说一下最近爆火的交友搭子付费进群做个演示案例&#xf…

你不可不知的数字可视化的未来。

10年UI设计和前端开发接单经验,完工项目1000,持续为友友们分享有价值、有见地的干货观点,有项目外包需求的老铁,欢迎关注发私信。 数据可视化是一个不断发展和创新的领域,未来的发展方向可能包括以下几个方面&#xff…

深度学习Day-15:LSTM实现火灾预测

🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 要求: 了解LSTM是什么,并使用其构建一个完整的程序;R2达到0.83; 一、…

小米电脑回收站已清空?别急,恢复数据有妙招

在数字时代,电脑已经成为我们日常生活和工作中不可或缺的工具。对于小米电脑用户而言,回收站是一个方便我们管理文件的工具,但有时候,误操作或不小心清空回收站可能会让我们面临数据丢失的风险。那么,当小米电脑的回收…

Linux学习之路 -- 文件 -- 文件操作

在学习C语言时&#xff0c;我们就学习过文件相关的内容&#xff0c;但是由于知识储备尚且不足&#xff0c;无法深入的了解文件&#xff0c;下面我们就要重新认识一下文件。 <1> 简单介绍(铺垫) 1.前面我们说过&#xff0c;文件 内容 属性&#xff0c;所以我们对文件的…

ThreeJS:坐标辅助器与轨道控制器

ThreeJS与右手坐标系 使用ThreeJS创建3D场景时&#xff0c;需要使用一个坐标系来定位和控制对象的位置和方向。 ThreeJS使用的坐标系是右手坐标系&#xff0c;即&#xff1a;X轴向右、Y轴向上、Z轴向前&#xff0c;如下图所示&#xff0c; ThreeJS-右手坐标系 Tips&#xff1a;…

java技术栈快速复习05_基础运维(linux,git)

Linux知识总览 linux可以简单的理解成和window一样的操作系统。 Linux和Windows区别 Linux是严格区分大小写的&#xff1b;Linux中一切皆是文件&#xff1b;Linux中文件是没有后缀的&#xff0c;但是他有一些约定俗成的后缀&#xff1b;Windows下的软件一般是无法直接运行的Li…

JDK14特性

JDK14 1 概述2 语法层面的变化1_instanceof的模式匹配(预览)2_switch表达式(标准)3_文本块改进(第二次预览)4_Records 记录类型(预览 JEP359) 3 API层面的变化4 关于GC1_G1的NUMA内存分配优化2_弃用SerialCMS,ParNewSerial Old3_删除CMS4_ZGC on macOS and Windows 4 其他变化1…