架构师备考-软件测试

news2024/11/24 16:47:10

定义

        软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

        软件测试的目的就是确保软件的质量、确认软件以正确的方式做了用户所期望的事情,所以软件测试工作主要是发现软件的错误、有效定义和实现软件成分由底层到高层的组装过程、验证软件是否满足任务书和系统定义文档所规定的技术要求、为软件质量模型的建立提供依据。软件测试不仅是要确保软件的质量,还要给开发人员提供信息,以方便其为风险评估做相应的准备,重要的软件测试要贯穿在整个软件开发的过程中,保证整个软件开发的过程是高质量的。

测试方法

  • 从程序执行的方式来分类
    • 人工测试
    • 自动化测试
  • 以测试过程中程序执行状态为依据
    • 静态测试
    • 动态测试

静态测试

        静态测试是被测程序不运行,只依靠分析或检察源程序的语句、结构、过程等来检查程序是否有错误。即通过对软件需求规格说明书、设计说明书以及源程序做结构分析和流程图分析,从而来找出错误。例如不匹配的参数、未定义的变量等。

        静态测试包括:桌前检查、代码审查、代码走查        

  • 桌前检查: 程序员自己检查自己编写的程序。
  • 代码审查:若干程序员和测试员组成会审小组,通过阅读,讨论和争议,对程序进行静态分析的过程。代码审查分两步:
    • 第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为评审的依据。小组成员在充分阅读这些材料之后,进入审查的第二步。
    • 第二步,召开程序审查会。在会上,首先由程序员逐句讲解程序的逻辑。在此过程中,程序员或其他小组成员可以提出问题,展开讨论,审查错误是否存在。实践表明,程序员在讲解过程中能发现许多原来自己没有发现的错误,而讨论和争议则促进了问题的暴露。
    • 在会前,应当给会审小组每个成员准备一份常见错误的清单,把以往所有可能发生的常见错误罗列出来,供与会者对照检查,以提高会审的实效。这个常见错误清单也叫做检查表,它把程序中可能发生的各种错误进行分类,对每一类列举出尽可能多的典型错误,然后把它们制成表格。
  • 代码走查:
    • 第一步,把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。
    • 第二步,开会的程序与代码审查不同,不是简单地读程序和对照错误检查表进行检查,而是让与会者"充当"计算机。即首先由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。
  • 对代码的静态测试包括控制流分析、数据流分析、接口分析和表达式分析。

名称

测试内容

控制流分析

使用控制流程图可检查被测程序是否存在没有使用的语句或子程序。

数据分析

使用控制流程图分析数据各种异常情况,包括数据初始化、赋值或引用过程中的异常。

接口分析

模块之间接口的一致性分析、模块与外部数据库及其他软件配置项之间的一致性分析、子程序和函数之间的接口一致性分析等

表达式分析

检查代码中的表达式错误,括号不配对、数组引用越界、除数为零等

动态测试

        动态测试与静态测试相对应,是通过运行被测程序,对得到的运行结果与预期的结果进行比较分析,同时分析运行效率和健壮性能等。

        这种方法可简单分为3个步骤:构造测试实例、执行程序以及分析结果

黑盒测试

        把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明设计测试实例,检查程序是否满能够按照规范说明准确无误的运行。其主要是对软件界面和软件功能进行测试。对于黑盒测试行为必须加以量化才能够有效保证软件的质量。

  • 黑盒测试主要有:等价类划分法、边界值分析、因果图、正交实验法等。
  • 等价类划分:在设计测试用例时,等价类划分是用得最多的一种黑盒测试方法。它将所有可能的输入数据,划分为等价的部分,然后每个部分中选取少数有代表性的数据作为测试用例
    • 等价类可以分为有效等价类(合理,有意义的数据集合)无效等价类(不合理,无意义的数据集合)两种。
    • 有效等价类:符合《需求规格说明书》要求的,输入合理的数据。用来检验软件是否实现了《需求规格说明书》中规定的功能。
    • 无效等价类:不符合《需求规格说明书的要求的,输入不合理的数据。用来检验软件的容错性。
    • 而在选取测试用例时,应遵从“设计一个新的测试用例时,应尽可能多的覆盖尚未覆盖的有效等价类;但每次应仅覆盖一个尚未覆盖的无效等价类”的原则;
  • 边界值分析:它是对等价类划分的一个补充,即选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据;
  • 因果图:等价类划分,边界值分析都只考虑了输入条件,未考虑输入条件间的联系;而因果图则用来描述多种条件组合的测试用例其最终生成的结果是判定表。它首先基于规格说明书分析原因  (等价类)和结果(输出条件);然后找出原因与结果之间的关系,画出因果图;在因果图上加上约束或限制条件;将其转化为判定表/判定树;最后为每种输出条件组合设计测试用例;
  • 正交实验法:是从大量的实验点中挑出适量的、有代表性的点,应用正交表,合理的安排实验的一种设计方法。

白盒测试

        白盒测试主要是借助程序内部的逻辑和相关信息,通过检测内部动作是否按照设计规格说明书的设定进行,检查每一条通路是否正常工作。白盒测试是从程序方面出发对测试用例进行设计。主要用于检查各个逻辑结构是否合理,对应的模块独立路径是否正常以及内部结构是否有效。

  • 常用的白盒测试法有控制流分析、数据流分析、路径分析、程序变异等。
    • 控制流分析:它涉及到分析程序的执行路径。这种分析关注的是程序中语句、分支和循环的执行顺序。控制流分析的主要目的是确保所有可能的执行路径都被测试到。
    • 数据流分析:数据流分析关注的是程序中数据的使用和定义。它检查数据在程序中的流动,包括定义、使用、赋值和生命周期的正确性。
    • 路径分析:它涉及到分析程序中所有可能的执行路径。测试人员会尝试构造测试用例,使得程序中的每一条执行路径至少被执行一次。
    • 程序变异:程序变异是一种通过修改程序(变异体)来生成测试用例的技术。变异体是对原始程序进行微小修改后得到的版本,测试人员使用相同的测试用例集来运行变异体,如果测试用例能够识别出变异体与原始程序的不同,则认为测试用例是有效的。
  • 根据测试用例的覆盖程度,分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
    • 语句覆盖 :被测程序的每个语句至少执行一次。
    • 判定覆盖(分支覆盖):每个判定的每种可能的结果都至少执行一次。
    • 条件覆盖:判定表达式中的每个条件都取到各种可能的结果。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖;
    • 判定/条件覆盖:同时满足判定覆盖和条件覆盖。判定表达式中每个条件的所有可能结果至少出现一次,且每个判定本身的所有可能结果也至少出现一次。
    • 条件组合覆盖:每个判定表达式中条件结果所有可能组合至少出现一次。满足条件组合覆盖的测试用列,也一定满足判定/条件覆盖
    • 路径覆盖:测试用例使得程序的每条可能执行到的路径都至少经过一次;考虑了程序中各种判定结果的可能组合;但并未考虑判定中条件结果的组合,并不能代替条件覆盖和条件组合覆盖

灰盒测试

        介于白盒测试黑盒测试之间,关注输出对于输入的正确性。同时也关注内部表现;灰盒测试结合了白盒测试和黑盒测试的要素,考虑了用户端、特定的系统知识和操作环境,在系统组件的协同性环境中评价应用软件的设计;

测试阶段

测试对应关系

  • 详细设计文档对应单元测试
  • 概要设计文档对应集成测试
  • 系统需求规格说明书对应系统测试
  • 用户需求对应验收测试

单元测试

  • 也称为模块测试,其目的是检查每个模块是否正确的实现设计说明中的功能、性能、接口和其他设计约束条件,发现模块内可能存在的各种差错。
  • 驱动模块用来调用被测模块
  • 桩模块用来模拟被测模块所调用的子模块,它接收被测模块的调用
  • 顶层模块测试时不需要驱动模块,底层模块不需要庄模块

集成测试

  • 集成测试的目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。

系统测试

  • 一般情况下,系统测试采用黑盒测试,以此来检查系统是否符合软件需求。
  • 本阶段的测试内容包括功能测试、性能测试、健壮性测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。
  • 为了保证这一阶段测试的客观性,必须由独立的测试小组来进行相关的系统测试
  • 所以测试人员必须进行多轮回归测试。系统测试的结束标志是测试工作以满足测试目标所规定的需求覆盖率,并且测试所发现的缺陷都已全部归零。

性能测试

  • 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
  • 负载测试和压力测试都属于性能测试,两者可以结合进行。
    • 通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
    • 压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

验收测试

  • 验收测试是最后一个阶段的测试,是软件产品投入正式交付前的测试工作。和系统测试相比,验收测试要满足用户需求或者与用户签订的合同的各项要求。
  • 此外,系统测试是软件开发过程中的一项工作,而验收测试是由用户对要交付软件开展的一种测试工作。
  • 验收测试的主要目的是为用户展示出所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。
    • Alpha 测试:是软件开发环境下由用户进行的测试,或者模拟实际操作环境进而进行的测试.Alpha 测试主要是对软件产品的功能、局域化、界面、可使用性及性能等方面进行评价。
    • Beta 测试:是在实际环境中由多个用户对其进行测试,并将在测试过程中发现的错误有效反馈给软件开发者。

其他测试

  • AB测试:AB 测试是为Web 或 APP 界面或流程制作两个或多个版本,在同一时间维度,分别让组成成分相同的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析,评估出最好版本,正式采用。
  • Web测试:Web 测试是软件测试的一部分,针对Web 应用的一类测试。由于Web 应用与用户直接相关,又通常需要承受长时间大量操作,因此Web 项目的功能和性能都必须经过可靠的验证。
  • 链接测试:链接是Web 应用系统的一个主要特征,它是在页面之间切换和指导用户去一些未知地址页面的主要手段。链接测试分为3各方面。
    • 测试所有链接是否按指示的那样确实链接到了该链接的页面
    • 测试链接的页面是否存在
    • 最后,保证Web 应用系统上没有孤立的页面
  • 表单测试:确保提交按钮正常工作,程序是否正常处理提交数据,验证服务器是否能正确保存这些数据,操作完成后返回成功信息。

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

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

相关文章

【实验九】前馈神经网络(5)--鸢尾花分类

实验内容 目录 1 .小批量梯度下降法 2 .数据处理 (1)将数据集封装为Dataset类 (2)用DataLoader进行封装 3 .模型构建 4 .完善Runner类 5 .模型训练 可视化观察训练集损失和训练集loss变化情况 6 .模型评价 7.模型预测 …

能提升幸福感的好物品牌有哪些?一定不能错过的五款品牌推荐!

最近,是不是有很多小伙伴们都在为不知道该买些什么而感到纠结呢?其实,对于那些还在犹豫不决,不知道该选择什么商品的朋友们,完全不必过于焦虑。我最近在购物时发现了一些能够显著提升生活幸福感的好物品牌,…

Cyber​​Panel upgrademysqlstatus 远程命令执行漏洞(QVD-2024-44346)

0x01 产品简介 CyberPanel是一个开源的Web控制面板,它提供了一个用户友好的界面,用于管理网站、电子邮件、数据库、FTP账户等。CyberPanel旨在简化网站管理任务,使非技术用户也能轻松管理自己的在线资源。 0x02 漏洞概述 该漏洞源于upgrademysqlstatus接口未做身份验证和…

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua? Lua 环境安装 Lua基本语法 注释 数据类型 nil(空) Boolean number(数字) string(字符串) function(函数) userdata thread table&#xff…

Java:数据结构-MapSet

搜索树 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为…

全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验

在.NET 2025.1版本中,我们带来了巨大的期待功能,进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等,大幅提升用户体验。 FastReport .NET 是…

楼梯区域分割系统:Web效果惊艳

楼梯区域分割系统源码&数据集分享 [yolov8-seg-FocalModulation&yolov8-seg-GFPN等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al l…

CentOS 文件系统扩容与缩容

一、 概述 理解Linux文件系统的管理,需要了解以下的一张图: 一般使用LVM (Logical Volume Manager) 管理磁盘存储,该工具允许用户更灵活地分配和管理存储空间。主要有以下几个概念: PV(Physical Volume,物…

电能质量治理产品在分布式光伏电站的应用

1.概述 随着全球对可再生能源需求的不断增长,分布式光伏电站的建设与扩张正迅速发展。然而,在其运行过程中,分布式光伏电站遭遇了一系列挑战,包括企业关口计量点功率因数降低和谐波污染等问题。这些问题不仅影响了光伏电站的运行…

ssm038汽车养护管理系统+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:汽车养护管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本汽车养护管理系统…

Linux系统每日定时备份mysql数据

一、创建存储脚本的文件夹 创建文件夹,我的脚本放在/root/dbback/mysql mkdir ... cd /root/dbback/mysql 二、编写脚本 vi backup_mysql.sh 复制脚本内容 DB_USER"填写用户名" DB_PASSWORD"填写密码" DB_NAME"数据库名称" # …

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景 简介 Spring Boot 是一个基于 Spring 框架的简化开发框架,它旨在简化 Spring 应用的初始搭建和开发过程。Spring Boot 提供了一系列的注解,使得开发者可以更加方便地进行应用开发和配置。本文将详细介绍 S…

用Python将PDF表格提取到文本、CSV和Excel文件中

从PDF文档中提取表格并将其转换为更易于处理的格式(如文本、CSV和Excel文件),是数据分析和信息管理中的常见需求。此过程可显著简化表格数据的处理,使数据的操作、分析和与其他数据集的集成更加便捷。无论是财务报表、研究论文&am…

Linux下cgdb/gdb调试以及关于操作系统那些事

目录 一.gdb调试 1.1debug和release版本有什么区别? 1.2性能优化 1.3gdb的使用 1.4cgdb的安装 二.什么是硬件 三.冯诺依曼体系 四.操作系统(OS) 4.1理解操作系统 4.1.1操作系统是什么? 4.1.2为什么要有操作系统? 4.1.3 OS-银行 4.1.4OS如何管理 理解库文件和系…

GPU-主板-内存-硬盘-CPU-电源分类及区别总结大全

一、背景 用了7年的笔记本,现在感觉它实在是扛不住了,中间自己缝缝补补坚持到现在,把机械硬盘换成了固态,加装了内存条。换过2次还是3次风扇(不知道为啥坏的,高转速时哧哧响),换过一…

10款舞台剧免费音频剪辑软件分享,你用过哪款?

在舞台剧的世界里,音乐是情感的传递者,是气氛的营造者。一个好的舞台剧,离不开精心剪辑的背景音乐。而选择合适的音频剪辑软件,就如同挑选舞台上的演员一样重要。今天,我们就从舞台剧音乐剪辑的角度,来聊聊…

C#/.NET/.NET Core技术前沿周刊 | 第 11 期(2024年10.21-10.31)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…

w~Transformer~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12419881 #Batch Normalization 本文聚焦于Batch Normalization,Layer Normalization两个标准化方法,对其原理和优势等进行了详细的阐述。 这一篇写Transformer里标准化的方法。在Transformer中&am…

【天线&空中农业】花生霉变检测系统源码&数据集全套:改进yolo11-LVMB

改进yolo11-goldyolo等200全套创新点大全:花生霉变检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视…

鸿蒙开发融云demo发送图片消息

鸿蒙开发融云demo发送图片消息 融云鸿蒙版是不带UI的,得自己一步步搭建。 这次讲如何发送图片消息,选择图片,显示图片消息。 还是有点难度的,好好看,好好学。 一、思路: 选择图片用:photoVie…