软件测试之功能测试_软件功能测试-程序员宅基地

技术标签: 功能测试  

什么是功能测试

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

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

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

功能测试的方法

功能测试也叫黑盒测试,相当于把整个测试对象看作一个黑匣子,我们看不到黑匣子的内部结构和运行方式,但是却可以通过外部表现来对他进行功能方面的测试,这就是功能测试。

黑盒测试与之对应的有白盒测试,白盒测试主要是针对软件内部的代码逻辑进行测试,二者相辅相成,都是软件测试过程中的不同方法。

黑盒测试试图发现以下类型的错误:
(1)功能设计上的问题或者遗漏
(2)界面出现错误
(3)数据结构或外部数据库访问错误
(4)性能出现错误
(5)初始化和终止错误

黑盒测试设计测试用例的方法有:等价类划分法、边界值法、判定表法、因果图法、错误推断法、正交实验设计法。

一、等价类划分法

等价类划分法解决了不能穷举测试数据的问题,只要数据值是明确的,就可以使用等价类划分法。
等价类分为有效等价类和无效等价类

有效等价类 无效等价类
输入的正确且合理的数据以此验证该功能是否能够正确正常的运行,验证软件设计是否符合我们规格说明中的要求 通过输入对程序规格说明中不合理、不正确、无意义的数据来验证在异常输入数据的情况下程序是否也会出现异常
若输入条件规定了取值范围或者值的个数,以ATM机取款为例
取款条件
100<=单次取款额度<=10000

那么根据取款条件,我们就可以划分有效等价类和无效等价类

有效等价类 无效等价类
取款金额:500 取款金额:50、11000

这里有效等价类就1个、无效等价类有2个

若输入值是布尔类型

那么可以设置一真一假的有效等价类和无效等价类

若输入值是规定了必须要遵循的原则,可划分为一个有效等价类(符合规则)和若干个无效等价类,以保存联系人手机号为例
有效等价类 无效等价类
11位数字号码 输入字母
输入特殊字符
输入10位
输入12位
若输入值规定了符合好几个原则,则可划分为多个有效等价类和若干个无效等价类,以qq密码为例
有效等价类 无效等价类
输入数字 输入单引号或双引号
输入字母 输入空格
输入特殊符号 输入汉字
若规定了输入数据的一组值(假定n个),且程序对不同输入值做不同处理,则可划分为n个有效等价类(每个允许的输入值为一个有效等价类)和一个无效等价类(所有不允许的输入值的集合),以学历选择为例
有效等价类 无效等价类
专科 小学 初中 高中 职高
本科
硕士
博士

二、边界值法

边界值法是对等价类划分法的一个补充,边界值一般都是去等价类的边缘进行查找。一般大量的错误会出现在输入输出的边界上,因此使用各种边界值去设计测试用例能找出更多的BUG

边界值点分为上点、内点和离点

上点 内点 离点
区间的端点,如0<x<5或0<=x<5,那么上点都是0和5 上点之间的任意一点 最靠近上点的点,开内闭外,如0<x<5,那么离点就是1和4,如果 0<=x<=5,那么离点就是-1和6,如果0<x<=5,那么离点就是1和6

该图转自CSDN @小宝的宝呢

三 、判定表法

判定表法又称决策表,他是以表格的形式,在处理比较复杂的问题时,统计多条件下的各种情况出现的可能性,然后全部列举下来,利用判定表法能够写出更全面的测试用例

适用范围:相比于等价类划分法和边界值法,他们针对的是单个条件在输入输出时的取值问题,而判定表法更多的是考虑到各种条件的相互组合和输入输出的相互制约当中。

判定表的组成:
条件桩:列出问题的所有条件,列出条件的次序无关紧要
动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束
条件项:列出条件对应的取值,所有可能情况下的真假值
动作项:列出条件项的各种取值情况下应该采取的动作结果

四、因果图法

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,她适用于检查程序输入条件的各种组合情况,适合于描述多种输入条件的组合、相应产生多个动作的方法。

因果图的四个好处:

(1)考虑多个输入之间的相互组合、相互制约关系。

(2)指导测试用例的选择。能够指出需求规格说明书描述中存在的问题。

(3)能够帮助测试人员按照一定的步骤,高效率地开发测试用例。

(4)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明书存在的不完整性和二义性。

1、因果图的基本关系------因果符号(恒等、非、或、与)---------因果关系

(1)在这里插入图片描述

恒等:条件c1满足要求时,一定会输出结果e

若c1为1,则e1也为1,否则e1为0。

(2)在这里插入图片描述

非(-):条件c1满足要求时,一定不会输出结果e

若c1为1,则e1也为0,否则e1为1。

(3)在这里插入图片描述
或(^):条件c1、c2、c3任何一项满足要求时,就会输出结果e

 若c1或c2或c3为1,则e1也为1,否则e1为0。

(4)在这里插入图片描述
与:条件c1、c2、c3同时满足要求时,才会输出结果e

若c1和c2和c3都是1,则e1也为1,否则e1为0。

2、因果图的基本关系------原因符号( 异、或、唯一、要求)--------原因与原因之间的关系

(1)
在这里插入图片描述

异(E约束,Exclusive):原因a、b中只能有一个为真(只有2个条件)

 a和b中至多有一个可能为1,即a和b不能同时为1。(不可能同时为1,但可以同时为0)

(2)
在这里插入图片描述

或(I约束,Inclusive):原因a、b中至少有一个为真(a为真,b也可以为真)

   a和b中至少有一个必须是1,即a和b不能同时为0。(可以同时为1)

(3)
在这里插入图片描述

唯一(O约束,One and Only):在多组判定条件中,有且只有一个为真(多个条件)

  a和b中必须有一个是1,且有且仅有1个为0。(有a无b,有b无a)

(4)
在这里插入图片描述
要求(R约束,Request):原因a满足条件时,原因b一定满足条件

 a是1时,b必须是1,即不可能a是1时b是0。

五、场景设计法

现在的软件几乎都是用事件触发控制流程的。测试时,可以生动地描绘出时间触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行

场景业务分为基本流、备选流和异常流
在这里插入图片描述
基本流:基本流表示业务流程输入都正确,能达到业务目标
(插卡—>输入正确密码—>输入金额—>取款—>取卡)

备选流:备选流表示通过业务流程时输入错误(或者操作错误)导致流程存在反复,但是经过纠正过后任然能达到目的的流程
(插卡—>输入错误密码—>输入正确密码—>输入金额—>取款—>取卡)

异常流:异常流表示通过业务流程时输入错误(或者操作错误)产生异常终止的流程
(插卡—>输入3次错误密码—>吞卡)

基本流:只有一种情形,中间的所有业务都是正确的,最后达到的结果也是正确的,这个场景就是基线
备选流:
1、业务流程开始—>业务流程反复—>业务流程介绍
2、业务流程开始—>业务流程反复—>业务流程中断—>未结束
异常流:
业务流程开始—>业务流程中断—>未结束(在这种情况下业务流程还没有走完)

六、错误推断法

凭着直觉和经验来设计测试用例,它是根据之前项目相关的bug数据总结来的

第三方软件测试

如果一个公司没有专业的软件测试人员或者需要CNAS或CMA认证的软件测试报告,就可以选择第三方软件测试机构。选择第三方软件测试机构首先要考虑的是公司的资质问题,正规的软件测试机构必须要有CMA、CNAS证书,其次要拥有强大的软件测试团队,最后要有专业的软件测试环境。这里推荐成都精正检测技术有限公司,拥有CMA、CNAS证书,软硬件检测环境达标,可出具公正权威的软件测试报告。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/skyskr/article/details/131429773

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue