软件测试基础知识

2023-11-19

       常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最主要的测试有白盒和黑盒。 其中,白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。白盒要考虑测试用例对程序内部的覆盖程度,最好的白盒测试是能覆盖到每一条路径,但是由于路径数目极大,要执行每一条路径是不可能。但我们能做到就是让覆盖率变高一点,下面要介绍的六种覆盖测试方法,看看他们的覆盖程度。

 

 

1 白盒测试的概念

 

 返回

白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。(测试用例由测试输入数据以及与之对应的输出结果组成。)

白盒测试使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。

2 白盒测试的主要目的

 

 返回

  • 保证一个模块中的所有独立路径至少被执行一次;
  • 对所有的逻辑值均需要测试真、假两个分支;
  • 在上下边界及可操作范围内运行所有循环;
  • 检查内部数据结构以确保其有效性。

3 测试覆盖标准

 

 返回

白盒法特点:以程序的内部逻辑为基础设计测试用例,所以又称为逻辑覆盖法。应用白盒法时,手头必须有程序的规格说明以及程序清单。

白盒法考虑的是测试用例对程序内部逻辑的覆盖程度。最彻底的白盒法是覆盖程序中的每一条路径,但是由于程序中一般含有循环,所以路径的数目极大,要执行每一条路径是不可能的,只能希望覆盖的程度尽可能高些。

                                  图1 程序流程图

图1包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520(=1013)条,若要对它进行穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行测试需要1毫秒,同
样假定一天工作24小时,一年工作365天, 那么要想把如图所示的小程序的所有路径测试完,则需要3170年。

为了衡量测试的覆盖程度,需要建立一些标准,目前常用的一些覆盖标准从低到高分别是:

  • 语句覆盖:是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。它是最弱的逻辑覆盖,效果有限,必须与其它方法交互使用。
  • 判定覆盖(也称为分支覆盖):执行足够的测试用例,使得程序中的每一个分支至少都通过一次。判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。
  • 条件覆盖:执行足够的测试用例,使程序中每个判断的每个条件的每个可能取值至少执行一次;条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。
  • 判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。判定/条件覆盖有缺陷。从表面上来看,它测试了所有条件的取值。但是事实并非如此。往往某些条件掩盖了另一些条件。会遗漏某些条件取值错误的情况。为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。
  • 条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。

4 白盒测试的主要方法

 

 返回

  1. 逻辑驱动测试
    • 语句覆盖
    • 判定覆盖(分支覆盖)
    • 条件覆盖
    • 判定/条件覆盖
    • 条件组合覆盖
  2.  

基本路径测试

    • 设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。

4.1 逻辑驱动测试

4.1.1 语句覆盖

程序1如下:

PROCEDURE M(VAR A,B,X:REAL);

BEGINIF (A>1) AND (B=0) THEN X:=X/A ;IF (A=2) OR (X>1) THEN X:=X+1 ;

END

图2 程序流程图

为使程序中每个语句至少执行一次,只需设计一个能通过路径ace的例子就可以了,就可达到“语句覆盖”标准。例如选择输入数据为:

A=2,B=0,X=3

缺点: 从上例可看出,语句覆盖实际上是很弱的

  • 如果第一个条件语句中的AND错误地编写成OR,上面的测试用例是不能发现这个错误的;
  • 又如第三个条件语句中X>1误写成X>0,这个测试用例也不能暴露它;
  • 此外,沿着路径abd执行时,X的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们。 

4.1.2 判定覆盖(分支覆盖) 

对程序1,如果设计两个用例,使它们能通过路径ace和abd,或者通过路径acd和abe,就可达到“判定覆盖”标准,为此,可以选择输入数据为:

  • A=3,B=0,X=1 (沿路径acd执行);
  • A=2,B=1,X=3(沿路径abe执行)

优点:“分支覆盖”比“语句覆盖”严格,因为如果每个分支都执行过了,则每个语句也就执行过了。

缺点:但是,“分支覆盖”还是很不够的

  • 两个测试用例未能烤炉到A<=1的情况
  • 两个测试用例未能检查沿着路径abd执行时,X的值是否保持不变。

4.1.3 条件覆盖

一个判定中往往包含了若干个条件,如程序中,判定 (A>1) AND (B=0)包含了两个条件: A>1以及 B=0,所以可引进一个更强的覆盖标准——“条件覆盖”。

程序1有四个条件:

A>1 、B=0、A=2、X>1
为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有:
A>1、A≤1、B=0、B≠0
以及在b点有:
A=2、A≠2、X>1、X≤1
现在只需设计以下两个测试用例就可满足这一标准:

  • A=2,B=1,X=4 (沿路径abe执行);
  • A=1,B=0,X=1 (沿路径abd执行)。

优点:“条件覆盖”通常比“分支覆盖”强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。

缺点:“条件覆盖”并不包含“分支覆盖”,如两个用例没有有覆盖判定(A>1 and B=0)为True的情况

4.1.4 判定/条件覆盖

程序1,以下用例是满足判定/条件覆盖:

  • A=2,B=0,X=4 (沿ace路径)
  • A=1,B=1,X=1 (沿abd路径)

优点:既有“条件覆盖”,又有“判定覆盖”

缺点:分支/条件覆盖从表面来看,它测试了所有条件的取值,但是实际上某些条件掩盖了另一些条件。 

  • 对于第一个表达式(A>1 and B=0)如果(A>1)为假则一般的编译器不在判断是否B=0了。
  • 对于第二个表达式(A=2 or X>1)来说,若A=2测试结果为真,就认为表达式的结果为真,这时不再检查(X>1)条件了。

因此,采用分支/条件覆盖,逻辑表达式中的错误不一定能够查出来了。

4.1.5 条件组合覆盖

程序1,以下用例是满足条件组合覆盖:

再看程序1,我们需要选择适当的用例,使得下面 8种条件组合都能够出现:

1) A>1, B=0 2) A>1, B≠0 3) A≤1, B=0 4) A≤1, B≠0

5) A=2, X>1 6) A=2, X≤1 7) A≠2, X>1 8) A≠2, X≤1

5) 、6) 、7)、8)四种情况是第二个 IF语句的条件组合,而X的值在该语句之前是要经过计算的,所以还必须根据程序的逻辑推算出在程序的入口点X的输入值应是什么。

下面设计的四个用例可以使上述 8种条件组合至少出现一次:

  • A=2,B=0,X=4 使 1)、5)两种情况出现 (沿ace路径);
  • A=2,B=1,X=1 使 2)、6)两种情况出现 (沿abd路径);
  • A=1,B=0,X=2 使 3)、7)两种情况出现 (沿abe路径);
  • A=1,B=1,X=1 使 4)、8)两种情况出现 (沿abd路径)。

优点:既有“条件覆盖”,又有“判定覆盖”,还有“条件组合覆盖”

缺点:上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行

4.1.6 黑盒法补充测试用例

通过前面逻辑驱动测试方法,可以得到两点结论:

  • “条件组合覆盖”标准比其他标准优越。
  • 即使达到任何一种覆盖标准,其测试效果仍然是不彻底的,我们还需要用其他的测试方法作补充。

一个参考的黑盒法补充策略是:

1) 在任何情况下都需使用边界值分析(这个方法应包括对输入和输出的边界值进行分析)。
2) 必要的话,再用等价分类法补充一些测试用例。
3) 再用错误推测法附加测试用例。
4) 检查上述例子的逻辑覆盖程度,如果未能满足某些覆盖标准,则再增加足够的测试用例。
5) 如果功能说明中含有输入条件的组合情况,则一开始就可先用因果图(判定表)法。

4.2 路径测试

路径测试就是设计足够多的测试用例,覆盖被测试对象中的所有可能路径。

4.2.1 基本路径测试

程序1是很简单的程序函数,只有四条路径。但在实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行一次。

基本路径测试就是这样一种测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法:

  1. 程序的控制流图:描述程序控制流的一种图示方法。
  2. 程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
  3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。
  4. 准备测试用例:确保基本路径集中的每一条路径的执行。

工具方法:

  1. 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

1) 控制流图

在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图。流图是对待测试程序过程处理的一种表示。流图使用下面的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。

图3 流图符号

流图只有二种图形符号

  • 图中的每一个圆称为流图的结点,代表一条或多条语句。
  • 流图中的箭头称为边或连接,代表控制流。

任何过程设计都要被翻译成控制流图。

在将程序流程图简化成控制流图时,应注意:

  • 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。
  • 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

图4 控制流图

如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。

 

图5 程序结构转化成流图

2) 独立路径

独立路径:至少沿一条新的边移动的路径

图6 独立路径

对以上路径的遍历,就是至少一次地执行了程序中的所有语句

3) 基本路径测试 

第一步:画出控制流图

流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。

  • 流图中圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点;
  • 流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构);
  • 由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。

图7 程序流程图

图8 程序流程图和对应的控制流图

第二步:计算圈复杂度

圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。

独立路径必须包含一条在定义之前不曾用到的边。

有以下三种方法计算圈复杂度:

  1. 流图中区域的数量对应于环型的复杂性;
  2. 给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
  3. 给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。

第三步:导出测试用例

根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)

  • 路径1:4-14
  • 路径2:4-6-7-14
  • 路径3:4-6-8-10-13-4-14
  • 路径4:4-6-8-11-13-4-14

第四步:准备测试用例

为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:

路径1:4-14
输入数据:iRecordNum=0,或者取iRecordNum<0的某一个值  预期结果:x=0

路径2:4-6-7-14
输入数据:iRecordNum=1,iType=0  预期结果:x=2

路径3:4-6-8-10-13-4-14
输入数据:iRecordNum=1,iType=1  预期结果:x=10

路径4:4-6-8-11-13-4-14
输入数据:iRecordNum=1,iType=2  预期结果:x=20

必须注意,一些独立的路径,往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。

4) 工具方法:图形矩阵

导出控制流图和决定基本测试路径的过程均需要机械化,为了开发辅助基本路径测试的软件工具,称为图形矩阵(graph matrix)的数据结构很有用。

利用图形矩阵可以实现自动地确定一个基本路径集。一个图形矩阵是一个方阵

  • 其行/列数控制流图中的结点数,每行和每列依次对应到一个被标识的结点,
  • 矩阵元素对应到结点间的连接(即边)。

对每个矩阵项加入连接权值(link  weight),图矩阵就可以用于在测试中评估程序的控制结构,连接权值为控制流提供了另外的信息。最简单情况下,连接权值是 1(存在连接)或0(不存在连接),但是,连接权值可以赋予更有趣的属性:

  • 执行连接(边)的概率。
  • 穿越连接的处理时间。
  • 穿越连接时所需的内存。
  • 穿越连接时所需的资源。

图9 图形矩阵

连接权为“1”表示存在一个连接,在图中如果一行有两个或更多的元素“1”,则这行所代表的结点一定是一个判定结点,通过连接矩阵中有两个以上(包括两个)元素为“1”的个数,就可以得到确定该图圈复杂度的另一种算法。

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

软件测试基础知识 的相关文章

  • laravel-admin 在指定的相册下添加照片

    相册与照片是一对多的关系 有以下需求 1 点开一条相册数据看到相册的照片列表 2 为相册添加照片时 表单中要看到相册的基本信息 以下是实现步骤 第一步 构建带参数路由 router gt resource manage albumid ph
  • 常用的chrome配置参数

    让chromedriver不打开网页在后台进行 如果对chrome的启动参数感兴趣可以去看看脑补连接 from selenium import webdriver chrome options webdriver ChromeOptions
  • 解决pycharm安装python第三方库时遇到的问题——pycharm实体环境与虚拟环境

    目录 关于cmd打开cd操作的提示 1 pycharm虚拟环境和本地环境有啥区别 2 实体环境和虚拟环境怎么安装库 3 如何查询实体环境安装的库和虚拟环境安装的库 4 怎么切换本地环境或虚拟环境 5 总结使用pycharm时常见的3中环境
  • Jenkins插件开发之环境构建

    1 环境 1 1 jdk 1 1 1 下载 Java Platform Standard Edition 8 ReferenceImplementations 或其他途径下载 1 1 2 java环境配置 1 1 2 1 右键此电脑 属性
  • 【Python】实用小脚本

    本文整理了我在学习和工作中用到的实用python脚本 希望也能帮助到需要的小伙伴 文章目录 视频格式转换 pip快速下载命令 多进程处理百万图片数据集 视频格式转换 安装视频处理库moviepy pip install moviepy 安装
  • 【程序员面试金典】请设计一个算法,求出a和b点的最近公共祖先的编号。

    题目描述 有一棵无穷大的满二叉树 其结点按根结点一层一层地从左往右依次编号 根结点编号为1 现在有两个结点a b 请设计一个算法 求出a和b点的最近公共祖先的编号 给定两个int a b 为给定结点的编号 请返回a和b的最近公共祖先的编号
  • JavaWeb servlet的使用

    在jsp文件中没有java代码我们才算是学完啦 从EL表达式和JSTL标签 在减少在login jsp和index jsp中的java代码 而今天的学习是让在jsp中彻底没有java代码 原本写在doLogin jsp做登录判断的java代
  • 图像检索传统算法学习笔记

    图像检索领域传统算法学习笔记 与组内同学一起找到的一些图像检索传统算法 作一小结 以防忘记 性能统计 传统图像检索算法 CIFAR 10数据集mAP值 编码数不同 LSH局部敏感哈希 0 116 0 131 SH谱哈希 0 124 0 12
  • PhotoShop 之钢笔工具

    钢笔工具如下如 1 绘制直线 若按住Shift 键 单击鼠标左键可以绘制90度或者45度直线 按住Ctrl 并在空白处 单击鼠标左键 可退出绘制模式 2 绘制曲线 绘制第一个点单击 绘制第二个点的时候 按住鼠标左键并拖动即可绘制曲线 若想绘
  • 栈的讲解及实现(图解+代码/C语言)

    今天为大家分享的是栈的模拟实现 本文主要讲解如何以数组的形式模拟实现 同时给出链表模拟实现栈的代码 目录 图解栈的结构 数组模拟栈的分步实现 创建并初始化 入栈 检测栈是否为空 出栈 获取栈顶元素 获取栈内有效元素个数 销毁栈 链表模拟实现
  • 世界名着100部简介

    01 傲慢与偏见 02 孤星血泪 03 雾都孤儿 04 唐 吉诃德 05 安娜 卡列尼娜 06 飘 07 简 爱 08 悲惨世界 09 茶花女 10 基督山恩仇记 11 童 年 12 这里的黎明静悄悄 13 钢铁是怎样炼成的 14 战争与和
  • linux安装和卸载gcc g 4.8,CentOS 编译安装gcc 4.8 为了支持C++11新特性

    gcc属于gun软件 下载gun所有软件 1 编译gcc的时候 还是需要存在gcc g 2 等编译完成 卸载系统的gcc g 3 测试c 11 chunli CentOS sudoyuminstallgccgcc c chunli Cent
  • pathon爬虫,制作云图

    转载请标明出处 http blog csdn net forezp article details 70198541 本文出自方志朋的博客 今天一时兴起 想用Python爬爬自己的博客 通过数据聚合 制作高逼格的云图 对词汇出现频率视觉上的
  • 关于xilinx BRAM IP的延迟以及流程

    关于RAM IP的延迟 1 选择了output registers 可以在RAM输出端口添加register 也可以在core的输出添加 在primitives添加 降低clock to out到primitive的延迟 在core添加re
  • MySQL之数据库引擎详解(内附面试题:InnoDB和MyISAM的联系与区别)

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于MySQL数据库引擎的相关操作吧 目录 Welcome Huihui s Code World 一 数据库引擎是什么 1 数据库引擎概念 2 最常见的引擎 I
  • Hive:Unable to open a test connection to the given database. JDBC url = jdbc:mysql://master12:3306

    hive启动不成功 一直报各种错 我是执行这条命令出的错 hive service metastore 这个问题困扰了我两三天一直没解决 网上找了各种方法基本都试过 还是不行 可能每个人的原因也不太一样吧 我说我的解决方法 可以试下 1 检
  • 曼哈顿算法公式_Manhattan Distance Calculation(曼哈顿距离算法)

    首先介绍一下曼哈顿 曼哈顿是一个极为繁华的街区 高楼林立 街道纵横 从A地点到达B地点没有直线路径 必须绕道 而且至少要经C地点 走AC和CB才能到达 由于街道很规则 ACB就像一个直角3角形 AB是斜边 AC和CB是直角边 根据毕达格拉斯
  • 【springboot+mybatisplus】分页查询-单表/联表

    参考链接 https www jianshu com p 0a21569f1e06 单表的分页查询用mybatisplus的selectPage就可以实现 联表的分页查询需要自己写sql语句 因为老哥不让写sql语句在DAO层 难看 所以写
  • 图书信息添加

    实现图书信息添加的添加功能并创建字符编码过滤器 避免中文乱码现象的产生 1 创建字符编码过滤器对象 创建字符编码过滤器对象 其名称为CharactorFilter类 该类实现了javax servlet Filter接口 并在doFilte
  • AD采样出来的数值与实际值之间的关系

    当刚接触AD采样时 一直对于AD采集出来的数值与实际的值之间的关系有些模糊 现在闲暇下来打算记录一下 这里以采集量为电压量来记录 当采集温度 电流等模拟量时 都是通过一个电路把模拟量转化为一个电压量输入进AD采样引脚 就不一一叙述 AD采样

随机推荐

  • 结构体对齐(内存对齐)

    本文转自 http www ksarea com articles 20071004 sizeof struct memory html 有的时候 在脑海中停顿了很久的 显而易见 的东西 其实根本上就是错误的 就拿下面的问题来看 struc
  • 【面试刷题】——C++公有继承保护继承和私有继承

    在C 中 有三种继承方式 公有继承 public inheritance 保护继承 protected inheritance 和私有继承 private inheritance 这些继承方式决定了派生类如何继承基类的成员和访问权限 公有继
  • 一文揭秘饿了么跨端技术的演进、实践与落地

    本文会先带领大家一起简单回顾下跨端技术背景与演进历程与在这一波儿接着一波儿的跨端浪潮中的饿了么跨端现状 以及在这个背景下 相较于业界基于 React Vue 研发习惯出发的各种跨端方案 饿了么为什么会选择走另外一条路 这个过程中我们的一些思
  • python稳健回归_statsmodel线性回归(ols)的稳健性问题-Python

    我用统计模型测试了一些基本的类别回归 我建立了一个确定性模型Y X Z 其中X可以取3个值 a b或c Z只能取2 d或e 在那个阶段 模型是完全确定的 我为每个变量设置了如下的权重a s weight 1 b s weight 2 c s
  • Vue基础1:生命周期汇总(vue2)

    Description 生命周期图 可以理解vue生命周期就是指vue实例从创建到销毁的过程 在vue中分为9个阶段 创建前 后 载入前 后 更新前 后 销毁前 后 其他 常用的有 created mounted destroyed 一 创
  • Java中String 和 int 的相互转换

    int gt String int i 12345 String s 第一种方法 s i 第二种方法 s String valueOf i 这两种方法有什么区别呢 作用是不是一样的呢 是不是在任何下都能互换呢 String gt int s
  • 假期实习-踩坑日记

    vue3 x 7 16 elementplus 导入 不同于2 0的导入方式 3 x中main js应当改成如下 import createApp from vue import installElementPlus from plugin
  • 黑盒测试用例设计--题目2

    1 根据下面给出的规格说明 进行测试用例的设计 一个程序读入3个整数 把这三个数值看作一个三角形的3条边的长度值 这个程序要打印出信息 说明这个三角形是普通的 是等腰的 还是等边的 测试用例 2 保险费率计算 某保险公司承担人寿保险 该公司
  • vue中阻止冒泡 阻止默认行为

    1 事件冒泡 不再派发事件 方法 event stopPropagation html
  • 分享一款谷歌插件adguard

    下载地址 链接 https pan baidu com s 1jMAA6kNMr1yqjQKXb7aMtQ 提取码 0kk3
  • PowerShell基础教程(5)——如何自定义 Windows PowerShell

    PowerShell基础教程 5 如何自定义 Windows PowerShell
  • RK3568 IDB烧录失败解决方法

    1 简介 公司有个RK3568的项目使用了三星的8GB eMMC5 1 KLM8G1GETF B041 但在硬件回板的时候 发现个别单板程序烧不进去 会报下载IDB失败 部分串口打印日志如下 DDR Version V1 09 202106
  • 【Grafana】CentOS下安装Grafana

    Grafana CentOS下安装Grafana 本文主要是在CentOS下对Grafana的安装和配置等进行介绍 以及一些踩过的坑 文章目录 Grafana CentOS下安装Grafana 一 基本介绍 二 安装方法 1 从YUM存储库
  • Android SQLite数据库升级

    Android操作SQLite数据库要实现SQLiteOpenHelper类 SQLiteOpenHelper的实现类要重写两个方法onCreate和onUpgrade onUpgrade方法就是用于SQLite数据库升级 问题一 数据库升
  • 2022年2月份谷哥学术资源分享下载列表 20/20

    资源名称 下载地址 关键词 项目反应理论与经典测验理论之比较 pdf https download csdn net download tysonchiu 79246540 技术文档 响应面方法在优化微生物培养基中的应用 pdf https
  • unity 如何切换输入系统(Input System)

    问题描述 在 Unity2019 版本中 加入了新的 Input System Package 当导入包的时候可能会将旧的输入系统禁用 这时如果再打开使用旧的输入系统的项目可能会出现异常 InvalidOperationException
  • jvm 远程调试配置

    jstatd方式 创建配置文件 随便找个目录就可以 cat gt jstatd policy grant codebase file java home lib tools jar permission java security AllP
  • xcodebuild 命令打包

    xcodebuild命令行打包 在使用xcodebuild编译后发现有些东西有些临时性质的东西 依然存在 搜索了一些资料 找到有clean的命令 在之前打包都是生成app文件 将app打包成ipa文件需要编写一个脚本 操作起来相对麻烦 原来
  • 1.20 实现百度搜索

    1 axios不支持jsonp import React Component from react import ReactDOM from react dom https github com webmodules jsonp包 impo
  • 软件测试基础知识

    常用的软件测试方法有两大类 静态测试方法和动态测试方法 其中软件的静态测试不要求在计算机上实际执行所测程序 主要以一些人工的模拟技术对软件进行分析和测试 而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序 而达