当前位置: 首页 > news >正文

软件测试之功能测试详解

一、功能测试概述

1)功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。

2)功能测试,根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。功能测试是为了确保程序以期望的方式运行而按功能要求对软件进行的测试,通过对一个系统的所有的特性和功能都进行测试确保符合需求和规范。

3)Functional testing(功能测试),也称为behavioral testing(行为测试),根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。

4)功能测试是为了确保程序以期望的方式运行而按功能要求对软件进行的测试,通过对一个系统的所有的特性和功能都进行测试确保符合需求和规范。

5)功能测试也叫黑盒测试或数据驱动测试,只需考虑需要测试的各个功能,不需要考虑整个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。

6)黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

B站封神的接口测试教程,30天练完70个项目实战(含自动化测试、性能测试),学完即就业,永久白嫖!

二、黑盒设计方法

黑盒测试用例设计方法,主要包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等

1.等价类划分法

等价类划分法是把程序的输入域分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。

1)应用场景:

某程序规定:“输入三个整数a,b,c分别作为三边的边长构成三角形.通过程序判定所构成的三角形的类型,当此三角形为一般三角形\等腰三角形及等边三角形时,分别作计算...”.用等价类划分方法为该程序进行测试用例设计.

2)分析题目中给出和隐含的对输入条件的要求:

⑴整数  

⑵三个数  

⑶非零数  

⑷正数  

⑸两边之和大于第三边  

⑹等腰  

⑺等边

3)如果a、b、c满足条件1-4,则输入下列四种情况之一:

①如果不满足条件5,则呈现输出为“非三角形”

②如果三条边相等即满足条件7,则呈现输出为“等边三角形”

③如果只有两条边相等,即满足条件6,则呈现输出为“等腰三角形”

④如果三条边都不相等,则程序输出为“一般三角形”

4)覆盖有效等价类的测试用例:

  a      b      c               覆盖等价类号码

  3      4      5               1-7

  4      4      5               1-7,8

  4      4      5               1-7,9

  5      4      5               1-7,10

  4      4      4               1-7,11

5)覆盖无效等价类的测试用例:

2.边界值分析法

1)边界值分析法就是对输入火输出的边界值进行测试的一种黑盒测试方法.同城边界值分析法是作为对等价类划分法的补充。

2)使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或者刚刚小于边界的值作为测试数据。

3)通常情况下,软件测试所包含的边界检验有几种类型:数字,字符,位置,重量,大小,速度,方位,尺寸,空间等相应地,以上类型的边界值应该在:最大/最小,首位/末位,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下,利用边界值作为测试数据。

4)应用场景

NextDate函数的边界值分析测试用例 

在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 

3.错误推断法

  基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.

4.因果图法

 因果图法师一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法.

 采用因果图法设计测试用例的步骤:

  ① 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符.

  ② 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图.

  ③ 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件.

  ④ 把因果图转换为判定表

  ⑤ 把判定表的每一列拿出来作为依据,设计测试用例.

5.判定表驱动法

1)判定表通常由4个部分组成

  ① 条件桩:列出了问题得所有条件.通常认为列出的条件的次序无关紧要

  ② 动作桩:列出了问题规定可能采取的操作.这些操作的排列顺序没有约束

  ③ 条件项:列出针对它左列条件的取值.在所有可能情况下的真假值.

  ④ 动作项:列出在条件项的各种取值情况下应该采取的动作.

2)判定表的建立步骤

  ① 确定规则的个数.加入有n个条件.每个条件有两个取值(0,1),故有2n种规则.

  ② 列出所有的条件桩和动作桩

  ③ 填入条件项

  ④ 填入动作项.等到初始判定表

  ⑤ 简化.合并相似规则

3)应用场景:

问题要求:"....对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理...",这里假定,"维修记录不全"和"优先维修处理"均已在别处有更严格的定义.请建立判定表

4)解答:

  ① 确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则

  ②列出所有的条件桩和动作桩

  ③ 填入条件项.可从最后1行条件项开始,逐行向上填满.如第三行是:Y N Y N Y N Y N,第二行是:Y Y N N Y Y N N 等等

  ④ 填入动作桩和动作项.这样便得到形如图的初始判定表

  ⑤ 化简,合并相似规则后得到图

 6.正交试验法

依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.

 7.功能图法

功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同事要依靠判定表或因果图表示的逻辑功能。

8.场景法

1)事件触发时的情景便形成了场景,二同一事件不同的触发顺序和处理结果就形成事件流。

2)应用场景

ATM例子的流程示意图

3)场景设计:

 4)用例设计:

 5)数据设计:

9.测试用例设计综合策略

1)Myers提出了使用各种测试方法的综合策略

  ① 在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强

  ② 必要时用等价类划分方法补充一些测试用例

  ③ 用错误推测法再追加一些测试用例

  ④ 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例

  ⑤ 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法

2)测试用例的设计步骤

  ① 构造更加设计规格得出的基本功能测试用例

  ② 边界值测试用例

  ③ 状态转换测试用例

  ④ 错误猜测测试用例

  ⑤ 异常测试用例

  ⑥ 性能测试用例

  ⑦ 压力测试用例

3)优化测试用例的方法

  ① 利用设计测试用例的8中方法不断的对测试用例进行分解与合并

  ② 采用遗传算法理论进化测试用例

  ③ 在测试时利用发散思维构造测试用例

三、黑盒测试发现的错误类型

(1)功能错误或遗漏
(2)界面错误
(3)数据结构或外部数据库访问错误
(4)性能错误
(5)初始化和终止错误

四、测试用例设计方法

(1)等价类划分方法
(2)边界值分析方法
(3)错误推测方法
(4)因果图方法
(5)判定表驱动分析方法
(6)正交实验设计方法
(7)功能图分析方法

五、总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

软件测试之功能测试详解

一、功能测试概述 1)功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。 2)功能测试,根据产品特性、操作描述和用户方案,测试一个产品的特性和…...

javascript选取元素的范围,可以包含父级,也可以不包含父级

//函数可以选取元素的范围,对于要选取文本的非常方便,或选取特定的子节点 function getRange(element){//判断是否支持range范围选取var supdocument.implementation.hasFeature("Range","2.0");var also(typeof document.createRan…...

QGIS怎么修改源代码?持续更新...

修改配置文件保存位置 修改目的:放着和本地安装的其他QGIS共用一份配置文件 修改文件:core/qgsuserprofilemanager.cpp 修改位置:第37行 return basePath QDir::separator() "my_profiles";修改完毕后,再次生成一下…...

dev board sig技术文章:轻量系统适配ARM架构芯片平台

摘要:本文简单介绍OpenHarmony轻量系统移植,会分多篇 适合群体:想自己动手移植OpenHarmony轻量系统的朋友 开始尝试讲解一下系统的移植,主要是轻量系统,也可能会顺便讲下L1移植。 1.1移植类型 OpenHarmony轻量系统的…...

MyBatis之增删查改功能

文章目录 一、创建各种类二、MyBatis的各种功能 1、查询<select>2、增加<insert>3、修改<update>4、删除<delete>三、总结 前言 在MyBatis项目中编写代码实现对MySql数据库的增删查改 一、创建各种类 1、在Java包的mapper文件下创建一个接口 我创建…...

Leetcode算法入门与数组丨5. 数组二分查找

文章目录 1 二分查找算法2 二分查找细节3 二分查找两种思路3.1 直接法3.2 排除法 1 二分查找算法 二分查找算法是一种常用的查找算法&#xff0c;也被称为折半查找算法。它适用于有序数组的查找&#xff0c;并通过将待查找区间不断缩小一半的方式来快速定位目标值。 算法思想…...

拓扑关系如何管理?

在设备对接涂鸦的云端过程中&#xff0c;一部分设备由于自身资源或硬件配置&#xff0c;无法直接连接云端。而是需要通过网关进行中转&#xff0c;由网关代理实现和云端进行数据交互&#xff0c;间接实现设备接入云端。这样的设备也称为子设备。 要想实现网关代理子设备接入云…...

vue的由来、vue教程和M-V-VM架构思想、vue的使用、nodejs

vue vue的由来 vue教程和M-V-VM架构思想 vue的初步简单使用 nodejs vue的由来 # 1 HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES11)&#xff1a;编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 ->…...

课程表 循环依赖 拓扑排序 go语言

学会拓扑排序题目的基本解法 res数组 记录上课顺序g 记录学了课程i 能解锁的课程jindeg 记录每个课程的入度q 记录入度为0的课程 for循环q去解放其他课程 本题来自力扣课程表 func findOrder(numCourses int, prerequisites [][]int) []int {res : []int{}//建一个二维数组记…...

【红包雨接口设计】

一、服务器地址 http://rb.atguigu.cn 二、公共请求头参数 参数名称类型是否必选描述tokenString是用户唯一标识 备注&#xff1a;为了方便我们今天演示&#xff0c;服务端接受所有token。 三、接口 1. 创建红包雨 请求方式&#xff1a;GET请求地址&#xff1a;/api/v1/se…...

SSL证书到期更换证书会影响排名吗?

在现代的数字化时代&#xff0c;网络安全和用户体验成为了网站运营商和开发者们需要高度关注的问题。SSL证书作为一种重要的安全协议&#xff0c;对网站的安全性和用户信任起着至关重要的作用。然而&#xff0c;随着SSL证书的有效期限届满&#xff0c;许多网站运营商面临着更换…...

前端常用库之-JavaScript工具库lodash

文章目录 前端常用库之-JavaScript工具库lodash一、什么是lodash二、安装三、lodash使用Lodash 的 pick() 函数介绍和使用react 实例demo&#xff1a;pick结合...展开运算符(spread operator) 前端常用库之-JavaScript工具库lodash 一、什么是lodash 官网&#xff1a; https:…...

Linux- execve()

execve() 是 Linux/UNIX 中的 exec 函数家族中的一个&#xff0c;它允许进程执行一个新的程序。具体地&#xff0c;execve() 替换当前进程的映像为新的程序映像。 函数原型如下&#xff1a; int execve(const char *pathname, char *const argv[], char *const envp[]);pathn…...

007 数据结构_堆——“C”

前言 本文将会向您介绍关于堆Heap的实现 具体步骤 tips&#xff1a;本文具体步骤的顺序并不是源代码的顺序 typedef int HPDataType; typedef struct Heap {HPDataType* _a;int _size;int _capacity; }Heap;初始化 void HeapCreate(Heap* hp, HPDataType* a, int n) {hp-&…...

zabbix的原理与安装

一、Zabbix介绍 1、zabbix 是什么&#xff1f; zabbix是一个开源的IT基础监控软件&#xff0c;能实时监控网络服务&#xff0c;服务器和网络设备的状态&#xff0c;如网络使用&#xff0c;CPU负载、磁盘空间等&#xff0c;主要是包括数据的收集、报警和通知的可视化界面zabbi…...

ReactNative中升级IOS 17版本Crash解决

ReactNative中升级IOS 17版本Crash解决 ReactNative中升级IOS 17版本Crash解决一、问题描述二、原因分析三、解决方案决策3.1 设置宽高为非零值3.2 使用新的UIGraphicsImageRenderer替换就版本的UIGraphicsBeginImageContext 四、可能使用到该API的三方库4.1 react-native-fast…...

MongoDB详解

一、MongoDB概述 MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统&#xff0c;由 C 编写的。MongoDB 提供了 面向文档 的存储方式&#xff0c;操作起来比较简单和容易&#xff0c;支持“无模式”的数据建模&#xff0c;可以存储比较复杂的数据类型&#xff0c;是一…...

【SpringCloud微服务全家桶学习笔记-服务注册zookeeper/consul】

SpringCloud微服务全家桶学习笔记 Eureka服务注册 gitee码云仓库 9.其他服务注册框架 &#xff08;1&#xff09;zookeeper安装与使用 zookeeper需安装在虚拟机上&#xff0c;建议使用CentOS&#xff0c;安装地址如下&#xff1a; zookeeper镜像源 选择第一个进入后下载ta…...

【滑动窗口】LCR 016. 无重复字符的最长子串

LCR 016. 无重复字符的最长子串 解题思路 窗口内的字符串就是不重复子串每次遇到新的字符 看看窗口内是否存在该字符 如果存在直接剔除 然后调整窗口左边界不存在 添加窗口内部 右边界 class Solution {public int lengthOfLongestSubstring(String s) {if(s.length() < …...

C++中将类成员函数作为变量传递给函数

假设类ClassName有一个成员函数 void ClassName::funcname(int);通过typedef定义一个类成员函数指针类型,参数和返回值类型都要与成员函数对应 typedef void (ClassName::*FuncPtr)(int); // 定义类成员函数指针获取到的参数就是 FuncPtr pf...

基于CircuitPython与Adafruit IO的物联网倒计时时钟:精准时间同步与远程触发

1. 项目概述&#xff1a;一个精准、可远程触发的物联网倒计时时钟在嵌入式开发里&#xff0c;时间管理是个既基础又容易踩坑的环节。你可能遇到过这种情况&#xff1a;一个基于ESP32的智能浇花器&#xff0c;设定好每天上午10点浇水&#xff0c;结果因为设备内置时钟不准&#…...

AI智能体技能开发实战:从工具调用到安全部署全解析

1. 项目概述&#xff1a;当AI学会“上网”与“思考”最近在折腾AI应用开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何让大语言模型&#xff08;LLM&#xff09;不只是个“聊天高手”&#xff0c;更能成为一个能独立完成复杂任务的“智能体”。你肯定遇到过&a…...

MuseTalk 唇语同步配置指南:解决3大常见问题,从入门到精通

MuseTalk 唇语同步配置指南&#xff1a;解决3大常见问题&#xff0c;从入门到精通 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk MuseTalk 是一…...

如何快速批量添加专业水印:3分钟掌握摄影作品保护终极指南

如何快速批量添加专业水印&#xff1a;3分钟掌握摄影作品保护终极指南 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils semi-utils是一款专为摄影师…...

open62541批量读写踩坑实录:从‘UA_ReadRequest’配置到结果解析的完整避坑指南

open62541批量读写深度实战&#xff1a;从核心配置到异常处理的完整解决方案 在工业自动化与物联网系统开发中&#xff0c;OPC UA协议已成为设备互联的事实标准。作为开源实现的佼佼者&#xff0c;open62541为开发者提供了强大而灵活的工具集。但当面对需要高效处理大量节点数据…...

GroundingDINO SwinT与SwinB配置实战对比:零样本目标检测的架构选择策略

GroundingDINO SwinT与SwinB配置实战对比&#xff1a;零样本目标检测的架构选择策略 【免费下载链接】GroundingDINO [ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection"…...

Syncia:轻量级本地文件同步引擎的设计原理与实战部署指南

1. 项目概述&#xff1a;一个轻量级、高可用的本地文件同步引擎 最近在折腾个人工作流和跨设备数据同步时&#xff0c;我一直在寻找一个既轻量又可靠、能完全由自己掌控的解决方案。市面上的云盘服务虽然方便&#xff0c;但涉及到隐私、速度限制和订阅费用&#xff0c;总感觉不…...

思源宋体:中文排版设计中的成本效益革命

思源宋体&#xff1a;中文排版设计中的成本效益革命 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是否曾为商业项目中的中文字体授权费用而头疼&#xff1f;或者为寻找既专业又免费…...

C#集成AI对话:开源库ha.openclaw.conversation实战指南

1. 项目概述&#xff1a;一个面向对话式AI的C#开源库最近在折腾一个需要集成智能对话能力的桌面应用&#xff0c;后台服务是用C#写的。大家都知道&#xff0c;现在搞AI对话&#xff0c;主流玩法是调用OpenAI、Claude这些大模型的API&#xff0c;或者用一些开源的本地模型。但真…...

轻量级网页自动化工具 xiaoclaw:基于 CDP 的高效实践指南

1. 项目概述&#xff1a;一个轻量级、可编程的网页自动化工具最近在折腾一些需要自动处理网页数据的小项目&#xff0c;比如定时抓取某个网站的价格变动、自动填写表单、或者模拟一些重复性的点击操作。一开始想用传统的Selenium&#xff0c;但总觉得它有点“重”&#xff0c;启…...