软件测试基础知识个人笔记

2023-11-18

一、为什么要测试

  1. 软件系统越来越成为生活中不可或缺的一部分
  2. 缺陷不可避免
  3. 软件不正确执行可能会导致很多问题

二、软件测试的定义

  1. 软件测试,描述一种用来促进鉴定软件的正确性,完整性,安全性和质量的过程(维基百科)
  2. 公司主流观点:测试是一个包含计划,准备和测量活动的过程,其目的是确认被测系统的特性,并指出需求和实现之间的差异
  3. 其他经典定义:在规定的条件下,对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求,进行评估的一个过程
    正向思维的
    优点:以需求和设计为本,有利于界定测试工作的范畴和测试计划安全,针对性强,有利于质量评估工作
    不足:观念以证实为主的情况下,不容易找到软件的错误,也容易忽略一些错误
    反向思维:
    优点:容易找到较多错误
    不足:与需求和设计没有必然的关联,测试活动容易丢失重点,可能发现较多对客户使用没有影响或者影响很小的bug

三、什么是软件缺陷(bug)

软件缺陷的定义:

  1. 从产品内部看,软件缺陷是软件产品开发或维护过程中,所存在的错误,毛病各种问题
  2. 从产品外部看,软件缺陷是系统所需要实现的某种功能的失效或违背
  3. 软件缺陷(bug)与软件错误(error)不同,软件缺陷的范围更广,它涵盖了软件错误,还涵盖了不一致性问题,功能需求定义缺陷和产品设计缺陷等

四、软件缺陷的主要类型,对象

  1. 功能,特性没有实现或部分实现
  2. 设计不合理,存在缺陷
  3. 实际结果和预期结果不一致
  4. 运行出错,包括运行中断,系统奔溃,界面混乱等,如上网过程中浏览器异常退出
  5. 数据结构不正确,精度不够
  6. 用户不能接受其他问题,如时间过程,界面不美观

五、软件测试的目的

  1. 发现缺陷,并进行修复,以确保系统满足预期结果
  2. 质量评估,说明系统在相应时间点的质量情况,为利益干系人决策是否发布版本提供依据
  3. 预防缺陷,在软件生命周期,通过对测试依据(如合同要求,行业标准,法律要求等)和需求文档进行测试,可以预防将缺陷引入代码中

六、不同的测试阶段,需要考虑不同的测试目标

  1. 单元测试,集成测试和系统测试,测试的主要目标是尽可能的发现失效,从而识别和修正尽可能多的缺陷
  2. 验收测试,目标是确认系统是否按照预期工作,是建立满足需求的信心
  3. 有些情况下,测试的主要目标是对软件的质量进行评估,从而为利益相关人提供这样的信息:在给定的时间点发布系统版本可能存在的风险
  4. 回归测试,通常是为了验证在开发过程中的软件变更是否引入新的缺陷

七、软件测试的原则

  1. 测试可以显示缺陷的存在
  2. 穷尽测试是不可能的
  3. 测试应尽早的介入
  4. 缺陷具有集群性
  5. 杀虫剂悖论
  6. 测试活动依赖于测试内容,测试内容绝对测试活动
  7. 系统发布取决于是否满足客户需求,而不是是否还有缺陷

八、软件测试的对象

软件测试不仅仅局限于软件程序的测试,测试活动贯穿于软件开发过程的整个生命周期。因此,需求分析,概要设计,详细设计以及编码个阶段所得到的交付件,包括设计文档,源代码,应用程序乃至随软件版本发布的资料,都是软件测试的对象

九、软件质量属性

软件测试是为了保障软件质量,那什么是软件质量呢?
软件测试是为了保障软件质量,那什么是软件质量呢?
ØISO 8402(1994)定义软件的质量为:反映实体满足明确的和隐含的需求的能力的特征的总和
综合来看:软件质量是产品、组织和体系或过程的一组固有特性,反映它们满足顾客和其它相关方面要求的程度人们通常把影响软件质量的特征称为软件质量属性,用质量模型来描述,并定义为分成模型,最基本的叫做基本质量特性,

不同质量模型主要在分类、属性定义上有所不同,但都包含一些主要的特性,包括:
安全性( Security )
可靠性(Reliability)
性能及效率(Efficiency)
可用性(Usability)
可维护性(Maintainability)
兼容性( Compatibility )等。

九、软件测试的分类

  1. 按是否允许程序划分
    静态测试 动态测试
  2. 按阶段划分
    单元测试,集成测试,系统测试,验收测试
  3. 按测试用例的设计方法划分
    白盒测试 黑盒测试
  4. 按测试针对的质量目标划分
    功能测试,适用性测试,性能测试,安全测试,可靠性测试
  5. 其他分类方法
    如按测试对象划分,资料测试,自动化测试,回归测试

单元测试

定义:对软件中最小可测试单元进行检查和验证
对象:软件基本组成单元,可以是函数,模块,类,组件等
目标:单元模块内部的逻辑结构和功能是否正确,发现程序设计或实现的逻辑错误
策略:开发人员对自己交付的代码块进行的测试(包括静态测试和动态测试)

集成测试

定义:把若干个经过单元测试的组件/模块/单元组装到一起的测试
对象:测试模块之间的接口,如操作系统,文件系统,硬件或系统之间的接口
目标:通过对模块功能,接口设计进行分析,覆盖所有的功能项目,重点的接口,重点的边界进行重点测试,确保被集成部分之间的接口正确无误
策略:可以根据系统结构,功能任务集中,事务处理顺序或其他方面来制定,为了减少在生命周期后期才发现缺陷而产生的风险,集成程度应该逐步增加,而不是将系统一下子集成为巨无霸来测试

系统测试

定义:将已经确认的软件,硬件,外设,网络等元素结合在一起,进行各种组装测试和确认测试
对象:完整的软件系统/产品,测试环境应该尽量和最终的目标和生产环境相一致,从而减少不能发现和环境相关的失效的风险
目标:验证整个系统是否满足预定的功能和非功能需求,找出需求规格不符或与矛盾的地方
策略:基于不同方面的测试,如基于风险评估,需求规格说明,业务过程,use case,系统测试通常由独立测试团队进行

验收测试

定义:由客户,用户,系统的其他利用相关者,进行的确认是否可以接受一些系统的一个验证性测试
对象:系统。系统的某部分或特定的系统非功能特征
目标:通过对系统功能,系统的某部分或特定的系统非功能特征进行测试,来确定系统是否满足客户需求,并且能够进行商用,建立信息。发现缺陷不是验收测试的主要目标
策略:验收测试的内容取决于应用风险,包括彻底的验收测试,简单的验收测试,互操作验收等

白盒测试

定义:根据被测对象的内部结构,设计测试用例的一种测试方法,又称为结构测试
对象:被测程序,组件
目标:按照被测对象内部的结构进行测试,确认是否达到预定要求,如检验程序中的每条通路是否能按预定要求正确工作
策略:主要应用于程序内部测试
白盒测试主要用于单元测试,程序内的代码逻辑数量庞大,无法也没有必要进行穷举,需要采用合适的测试方法进行测试

常用白盒测试方法:
Ø语句覆盖 Ø判定覆盖 Ø条件覆盖 Ø判定条件覆盖 Ø条件组合覆盖 Ø路径覆盖

黑盒测试

黑盒测试:把测试对象看做一个黑盒子,测试人员不需要参考组件或系统的内部结构,依据客户需求和规格说明书,检查程序的功能是它的功能说明,因此黑盒测试又叫功能测试或数据驱动测试

按照被测对象质量属性分类:
Ø功能测试 Ø性能测试 Ø可靠性测试 Ø安全性测试 Ø可服务性测试 Ø兼容性测试

常见测试设计方法:

Ø等价类划分:把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件
Ø边界值分析:对输入或输出的边界值进行测试的一种测试方法
Ø错误推测:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的进行测试的方法
Ø判定表:采用表格的形式,列出所有条件和所有结果的组合,做到无遗漏覆盖的测试方法
Ø因果图:采用图的方法对多个输入之间的组合以及输入、输出之间的因果关系进行分析的方法
Ø正交分析:从大量的试验点中选取适量的有代表性的点,应用统计学理论中推导出的正交表,作为测试输入条件
Ø功能图:根据对被测功能的状态迁移图以及逻辑功能图的覆盖进行测试用例设计的方法

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

软件测试基础知识个人笔记 的相关文章

  • git报错:warning: unable to access

    git操作的时候出现该错误 warning unable to access Users a10 12 config git ignore Permission denied warning unable to access Users a
  • 一个女孩的就业之路(同济大学BBS上两年不沉的帖子)

    文章很长 有机会见到这篇文章的童鞋 希望能耐心看完 其他不多说 我是2005年毕业的 偶尔来这里看看 不常灌水 今天来随意写下一些 如果对各位有任何的帮助 是我衷心所愿 1 考研与就业 2004年的暑假 我和大多数人一样 艰难的抉择 究竟是

随机推荐

  • NacosValue 注解

    NacosValue 定义在 nacos api 工程中 com alibaba nacos api config annotation NacosValue 注解解析在 nacos spring project 工程中 com aliba
  • 阻塞队列java实现

    阻塞队列 目前队列存在的问题 1 很多场景要求分离生产者和消费者两个角色 它们得由不同的线程来担当 而之前的实现根本没有考虑线程安全问题 2 队列为空 那么在之前的实现里会返回null 如果硬拿到一个元素 只能不断循环尝试 3 队列为满 那
  • PHP魔术方(2)

    PHP魔术方 2 文章目录 PHP魔术方 2 1 toString 和 invoke tostring 和 invoke 两者的触发形式接近 2 call 用来检测所调用的成员方法是否存在 3 callStatic 4 get 5 set
  • 在Linux系统上用C++将主机名称转换为IPv4、IPv6地址

    在Linux系统上用C 将主机名称转换为IPv4 IPv6地址 功能 指定一个std string类型的主机名称 函数解析主机名称为IP地址 含IPv4和IPv6 解析结果以std vector
  • vue div高度自适应

    1 在 js文件中编写自定义指令 export default install Vue 在组件标签上绑定 v resizable 指令 并使用对象的形式通过绑定值传递宽度和高度以及最大 最小高度的值 在 bind 函数中 获取传递的值 并根
  • 走进区块链企业 I 用实践赋能实体产业,坚持提供价值服务的旺链科技

    作为华东师范大学MBA高材生 他在高科技制造 金融行业有着超过16年的业务咨询管理和技术架构经验 他是中国云体系产业创新联盟理事会常务理事 边缘计算产业联盟专家委员 也是原 Accenture资深总监 集成技术专家 而在如今话题正盛的 区块
  • linux创建,恢复和删除screen

    学习记录 侵删 目录 1 创建 2 恢复 3 删除 使用服务器训练模型时 如果服务器断开 之前的训练结果显示的终端就不好找到了 貌似可以通过线程去恢复 没试过 可以使用screen 训练前先打开一个screen 如果服务器断开 重连后可以恢
  • 最新免费版 Office 全家桶Copilot,Gamma+MindShow 两大ChatGPT AI创意工具GPT-4神器助力高效智能制作 PPT,一键生成,与AI智能对话修改PPT(免安装)

    目录 前言 ChatGPT MindShow 1 使用ChatGPT工具生成PPT内容 2 使用MindShow工具一键智能制作PPT MindShow简介 使用网页版制作 pdf转ppt GAMMA AI神器 GAMMA app介绍 注册
  • MySQL基础篇:sql_mode配置

    文章目录 零 简介 一 sql mode常用来解决的几类问题 二 sql mode包含的模式 三 sql mode各个选项作用示例 3 1 sql mode为空 对于不符合定义的值 会截断到符合定义类型 3 2 sql mode为ANSI
  • 编程语言用 Java 开发一个打飞机小游戏(附完整源码)

    编程语言用 Java 开发一个打飞机小游戏 附完整源码 上图 写在前面 技术源于分享 所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习 java确实不适合写桌面应用 这里只是通过这个游戏让大家理解oop面向对象编程的过程
  • 【React】路由(详解)

    目录 单页应用程序 SPA 路由 前端路由 后端路由 路由的基本使用 使用步骤 常用组件说明 BrowserRouter和HashRouter的区别 路由的执行过程 默认路由 精确匹配 Switch的使用 重定向路由 嵌套路由 向路由组件传
  • 计算机网络体系结构 - 运输层

    一 运输层协议概述 运输层为应用进程之间提供端到端的逻辑通信 二 运输层的端口 端口 port 也称为协议端口号 protocol port number 对上层的应用进程进行标识 端口用一个16位端口号进行标志 端口号只具有本地意义 端口
  • 剑指offer-输出字符串所有种类的排列组合

    常规题 先校验长度 不符合则直接输出 符合则判断是否为最后一个字符 是则直接new对象输出 不是则交换begin和i位置的数字 再用递归输出 public class Test28 先校验 public static void permut
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • cec2017(python):红狐优化算法(Red fox optimization,RFO)求解cec2017

    一 红狐优化算法 红狐优化算法 Red fox optimization RFO 由Dawid Po ap和 Marcin Wo niak于2021年提出 该算法模拟了红狐的狩猎行为 具有收敛速度快 寻优精度高等优势 参考文献 Poap D
  • easyexcel读取excel将数据存到mysql【一个简单的例子】

    读取excel 1 xml里面增加maven
  • 使用Java程序向手机发送短信

    JAVA发送手机短信 有几种方法 1 使用webservice接口发送手机短信 这个可以使用sina提供的webservice进行发送 需要进行注册 2 使用短信mao的方式进行短信的发送 这种方式应该是比较的常用 前提是需要购买硬件设备
  • 变分推断

    一 概述 对于概率模型来说 如果从频率派角度来看就会是一个优化问题 从贝叶斯角度来看就会是一个积分问题 从贝叶斯角度来看 如果已有数据 x x x 对于新的样本 x hat x
  • 转债打新监听

    不炒股 只打新捡点小钱 package com github niefy modules job run import cn hutool core convert Convert import cn hutool core util Nu
  • 软件测试基础知识个人笔记

    一 为什么要测试 软件系统越来越成为生活中不可或缺的一部分 缺陷不可避免 软件不正确执行可能会导致很多问题 二 软件测试的定义 软件测试 描述一种用来促进鉴定软件的正确性 完整性 安全性和质量的过程 维基百科 公司主流观点 测试是一个包含计