软件测试内容整理

news2024/11/17 23:52:17

1. 软件测试

1.1. 定义

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

1.2. 行业标准

软件测试已有了行业标准(IEEE/ANSI ),1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其[目的在于]检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。

这个[定义明确指出]:软件测试的[目的是为了]检验软件系统是否满足需求。它[再也不是一个]一次性的,而且只是开发后期的活动,[而是与]整个开发流程融合成一体。

软件测试已成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。

1.3. 软件测试的目标与原则

1.3.1. 软件测试的目的

  1. 观点一:

[软件测试]的目的是为了保证[软件产品]的最终质量,在[软件开发]的过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、[测试规范],实施测试,对[测试记录]进行分析,并根据回归测试情况撰写[测试报告]。测试是为了[证明程序]有错,而不能保证程序没有错误。

以最少的时间和人力,尽可能多的发现程序中的错误和缺陷。测试还要证明,软件的功能和性能与需求说明相符合。

  • [软件测试]的狭义论和广义论——静态和动态的测试软件测试的辨证论——[正向思维]和反向思维
  • 软件测试的风险论——测试是评估
  • 软件测试的经济学观点——为盈利而测试
  • 软件测试的标准论——[验证和确认]
  1. 观点二

测试的目的就是以最少的时间和人力找出软件中潜在的各种错误和缺陷,证明软件的功能和性能与需求说明相符,Glenford J.Myers曾提出以下观点:

  • 测试是为了证明程序有错,而不是证明程序无错误
  • 一个好的测试用例能发现至今未发现的错误
  • 一个成功的测试是发现了至今未发现的错误

软件测试的目的往往包含以下内容:

  • 测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进
  • 测试帮助测试人员设计有针对性的测试方法,改善测试的效率和有效性
  • 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法

1.3.2. 软件测试原则

随处可见的[二八定律]

测试既不要不充分,也不要过分。在通常情况下,在分析,设计、实验阶段的复审和测试工作能够发现和避免80%的bug,而系统的软件测试能找到其余bug的80%,最后约4%([剩下20%的20%])的bug只有在用户大范围、长时间的使用后才会暴露出来。应该把“尽早和不断地进行测试”作为开发者的座右铭,问题发现的越早,解决问题的代价就越小。彻底的测试是不可能的,但充分覆盖程序逻辑,并确保软件的所有条件是有可能的。所有的测试都应该追溯到用户需求。测试应从“小规模”开始,逐步转向“大规模”,应针对每个测试结果做全面检查。

  • 软件测试是证伪而非证真
  • 尽早地和不断地进行软件测试
  • 重视无效数据和非预期的测试
  • 应当对每一个测试结果做全面检查
  • 测试现场保护和资料归档
  • 程序员应避免检查自己的程序
  • 充分注意测试中的群集现象
  • 用例要定期评审

1.4. 常见测试与测试分类

1.4.1. 常见测试

  • [回归测试] [功能测试]
  • [压力测试] [负载测试]
  • [性能测试] [易用性测试]
  • [安装与反安装测试] [恢复测试]
  • [安全性测试] [兼容性测试]
  • [内存泄漏测试] [比较测试]
  • [Alpha测试]

1.4.2. 从软件测试技术角度来分类

1、从是否需要执行被[测试软件]的角度分类([静态测试]和[动态测试])。
2、从测试是否针对[软件结构]与算法的角度分类([白盒测试]和[黑盒测试])。
3、从测试的不同阶段分类([单元测试]、[集成测试]、[系统测试]、[验收测试])。

2. 软件测试的方法

软件测试的方法和技术是多种多样的,从大的分类上来说,分为白盒测试和黑盒测试。

在这里插入图片描述
在这里插入图片描述

2.1. 白盒测试

白盒测试是把软件看成一个白盒子,在完全知道软件结果的情况下,通过分析程序内部的逻辑与执行路径来设计测试用户,并对用例进行测试的方法,所以也称结构测试或者数据驱动测试。白盒测试主要用于单元测试,方法有逻辑覆盖和路径测试。其中逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、点覆盖、边覆盖等。白盒测试的缺点是投入人力资源的难度很大,执行白盒测试的测试人员要有不亚于开发人员的技术背景和对代码的熟悉程度。

2.2. 黑盒测试

黑盒测试是把软件开成一个黑盒子,不考虑程序的内部结构与执行路径如何,根据输入/输出数据条件来设计测试用例,查看程序的功能是否正确或满足用户要求,因此也称作功能驱动或数据驱动测试方法。黑盒测试主要用于软件确认测试,方法有等价类划分、边界值分析、错误推测法、因果图法等。[黑盒测试对和数要求不高,如何在对系统结构不了解的情况下,设计测试过程才是黑盒测试最核心的部分。]

2.2.1. 黑盒测试可以发现如下几类错误

  • 功能不对或功能遗漏。
  • 界面错误。
  • 数据库访问或者处理错误。
  • 性能问题。

2.2.2. 优点/缺点

  • 优点

    • 测试人员不需要了解实现得细节,包括特定的编程语言(没有编程经验的人也可以设计测试用例);
    • 测试人员和编程人员是相互独立的(黑盒测试用例设计与程序如何实现无关);
    • 从用户的角度进行测试,很容易被接受和理解;
    • 有助于暴露任何与规格不一致或者歧异的地方;
  • 缺点

    • 不能测试程序内部特定部位;
    • 如果程序未执行的代码无法发现;
    • 不可能做到穷举测试;

2.4. 自动测试

在业务量很大的情况下,需要测试数据或者测试输入时,自动测试就是一个最佳的选择。[自动测试是可重复性的测试并目有着很高的速度与效率],但是自动测试也有一些缺点。[前期要花费购买工具,并且测试脚本的开发需要投入很多时间和人力。]

2.5. 压力测试

压力测试指为了某个单一的目的,[大强度地重复性的使用软件的某一功能,以发现该功能在压力条件下的性能指标]。软件[上市前]对不够自信的功能进行专项的,不顾逻辑的,无所不用其极的对待待测软件。或者是[软件上市后]对客户反馈的模糊信息进行集中的测试以精确定位问题。

2.6. 功能测试

功能测试是指测试软件各个功能模块是否正确,逻辑是否正确。对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。[这种测试的目标]是核实数据的接受,外理和检索是否正确以及业务规则的实施是否恰当。此类测试基于黑盒技术,该技术通过图形用户(GUI)与应用程序进行交互,并对交互的输出或结果进行分析,以此来核实应用程序及其内部进程。

2.7. 性能测试

性能测试主要测试软件的性能指标是否达到预期要求。包括[负载测试],[强度测试],[数据库容量测试],以及[基准测试]。

  1. 压力测试:给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,包括内部内存、CPU 可用性、磁盘空间和网络带宽。

  2. 负载测试:逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。

  3. 并发测试:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题。

2.8. 安全测试

安全测试是检查系统对非法侵入渗透的防范能力(渗透测试、流量攻击、SQL注入、跨域攻击)

2.9. 兼容性测试

兼容性测试是指要测试的软件在不同的硬件平台上、不同的应用软件之间、不同的操作系统中、不同的网络环境中是否可以正常的运行、有无异常的测试过程。即是通常说的软件的可移植性。

  1. Web兼容性测试:

浏览器上的兼容性(Google 、saferi、Firefox、opra、Edge、360、QQ、夸克、搜狗…根据市场所占份额,从高到低进行测试)

  1. 操作系统测试:

如在传统的桌面端程序,需要对操作系统,x86、x64,运行时环境,甚至是驱动、安装环境。

  1. app兼容性测试

测试(andrid)在不同的系统、不同的屏幕、不同的分辨率、不同的手机品牌等情况下的软件使用情况,手机的选择一般是按照市场占用份额从高到低。ios系统较为简单,可以直接进行测试。

2.10. 用户界面测试(UI测试)

UI测试是对用户界面的风格、图片、背景、文字的测试。用户界面测试用于合适用户与软件之间的交互。一般有这样一些指标,第一是界面的有效性,第二是界面的连贯性,第三是界面传统型。主要包括用户界面的友好性,人性化,易操作性等方面的测试。

2.12. APP专项测试

包括弱网测试、权限测试、场景交互测试、资源争用测试、权限测试、离线测试、安装卸载更新测试、消息推送测试、资源监控测试等

2.12.1. 弱网测试

测试在不同网络状况下,如2g、3g、4g、5g网络环境下,软件的运行情况。

2.12.2. 场景交互测试

测试app在不同使用场景下是否可以保持正常运行,如在使用时来电话收到短信,以及app之间切换后是否正常运行等。

2.12.3. 资源争用测试

测试app的闪存占用、内存占用、cup占用等;如音频播放app在运行时有另外的调用扬声器的app使用时是否正常运行。

2.12.4. 权限测试

测试某些功能在使用前是否会弹出请求授权的弹窗,在关闭权限后下次使用会弹出申请权限弹窗。

2.12.5. 离线测试

测试软件在离线状态下其功能的使用情况。

2.12.6. 安装卸载更新测试

测试app是否可以正常安装、卸载、在有更新时是否会主动弹出更新提示。

2.12.7. 消息推送测试

测试软件在推出后台、弱网、低电量等情况下是否能够正常推送。

2.12.8. 资源监控测试

测试软件的内存、电量、流量等资源的使用情况。

2.11. 文档测试

文档测试是对伴随软件同事提供给用户的各种使用手册,说明书,须知等进行的测试。文档测试是为了避免文档描述和软件系统实际不一致的情况发生。

3. 软件测试的过程

软件测试分为:单元测试、集成测试、确认测试、系统测试

3.1. 单元测试

单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。[目的是检查出模块内部的错误,修改这些错误使得程序正确运行。]

在这里插入图片描述

3.2. 集成测试

集成测试也称组装测试,就是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。集成测试的策略主要有两种方式,分为[一次性组装方式]和[增值式组装方式]。

3.3. 确认测试

确认测试也称为有效性测试,目的是验证软件的功能和性能是否满足客户的要求,确认测试是用户参加的测试讨程,采用的测试方法是黑盒测试,为了尽可能多的发现你只有用户在使用系统过程中才能发现的问题。

在这里插入图片描述

3.4. 系统测试

系统测试是经过了前面的测试过程之后,软件系统已经基本符合要求,进行系统测试的目的[是测试软件安装之后,能否与系统的其余部分协调工作,以及对系统运行可能出现的各种情况的处理能力]。系统测试主要是有恢复测试,安全测试,强度测试,性能测试等。

4. 软件测试在项目/产品中的份量

首先软件测试在项目的整个开发过程中是必不可收的部分。软件测试是为了发现和修复潜在的缺陷、错误和问题,以确保软件在发布之前具有高质量、稳定性和可靠性。

但是,[根据项目的特点和需求,调整软件测试在项目管理中的比重是很重要的]。不同的项目可能具有不同的规模、复杂性、时间限制和质量要求,因此,在项目管理中适当地调整测试的比重可以更好地满足项目的实际需求。以下是一些考虑因素:

  1. 项目复杂性: 如果项目涉及复杂的功能、集成、数据流等,测试可能需要更多的时间和资源来确保各个部分之间的协调和正确性。

  2. 时间限制: 如果项目有紧迫的交付时间,可能需要在测试中投入更多的资源,以确保在有限的时间内发现尽可能多的问题。

  3. 质量要求: 如果项目对软件质量有严格的要求,比如高可用性、高安全性等,那么测试在项目中的比重可能需要相应增加,以确保达到这些要求。

  4. 变更频率: 如果项目需要经常性的功能迭代和更新,那么持续集成和自动化测试可能需要更多的关注,以便在每次更新后都能保持高质量。

  5. 团队经验: 团队成员的测试经验和技能水平也会影响测试在项目中的比重。如果团队中有经验丰富的测试人员,测试可能会更加充分。

  6. 资源可用性: 项目可用于测试的资源,包括人员、硬件、软件和测试工具,会影响测试在项目中的比重。

  7. 风险管理: 对于具有高风险因素的项目,测试可能需要更多的投入,以最小化潜在的风险。

  8. 客户需求: 如果客户对软件质量和稳定性有特别高的要求,测试在项目中的比重可能需要相应增加。

  9. 软件本身应用特性: 是否为强应用型(是否为僵尸系统)、多场景、 多需求等特征,需要相应的增减测试在项目中比重。

5. 各类软件开发模型中软件测试所处的阶段

软件开发模型的选择会影响软件测试的时间点和方式。不同的软件开发模型强调不同的开发和测试阶段,因此测试在项目中的时间点也会有所不同。

序号模型名称测试所在时机
1(标准)瀑布模型在软件交付之前
2瀑布V模型测试与软件开发前的阶段一一对应,需求分析对应系统测试;总体设计对应集成测试;详细设计对应单元测试
3演化模型每个迭代或增量完成后都会有相应的测试阶段
4演化-原型开发在原型模型中,初始的原型版本会用于与用户讨论和收集反馈。在这个阶段,测试可以验证原型是否能够正确地演示核心功能,以及用户是否可以与之进行交互。
5演化-迭代模型在演化模型中,每个迭代都会产生一个可交付的软件版本。在每个迭代结束时,测试团队会对这个版本进行全面测试,以确保功能的正确性、稳定性和质量。
6演化-增量模型每个增量都会包含一部分完整的软件功能。测试团队会在每个增量完成后对其进行测试,以保证每个增量都经过充分的测试。
7敏捷模型在敏捷模型中,测试是持续进行的,而不是被限制在特定的阶段。涵盖了整个开发周期。测试在开发团队和测试团队之间是一个协同合作的过程,通过频繁的测试、反馈和调整,确保软件不断地适应变化的需求和达到高质量的标准。
8融合模型(DevOps)持续集成和持续交付是关键概念。测试会与开发过程紧密结合,每次代码提交后都会触发自动化测试,以确保代码的质量。

参考资料

  1. 什么是软件测试?5分钟带你快速了解! - 知乎 (zhihu.com)

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

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

相关文章

vue微前端qiankun框架学习到项目实战

微前端架构 一、什么是微前端架构 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化web应用的技术手段及方法策略。 微前端借鉴了微服务的架构理念,将一个庞大的前端应用才分为多个独立灵活的小型应用,每个应用都可以独立开发&#…

lazada商品详情数据接口,支持多个国家站点

Lazada商品详情数据接口是一个RESTful风格的接口,通过HTTP协议来访问和操作资源。 Lazada商品详情API接口的使用方法如下: 获取Lazada平台上指定商品的详细信息,包括商品名称、价格、库存、分类、描述、图片等。支持通过商品ID、SKU、Selle…

短视频矩阵系统源码saas开发技术搭建代部署

一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享: 本系统采用MySQL数据库进行存储,数据库设计如下: 1.用户表(user): - 用户ID(user_id) - 用户名&#xff0…

十大直线导轨品牌

在现如今的制造业领域中,直线导轨作为重要的传动元件,广泛应用于各种机械装置中,以下是十个在直线导轨领域具有优秀表现的品牌,我们一起来看看: 1、日本THK,致力于开发、生产并且销售LM滚动导轨、滚珠花键、…

php eayswoole node axios crypto-js 实现大文件分片上传复盘

不啰嗦 直接上步骤 步骤1.开发环境配置 项目需要node.js 做前端支撑 官网下载地址: http://nodejs.cn/download/ 根据自己需要下载对应的版本,我下载的是windows系统64位的版本。 包下载好后 进行安装,安装步骤在此省略... 测试是否安装成功 如果是window 按住键…

WorkPlus Meet 视频会议,自主可控,支持私有化部署

在数字化时代,视频会议成为企业沟通和协作的重要工具。然而,许多企业对于数据安全和隐私保护的担忧使得选择合适的视频会议平台变得十分关键。作为一款具有私有化部署能力的视频会议工具,WorkPlus Meet完美替代了SaaS的腾讯视频会议&#xff…

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

本文转载自支付宝体验科技,作者是蚂蚁集团客户端工程师博欢,介绍了支付宝如何基于 HarmonyOS 4.0 实况窗实现医疗场景履约智能提醒。 1.话题背景 8 月 4 日,华为在 HDC(华为 2023 开发者大会)上推出了新版本操作系统…

TensorFlow入门(一)

一、下载安装Anaconda 下载地址:http://www.anaconda.comhttp://www.anaconda.com 下载完成后运行exe进行安装 二、下载cuda 下载地址:http://developer.nvidia.com/cuda-downloadshttp://developer.nvidia.com/cuda-downloads 下载完成后运行exe进行安装 安装后winR cmd进…

带权并查集

题目 并查集相信大家都不陌生,能够以极低的时间复杂度进行区间合并和区间查询,而带权并查集就是在此基础上新增了查询和维护节点到根节点距离的功能,注意此处所说的距离并不是并查集树形数据结构里节点之间的距离,而是题目里面描…

SpringBoot整合阿里云发送短信 (demo)

1. 登录阿里云 - 搜索【短信服务】- 套餐【立即购买】 2. 添加签名 国内消息 - 签名管理 - 添加签名 3. 添加模板 国内消息 - 模板管理 - 添加模板 模板详细 4. 依赖 <!--阿里云短信服务--> <dependency><groupId>com.aliyun</groupId><artifactI…

中国城市政商关系健康总指数、方面指数及一级指标得分2018

中国城市政商关系健康总指数、方面指数及一级指标得分2018 1、指标&#xff1a;省份代码、省份、城市代码、城市名称、政商关系健康指数、亲近指数、清白指数、政府关心、政府服务、企业税负、政府廉洁度、政府透明度 2、范围&#xff1a;290个地级市 3、数据说明&#xff1…

IDEA新建.xml文件显示为普通文本

情况如下&#xff1a; 1. 在XML文件中添加*.xml的文件名模式 2. 在文本中&#xff0c;选中*.xml进行删除

MySQL篇-MySQL存储引擎详解

MySQL 执行流程是怎样的&#xff1f; 可以看到&#xff0c; MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现&#xff0c;主要包括连接器&#xff0c;查询缓存、解析器、…

Euro-NCAP-HWA测试流程中文版V1.1(2023发布)

定义 在本协议中,使用了以下术语: Vehicle undertest (VUT) – 指根据本规程测试的车辆,车上有碰撞前的碰撞缓解或避免系统 Global VehicleTarget (GVT) – 指本协议中使用的车辆目标,其定义见TB025—Euro-NCAP全球车辆目标规范v1.0 辅助其他车辆(SOV)--指最新的 AEB …

Spring源码相关

总分结构回答&#xff0c;突出关键接口、类、方法名 run -> AbstractApplicationContext.refresh&#xff08;&#xff09;程序的入口 在IOC中的操作都是基于DefaultListableBeanFactory bd对象保存在map集合中 refresh方法宝包括了整个Spring的执行流程和bean的完整生命…

【Postman-windows-9.12.2版本安装与汉化】

Postman-windows-9.12.2版本安装与汉化 想用英文版本的可以直接点击如下链接下载最新版本 官网最新版本(无法汉化)&#xff1a;https://www.postman.com/downloads/ 如果想要汉化的就不能使用最新版本&#xff0c;因为最新版本没有汉化包可以用 汉化包和postman的版本必须是…

RFID技术在危险品仓库中的综合应用

危险仓库内的危化品存放、隔离、堆放数量等需要严格的管控。危险化学品自身所具有的易爆、易燃、毒害、腐蚀、放射等性导致其在生产、经营、存储、运输、使用、废弃处置的过程中安全尤为重要&#xff0c;RFID技术应用避免人为误操作&#xff0c;实现危险品的自动安全核查和规范…

win10家庭版安装docker desktop问题

一、WSL kernel version too low 1、power shell,运行升级命令 wsl --update 2、官网下载wsl2更新包安装 二、Unexcepted WSL error 未找到解决方法&#xff0c;看来只能老老实实用win专业版了。

用go实现http服务端和请求端

一、概述 本文旨在学习记录下如何用go实现建立一个http服务器&#xff0c;同时构造一个专用格式的http客户端。 二、代码实现 2.1 构造http服务端 1、http服务处理流程 基于HTTP构建的服务标准模型包括两个端&#xff0c;客户端(Client)和服务端(Server)。HTTP 请求从客户端…

单片机涉及到这么多行业?

单片机在众多行业中都有广泛应用。汽车电子领域使用单片机来控制引擎、制动系统、安全系统等&#xff0c;提升车辆性能和安全性。不懂的可以看看这一套学习资料包&#xff0c;里面涵盖了一整个嵌入式行业教学资料&#xff0c;不论是小白入门还是精通进阶都包括在内&#xff0c;…