实验二_白盒测试(1)_
白盒测试技术1实验
白盒测试技术1实验白盒测试技术1实验实验目的:1、熟悉应用语句覆盖法2、熟悉应用判定覆盖法(又称为分支覆盖法)3、熟悉应用条件覆盖法4、熟悉应用判定-条件覆盖法(又称为分支-条件覆盖法)5、熟悉应用条件组合覆盖法6、熟悉应用路径覆盖法实验要求:(1)掌握语句覆盖法(2)掌握判定覆盖法(又称为分支覆盖法)(3)掌握条件覆盖法(4)掌握判定-条件覆盖法(又称为分支-条件覆盖法)(5)掌握条件组合覆盖法(6)掌握路径覆盖法实验内容及步骤:1、给出以下函数,对它分别进行以下覆盖法测试,并设计相应的测试用例。
//判断某年是否闰年闰年返回1,平年返回0intleapyear(intyear){intx=0;if((year%400==0)||(year%100!=0 )(year%4==0)){x=1;}returnx;}(1)语句覆盖(2)判定覆盖(又称为分支覆盖)(3)条件覆盖(4)判定-条件覆盖(又称为分支-条件覆盖)(5)条件组合覆盖(6)路径覆盖要求:(1)画流程图(2)分别设计以上6种测试用例(3)并编写自动化测试代码运行测试,记录结果。
(1)语句覆盖用例编号覆盖语句块用例(year)1语句11992(2)判定覆盖(又称为分支覆盖)用例编号覆盖判断用例(year)1M的Y分支19922M的N分支1993(3)条件覆盖设year%400==0取真记作T1,取假记作F1year%100!=0取真记作T2,取假记作F2year%4==0取真记作T3,取假记作F3用例编号覆盖条件具体取值条件用例(year)1T1、F2、T3year%400==0,year%100==0,year%4==020002F1、T2、F3year%400!=0,year%100!=0,year%4!=01993(4)判定-条件覆盖(又称为分支-条件覆盖)用例编号覆盖条件覆盖判断用例(year)1T1、F2、T3M的Y分支20002F1、T2、F3M的N分支1993(5)条件组合覆盖编号覆盖条件覆盖判断条件取值用例(year)1T1、T2、T3M 的Y分支year%400==0,year%100!=0,year%4==0intx=0returnxx=1(year%400==0)||(year%100!=0)(year%4==0)语句块1判断MYN1232T1、F2、T3M的Y分支year%400==0,year%100==0,year%4==020003T1、T2、F3M的Y分支year%400==0,year%100!=0,year%4!=04T1、F2、F3M的Y分支year%400==0,year%100==0,year%4!=05F1、T2、T3M 的Y分支year%400!=0,year%100!=0,year%4==019926F1、F2、T3M的N分支year%400!=0,year%100==0,year%4==019007F1、T2、F3M的N分支year%400!=0,year%100!=0,year%4!=019938F1、F2、F3M的N分支year%400!=0,year%100==0,year%4!=0(6)路径覆盖用例编号覆盖条件覆盖路径用例(year)1T1、F2、T31-2-320002F1、T2、F31-319932、对三角形triangleApp项目进行逻辑覆盖法测试,对每个模块分别进行以下最适合的覆盖法测试,并设计相应的测试用例。
白盒测试主要测试内容
白盒测试主要测试内容在软件开发过程中,白盒测试是一种至关重要的测试方法。
通过对代码内部结构和逻辑的测试,白盒测试可以有效发现代码中的错误和缺陷,帮助开发团队提高代码质量和系统稳定性。
下面我们将详细介绍白盒测试的主要测试内容:1. 代码覆盖率测试代码覆盖率是评估测试质量的重要指标之一,是指在测试过程中实际执行的代码占总代码量的比例。
通过对代码的覆盖率测试,可以确保测试用例涵盖了代码的所有执行路径,有效减少遗漏导致的问题。
2. 逻辑路径测试逻辑路径测试是通过分析代码中的控制流程,设计测试用例以覆盖各个逻辑分支,验证代码在不同条件下的行为。
逻辑路径测试可以帮助发现代码中的逻辑错误和边界情况,提高代码的健壮性和可靠性。
3. 数据流测试数据流测试是针对代码中的数据传输和处理过程进行的测试。
通过模拟不同的输入数据和数据流转情况,验证代码对数据的处理是否正确,是否存在数据丢失、溢出、循环等问题。
数据流测试可以帮助发现代码中的数据相关的错误,保证系统对数据的正确处理。
4. 边界值测试边界值测试是一种测试技术,通过在输入值的边界处设计测试用例来验证代码的正确性。
边界值测试能够揭示代码在输入数据边界处容易出现的错误,如值溢出、越界等情况,帮助提高代码的容错性和稳定性。
5. 条件覆盖测试条件覆盖测试是一种测试技术,通过设计测试用例以覆盖代码中的各个条件表达式,验证代码在不同条件下的执行路径。
条件覆盖测试可以帮助发现代码中的逻辑错误和判断错误,确保代码在各种条件下都能正确执行。
综上所述,白盒测试的主要测试内容包括代码覆盖率测试、逻辑路径测试、数据流测试、边界值测试和条件覆盖测试等方面。
通过全面而深入的测试,可以有效发现代码中的问题,提高软件质量和开发效率。
基于白盒测试的用例设计与验证(一)
学号:《软件测试技术》实验报告与习题册2014 / 2015 学年第2学期系别计算机科学与技术专业计算机软件班级一班姓名指导教师目录实验一:基于白盒测试的用例设计与验证(一)一.实验目的(1)熟悉Eclipse开发环境(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发(3)熟悉白盒测试基本原理(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。
二.实验内容(1)选择一门语言,完成指定的单元程序开发。
(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理设计相应的测试用例。
(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。
三.程序流程图运行结果示例程序源码#include<stdio.h>void main(){int m;int n;int p;int q;printf("请输入m的值:");scanf("%d",&m);printf("请输入n的值:");scanf("%d",&n);printf("请输入p的值:");scanf("%d",&p);printf("请输入q的值:");scanf("%d",&q);printf("输入完毕\n");if(m>0 && n<6){m=n+3;n=n*2;}if(p>5 || q<0){p=2*q+5;q=q++;}printf("m:%d\n",m);printf("n:%d\n",n);printf("p:%d\n",p);printf("q:%d\n",q);}1.语句覆盖程序中的每个可执行语句至少被执行一次2.判定覆盖3.条件覆盖4.判定-条件覆盖判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
软件测试-实验2-白盒测试案例分析
实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
实验一白盒测试(一)
实验⼀⽩盒测试(⼀)实验⼀⽩盒测试(⼀)⼀、实验⽅法:1、项⽬任务驱动教学法;2、“讲、学、练”相结合。
⼆、实验仪器与设备:1、计算机(要求:CPU 1000MHz以上,内存512M以上,磁盘空间20G以上。
);2、Eclipse;3、⼀个JAVA程序;三、实验⽬的:1、掌握⽩盒测试理论;2、掌握⽩盒测试的重要⽅法;3、掌握逻辑覆盖⽅法的原理;4、分析程序,设计逻辑覆盖的测试⽤例四、实验重点:1、逻辑覆盖⽅法的原理;2、分析程序,设计逻辑覆盖的测试⽤例。
五、实验难点:1、分析程序,设计逻辑覆盖的测试⽤例六、实验项⽬:使⽤逻辑覆盖⽅法测试⼀个JA V A程序1、实训要求:1、JAVA 程序。
2、根据⽩盒测试技术的逻辑覆盖⽅法设计程序的测试⽤例。
2、实训步骤:1、编写程序public static int DoWord(int x,int y,int z){if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}2、设计测试⽤例(1)根据⽩盒测试技术的逻辑覆盖⽅法设计该程序的测试⽤例,分别满⾜:a.语句覆盖b.判定覆盖if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}(2)根据上⾯设计的测试⽤例使⽤Junit编写程序进⾏测试。
要求:包括测试⽤例和预期结果,并书写实验报告。
白盒测试实验报告
白盒测试实验报告关于三角形问题的白盒测试实验报告一、实验目的1、能熟练应用功能性测试技术进行测试用例设计;2、对测试用例进行优化设计;二、实验内容1、题目内容描述针对实验一编写的源代码进行白盒测试。
要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。
执行测试用例,并分析测试结果。
可以使用C++Test对代码进行静态检查和动态测试。
2、测试用例的编写根据条件绘制程序流程图如下:由程序流程图得如下控制流图:采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:(2)判定覆盖(3)条件覆盖:(4)判定-条件覆盖:(5)条件组合覆盖:(6)路径覆盖:基路径方法设计测试用例并执行测试用例:3、测试结果分析经过以上测试发现:程序无法结束,达不到预测结果。
其余均能正确执行达到预期结果。
4、实验思考通过本次试验,对C++test工具有了一定的认识,学会了一些基本的用法和操作,用该工具测出了一些代码规范的问题,能够分析测试结果了。
本实验用两种方法对程序进行测试,从中可看出,基路径测试比逻辑覆盖测试过程简单,但是没有逻辑覆盖测试的效果好。
所以,我觉得应该更加熟悉两种测试方法的特色,以便在以后的测试中能更快更准确的选择测试方法,快速测试,找到程序中的错误。
附录:程序代码#include "iostream.h"#include "stdio.h"void Judge(int m_num1,int m_num2,int m_num3){while(scanf("%d %d %d",&m_num1,&m_num2,&m_num3)! =EOF){if(!(m_num1+m_num2<=m_num3 || m_num1+m_num3<=m_num2 || m_num2+m_num3<=m_num1)) {if (m_num1==m_num2 && m_num1==m_num3)cout<<"等边三角形"<else if (m_num1==m_num2 || m_num1==m_num3 || m_num2==m_num3)cout<<"等腰三角形"<elsecout<<"一般三角形"<}else{cout<<"不是三角形"<}}}void main(){int a,b,c;Judge(a,b,c);}第二篇:黑盒测试实验报告 12000字黑盒测试实验报告一实验内容1、系统地学习和理解黑盒测试的基本概念、原理,掌握黑盒测试的基本技术和方法;2、对一个已知的程序进行测试。
实验2白盒测试
实验2⽩盒测试实验2 ⽩盒测试⼀、实验⽬的1. 了解⽩盒测试的概念。
2. 掌握⽩盒测试的主要⽅法。
3. 掌握⽩盒测试⼯具JUnit的安装和使⽤⽅法。
4. 利⽤⽩盒测试⼯具JUnit,针对⼀个具体问题进⾏测试,掌握测试的基本过程、测试⽤例的编写和测试结果的分析⽅法。
⼆、实验内容1. ⽩盒测试⼯具JUnit的安装和使⽤⽅法。
2. 利⽤⽩盒测试⼯具JUnit测试某个Java类(⿎励测试⾃⼰编写的Java类)。
三、实验要求1. ⾃⼰编写测试⽤例。
2. 使⽤JUnit软件对测试⽤例进⾏测试。
3. 记录并分析测试结果。
四、操作⽅法与实验步骤0. 准备⼯作在Eclipse中新建项⽬Calculator,再创建类Calculator。
该类实现加、减、乘、除四则运算。
为了体验测试过程,故意给出某些错误。
代码如下:public class Calculator {private static int result;public void add(int n) {result=result+n;}public void substract(int n) {result=result-1; 正确的是result=result-n}public void multiply(int n) { 该⽅法待定义,预留接⼝}public void divide(int n) {result=result/1; 正确的是result=result/n }public int getResult() {return result;}}1. 步骤⼀:将JUnit4测试包引⼊Calculator项⽬2. 步骤⼆:⽣成JUnit4测试框架3. 步骤三:在前述⾃动⽣成的测试框架下,⾃⼰编写测试⽤例程序。
4. 步骤四:运⾏测试代码五、测试⽤例测试⽤例代码如下:import static org.junit.Assert.*;import org.junit.After;import org.junit.Before;import org.junit.Test;public class CalculatorTest {private static Calculator calculator=new Calculator();@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}@Testpublic void testAdd() {calculator.add(2);calculator.add(3);assertEquals(5,calculator.getResult());}@Testpublic void testSubstract() {calculator.add(10);calculator.substract(3);assertEquals(7,calculator.getResult());}@Testpublic void testMultiply() {fail("Not yet implemented");}@Testpublic void testDivide() {calculator.add(6);calculator.divide(2);assertEquals(3,calculator.getResult());}}六、测试结果及分析测试运⾏结果如下图所⽰:图2.1 测试运⾏结果图根据报错信息将测试⽤例表补充完整:结合测试⽤例代码和测试结果,分析得错误原因为每⼀次运算调⽤的add()⽅法将输⼊的数据不断累加,⽽⾮初始化,因此对代码做出以下修正:①完善Calculator类中multiply⽅法:public void multiply(int n) {result=result*n;}②在每⼀项测试⽤例前增加语句:calculator.multiply(0);程序修正后测试运⾏结果如下图所⽰:图2.2 修正后的测试运⾏结果图。
黑盒白盒实验(一二)
黑盒测试(一)和白盒测试(二)实验背景知识结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
一、逻辑覆盖结构性测试力求提高测试覆盖率。
逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。
二、基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
①程序的控制流图控制流图是描述程序控制流的一种图示方法。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
实验二 Nextdata实验白盒测试
分析
实验
分析
续
实验
分析
续
实验
分析
续
日
本次实验的收获、体会、经验、问题和教训:
关于白盒测试
测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
2001.11.30
F1、F3、T4、F5
beji
2001.12.1
2.利用路径覆盖分析NextDate函数
基本路径测试方法
(1)控制流图
图2-1 NextDate函数的控制流图
(2)环形复杂度
方法一:V(G)=5(封闭区域)+1=6
方法二:V(G)=16(边数)—12(节点)+2=6
方法三:V(G)=5(判定节点2、3、4、5、6)+1=6
(3)导出基本路径
根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段的的基本路径集中有6条独立路径,每条独立路径为一个独立的测试用例。路径如下。
路径1:1→2→3→10→12
路径2:1→2→3→5→9→12
路径3:1→2→3→5→6→7→12
路径4:1→2→3→5→6→8→12
路径5:1→2→4→5→6→8→12
输入条件
覆盖条件
执行路径
预期输出
测试用例1
2000.2.29
T1、T2
ac
2000.3.1
测试用例2
2001.2.28
F1、T3
bd
2001.3.1
软件工程实验报告
软件工程实验报告学号:姓名:专业:年月实验一:白盒测试一、实验目的巩固白盒测试知识,对于给定的待测程序,能熟练应用基本控制流覆盖方法设计测试用例;能够执行白盒测试过程,并撰写白盒测试分析报告。
二、实验内容白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
测试规划基于产品内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。
白盒测试将被测程序看做一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。
白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。
测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试和基本路径测试。
三、程序代码要求:实现对不少于10个随机输入的数的冒泡排序算法。
#include<iostream>using namespace std;int main(){double a[100];int N;int i = 0, j = 0;cin >> N;//排序元素的个数for (i = 0; i <= N; i++){cin >> a[i];}for (i = 0; i < N-1 ; i++) {for (j = 0; j < N - 1 - i; j++){if (a[j] > a[j + 1]) {int tmp;tmp = a[j];a[j] = a[j + 1];a[j + 1] = tmp;}}}for (i = 0; i < N; i++){cout << a[i] <<" ";}cout << endl;return 0;}四、程序流程图五、测试内容(1)语句覆盖测试测试结果:①②测试结果分析:输入元素时需要输入的元素个数大于最初输入的元素个数。
实验二 白盒测试——基本逻辑覆盖测试方法
实验二白盒测试基本逻辑覆盖——测试方法1、实验目的(1)理解等价类划分方法的内涵;(2)掌握等价类测试健壮性概念;(3)能够使用等价类划分法设计测试用例。
2、实验预习等价类划分测试方法的主要目的是能够对软件进行完备的测试,同时避免冗余测试用例的存在。
等价类的划分关键是确定类的等价关系,根据单/多缺陷假设和健壮性,等价类划分测试方法可以分为弱一般等价类测试、强一般等价类测试、弱健壮等价类测试和强健壮等价类测试四类方法。
3、实验内容及要求现在有一个应用于旅馆住宿管理系统的程序,其包含了用户登录、用户注册和用户结算等功能,需要对该程序进行测试,具体测试任务主要有:(1)旅馆住宿系统用户名字段测试用例设计;(必做)(2)旅馆住宿系统用户注册测试用例设计;(必做)(3)旅馆住宿系统结算功能测试用例设计。
(选做)在任务1中,用户名限制为6~10位自然数,要求使用等价类划分方法设计测试用例。
在任务2中,用户信息主要有登录帐号(6~10位自然数)、真实姓名(大小写的英文字符)、登录密码和确认密码、出生日期(其中有效年份1900~2010)。
任务3中,旅馆房费结算有一定的规则,当游客入住后可根据房间价格、入住天数、入住人是否有会员卡等情况给予折扣结算,房费计算公式为,房费=房间单价×折扣率×入住天数。
折扣率根据住宿人住宿天数(最多30天)、是否有会员卡、入住次数(3次及以下、3次以上)和物品寄存个数的不同有所不同,体现在不同条件下对应的积分不同,10分及10分以上折扣率为7折,10分以下折扣率为9折,具体规则:要求给出所有这些任务的实验步骤以及强健壮等价类测试用例,并给出实际测试结果。
4、实验总结(1) 请确定任务1和任务2的输入和输出变量。
(2) 对于任务1和任务2,在做健壮性测试用例时,给出输入变量的无效区间。
(3) 请结合实验谈一下等价类划分测试方法的优劣。
实验二-白盒测试方法应用
实验报告
2014 课程名称 实验题目 实验目的、要求 – 2015 软件测试 学年第 2 学期 任课老师: 班级 实验时间 座号 实验日期: 提交日期: 淘宝店 530213 姓名 2015.3.24 2015.3.24 实验二、白盒测试方法应用
实验目的及要求:
1 掌握白盒测试方法(逻辑覆盖法、基路径测试法等)的应用 淘宝店 530213
预期输出
覆盖组合号 p1p3p4(T1T2) p1p3p4(T1T3) p1p2(T1)
2
TE-017
2011
false
p1p2(T2)
(7)路径覆盖
表 1-7 路径覆盖的测试用例
用例 ID TE-018 TE-019 2012 2014
输入 true false
预期输出
覆盖组合号 p1p3p4(T1T2) p1p2(T2)
4
(4)Triangle 函数的基本路径集的测试用例(见表 2-1)
表 2-1 Triangle 函数的基本路径集的测试用例
5
用例 ID a RN-001 RN-002 RN-003 3 3 1 4 3 2
输入 b 5 5 3 c
预期输出 不等边三角形 等腰三角形 不构成三角形
执行路径 1 2 3
总结以及心得体会
淘宝店号 530213
教师评阅意见
教师:
2015 年 3 月 26 日
填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。
6
覆盖组合号 p1p3p4(T1T2) p1p3p4(T1T3) p1p2(T1) p1p2(T2)
(4)判定/条件覆盖(TFT FTF)
表 1-4 判定/条件覆盖的测试用例
实验二 白盒测试(参考资料)
判定-条件覆盖:
用例1:x=4,y=8,z=8
用例2:x=3,y=5,z=13
条件组合测试
用例1:x=4,y=8,z=8
用例2:x=4,y=3,z=13
用例3:x=2,y=8,z=8
用例4:x=2,y=3,z=13
路径测试:
用例1:x=4,y=8,z=8
用例2:x=4,y=3,z=13
}
}
//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数
total = total1 + total2 + day;
int week;
week = total % 7;
cout<<"您输入的日期是";
switch(week){
case 0:cout<<"星期天"<<endl;break;
case 7:total2 = 181;break;
case 8:total2 = 212;break;
case 9:total2 = 243;break;
case 10:total2 = 273;break;
case 11:total2 = 304;break;
case 12:total2 = 334;break;
case 2:total2 = 31;break;
case 3:total2 = 60;break;
case 4:total2 = 91;break;
case 5:total2 = 121;break;
case 6:total2 = 152;break;
case 7:total2 = 182;break;
实验二_白盒测试
实验二:白盒测试一、实验目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
二、实验内容要求:被测测试程序功能:PriorDate函数;程序定义:为了获得前一个日期, PriorDate函数执行如下操作:(默认年数大于等于0)如果输入日期day变量值大于1,则把day变量的值减1;如果输入日期是2~12月份中某月的第一天,则把day变量的值置为前一个月的最后一天,month变量的值减1;如果输入日期是1月的第一天,则day变量的值置为31,month变量的值置为12,year变量的值减1。
关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。
测试环境:Windows 7、Eclipse;三、实验要求根据代码调通程序并进行白盒测试,即用语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试方法,写出测试用例,执行测试,给出测试报告,实验报告。
四、实验测试用例与测试结果程序的流程图如下图:1.语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于02.分支覆盖执行足够的测试用例,使得程序中的每一个分支至少都通过一次测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012 month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于03.条件覆盖测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=0,day=0,year=1800 OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于0执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
软件测试方案范例
软件测试方案范例一、测试目标。
咱们这个软件啊,就像是一个精心打造的小宇宙,里面啥功能都有。
咱测试的目标呢,就是要把这个小宇宙里的每个星球(功能)都探索一遍,看看有没有啥坑坑洼洼(漏洞),让用户在这个小宇宙里能玩得开心,用得顺畅,别一不小心就掉进黑洞(出现严重错误)里去了。
二、测试范围。
# (一)功能测试。
1. 核心功能。
就像咱们盖房子,承重墙可不能有问题。
这软件的核心功能就相当于承重墙,比如登录注册、数据存储和读取这些,得好好测测。
要是登录的时候总是报错,那用户还不得气炸了,就像到了家门口却进不去门一样难受。
以登录功能为例,得试试各种正确和错误的用户名密码组合。
正确的组合得能顺利登录进去,就像一把钥匙开一把锁一样精准。
错误的组合呢,也得给出合理的提示,不能让用户一头雾水,像“用户名或密码错误,请重新输入”这种提示就得明明白白的,可不能是那种让人看不懂的乱码。
2. 辅助功能。
辅助功能就像是房子里的软装,虽然没有承重墙那么关键,但也能影响用户的体验。
像软件里的搜索功能,得看看能不能准确地找到用户想要的东西。
要是用户搜个“红色连衣裙”,结果出来一堆蓝色牛仔裤,那可不行。
还有界面的皮肤切换功能,如果有这个功能的话。
切换皮肤的时候,不能把整个界面弄得乱七八糟的,得像换衣服一样,顺顺当当的,而且换了皮肤后各个功能按钮还得能正常使用,可不能换了身衣服就找不到口袋(功能按钮)了。
# (二)兼容性测试。
1. 浏览器兼容性。
现在浏览器就像不同款式的汽车,用户可能开着各种各样的“汽车”来访问我们的软件这个“目的地”。
咱们得看看在主流的浏览器,像Chrome、Firefox、Safari 还有IE(虽然IE有点老了,但还是有不少用户在用呢)上,软件是不是都能正常显示和使用。
不能在Chrome上看着是个漂漂亮亮的页面,到了IE上就变得歪歪扭扭的,像个被揉皱了的纸团。
2. 设备兼容性。
设备就更多样化了,手机、平板、电脑都有可能。
白盒测试实验二
软件测试基础与实践实验报告实验名称:白盒测试实验二实验地点:机房实验日期:学生姓名:学生学号:一、实验目的(1)巩固白盒测试知识,能熟练应用基本路径测试方法设计测试用例;(2)学习测试用例的书写。
二、实验内容实验背景:已知公元 1 年 1 月 1 日是星期一,我们可以实现一个程序,使得只要输入年月日,程序就能自动回答当天是星期几。
现有 07 级同学实现上述功能的程序 WeekB,该程序用于计算输入日期是星期几。
实验 1:基本路径测试技术实验运用基本路径测试方法,分别对程序 WeekB 中的方法 IsCorrect()和 getResult()进行测试。
要求:(1) 画出程序流图。
(2) 计算环复杂度。
(3) 找到基本路径集合。
(4) 设计具体的测试用例。
一、测试IsCorrect()已在visio中作答,可双击以下打开和编辑Starty<1y%4==0)&&(y%100!=0))||(y%400==0)m<0||m>12d>maxA[m-1]EndTrue maxA[1]=29False123-4-57-8910111223456789if(y<1)return false;else {if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;if(m<0||m>12)return false;else{if(d>maxA[m-1])return false;elsereturn true;}}V(G)=18-12+2=8L1:1-2-11-12L2:1-2-3-7-8-9-11-12L3:1-2-3-4-6-7-8-9-11-12L4:1-2-3-4-5-7-8-9-11-12L5:1-2-3-4-5-6-7-11-12L6:1-2-3-4-5-6-7-8-11-12L7:1-2-3-4-5-6-7-8-9-11-12L8:1-2-3-4-6-7-8-9-10-1216101211测试用例二、测试getResult()已在visio中作答,可双击以下打开和编辑Start for(int i=1)i<yi%4==0)&&(i %100!=0))||(i%400==0)totalDays+=366totalDays+=365y%4==0)&&(y%100!=0))||(y%400==0)maxA[1]=29maxA[1]=28for(int i=1)i<mtotalDays+=maxA[i-1]totalDays+=(d-1)maxA[1]=28return (totalDays%7)End1245-6-79811-12-13151491617182021222312346911long totalDays=0;{for(int i=1;i<y;i++){if(((i%4==0)&&(i%100!=0))||(i%400==0))totalDays+=366;elsetotalDays+=365;}if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;elsemaxA[1]=28;for(int i=1;i<m;i++){totalDays+=maxA[i-1];}totalDays+=(d-1);maxA[1]=28;return (totalDays%7);}V(G)=30-23+2=9L1:1-2-3-4-11-15-16-17-20-21-22-23L2:1-2-3-4-5-9-10-4-11-12-13-15-16-17-20-21-22-23L3:1-2-3-4-5-6-8-10-4-11-12-14-16-17-20-21-22-23L4:1-2-3-4-5-6-7-9-10-4-11-12-13-14-16-17-20-21-22-23L5:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-20-21-22-23L6:1-2-3-4-5-6-7-8-10-4-11-15-16-17-20-21-22-23L7:1-2-3-4-5-6-7-8-10-4-11-12-14-16-17-20-21-22-23L8:1-2-3-4-5-6-7-8-10-4-11-12-13-15-16-17-20-21-22-23L9:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-18-18-20-21-22-23i++i++5781012131415161718192021totalDays =0310192223测试用例三、实验体会要选择的路径太多,但是要覆盖全部路径的数目是相对的.。
白盒测试实验报告-范例
实验报告书实验一白盒测试学生姓名:李庆忠专业:计算机科学与技术学号:17白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
流程图如下图所示实验代码#include""int main(){int x,y,z;scanf("%d%d",&x,&y);if((x>0)&&(y>0)){z=x+y+10;}else{z=x+y-10;}if(z<0){z=0;printf("%d\n",z);}else{printf("%d\n",z);}return 0;}语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。
如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。
白盒测试测试方法详解
白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
白盒测试任务书
实验一:白盒测试任务书1.实验内容:编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。
若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。
若雇员月工作小时超过50小时,则超过50的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。
2.实验要求:分别用白盒测试方法中语句覆盖条件覆盖X<=40为真记为T1x>40为假记为-T1x>50为真记为T2X<=40为真记为T1x>40为假记为-T1x>50为真记为T23.程序参考:#include <iostream.h>double main(){int hours;double payment,wage;cout<<"please input hours and per hour pay:";cin>>hours>>wage;if (hours<40)payment=hours*wage ;else if ((hours>40) && (hours<=50))payment=40*wage+(hours-40)*1.5*wage;else if (hours>50)payment=40*wage+10*1.5*wage+(hours-50)*3*wage;cout<<"The final payment are:"<<payment;return payment;}提交作业命名格式:。
实验二-白盒测试
实验二白盒测试一、实验目的通过本实验,熟悉白盒测试的目的、内容,并掌握白盒测试的基本方法,能够按照具体要求对指定的程序设计测试用例并进行测试。
二、相关知识逻辑覆盖法的六种覆盖标准:1、语句覆盖:设计足够的测试用例,使得程序中的每个语句至少执行一次。
2、判定覆盖:设计足够的测试用例,使得在语句覆盖的基础上,程序中每个判定的取“真”分支和取“假”分支至少都执行一次。
3、条件覆盖:设计足够的测试用例,在语句覆盖的基础上使得程序判定中的每个条件能获得各种可能的结果。
4、判定/条件覆盖:设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
5、条件组合覆盖:设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。
6、路径覆盖:每条可能的路径都至少执行一次。
三、实验内容1、对实验一中编写的三角形程序,画出其程序流程图;分析程序流程图,确定程序分支;(1) 设计分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖的测试用例;(2) 用测试用例对程序进行测试,记录测试结果,并对结果进行分析,如果存在缺陷则修改程序,继续测试;运用逻辑覆盖法的六种覆盖标准设计测试用例,并执行测试,撰写实验报告。
四、实验步骤1、根据其题意,可以得出输入为三个整数:a、b、c为三角形的三条边,再根据以下条件输出其类型:条件一:a>0 条件二:b>0 条件三:c>0条件四:a<b+c 条件五:b<a+c 条件六:c<a+b(1)如果输入值a、b、c不满足条件一、条件二、条件三,程序输出“边的取值不符合要求”。
(2)如果输入值a、b、c不满足条件四、条件五、条件六,程序输出“非三角形”。
(3)如果三条边相等,程序输出“等边三角形”。
(4)如果三条边恰好有两边相等,程序输出“等腰三角形”。
(5)如果三条边都不相等,则程序输出为“一般三角形”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int max = 200; // TODO:初始化为适当的值
bool expected = false; // TODO:初始化为适当的值
bool actual;
actual = target.isOutOfRange(i, min, max);
2.测试用例
图2.1流程图
由流程图可知程序模块共有六条路径:
P1:(1-2),即M=.F.;
P2:(1-3-4),即M=.T.,N=.F.;
P3:(1-3-5-6),即M=.T.,N=.T.,O=.T.;
P4:(1-3-5-7-8),即M=.T.,N=.T.,O=.F.,P=.T.;
P5:(1-3-5-7-9-10),即M=.T.,N=.T.,O=.F.,P=.F.,Q=.T.;
M=.F.;
P1:(1-2)
3.测试代码
using Tester;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace TestProject
{
/// <summary>
///这是TriangleTest的测试类,旨在
P6:(1-3-5-7-9-11),即M=.T.,N=.T.,O=.F.,P=.F.,Q=.F.;
(1)判定覆盖方法设计isOutOfRange方法的测试用例
测试用例
具体取值条件
判定条件
通过路径
输入:{a=-1,b=4,c=5}
输出:{6某些边不满足限制条件}
a<0,b>0,c>0
M=.F.;
P1:(1-2)
int c = 25; // TODO:初始化为适当的值
int expected = 1; // TODO:初始化为适当的值
int actual;
actual = target.triangleType(a, b, c);
Assert.AreEqual(expected, actual);
}
/// <summary>
[TestMethod()]
public void triangleTypeTest()
{
Triangle target = new Triangle(); // TODO:初始化为适当的值
int a = 10; // TODO:初始化为适当的值
int b = 10; // TODO:初始化为适当的值
实验报告
课程名称
软件测试技术
实验名称
实验二、白盒测试(1)
日期
2014.11.11
学生学号
姓名
班级
Z120551
实验目的:
通过本次实验,要求学生能够使用语句覆盖、判定覆盖和条件覆盖来设计测试用例,写出测试代码并通过调试。
实验条件:
电脑一台、能上网查阅资料。
实验内容与步骤:
1.实验内容
根据实验一的内容使用语句覆盖方法设计triangleType方法的测试用例;使用判定覆盖方法设计isOutOfRange方法的测试用例;使用条件覆盖方法设计isLegal方法的测试用例。然后通过测试用例编写测试代码,要求调试并通过测试代码。
输入:{a=6,b=4,c=5}
输出:{5一般三角形}
0<a<200and0<b<200and0<c<200
M=.T.,N=.T.,O=.F.,P=.F.,Q=.F.
P6:(1-3-5-7-9-11)
(2)语句覆盖方法设计triangleType方法的测试用例:
测试用例
具体取值条件
判定条件
通过路径
输入:{a=3,b=4,c=5}
实验成绩
任课教师签名
郭俊恩
///</summary>
public TestContext TestContext
{
get
{
return testContextInstanContextInstance = value;
}
}
/// <summary>
///triangleType的测试
///</summary>
Assert.AreEqual(expected, actual);
}
/// <summary>
///isLegal的测试
///</summary>
[TestMethod()]
public void isLegalTest()
{
Triangle target = new Triangle(); // TODO:初始化为适当的值
///isOutOfRange的测试
///</summary>
[TestMethod()]
public void isOutOfRangeTest()
{
Triangle target = new Triangle(); // TODO:初始化为适当的值
int i = 12; // TODO:初始化为适当的值
输出:{4是直角三角形}
a^2+b^2=c^2ORb^2+c^2=a^2
ORa^2+c^2=b^2
M=.T.,N=.T.,O=.F.,P=.F.,Q=.T
P5:(1-3-5-7-9-10)
输入:{a=6,b=4,c=5}
输出:{5一般三角形}
0<a<200and0<b<200and0<c<200
M=.T.,N=.T.,O=.F.,P=.F.,Q=.F.
P6:(1-3-5-7-9-11)
(3)条件覆盖方法设计isLegal方法的测试用例
测试用例
具体取值条件
判定条件
通过路径
输入:{a=-1,b=4,c=5}
输出:{6某些边不满足限制}
a<0,b>0,c>0
M=.F.;
P1:(1-2)
输入:{a=1,b=-4,c=3}
输出:{6某些边不满足限制}
a>0,b<0,c>0
Assert.AreEqual(expected, actual);
}
}
}
运行测试结果:
实验总结(结论或问题分析):
通过此次实验能够使用语句覆盖方法设计triangleType方法的测试用例;使用判定覆盖方法设计isOutOfRange方法的测试用例;使用条件覆盖方法设计isLegal方法的测试用例。通过这些测试方法,使我对程序的正确性有了更进一步的了解,实现代码的优化,对我以后编程语言的学习有很大的帮助,这次试验收获颇多。
///包含所有TriangleTest单元测试
///</summary>
[TestClass()]
public class TriangleTest
{
private TestContext testContextInstance;
/// <summary>
///获取或设置测试上下文,上下文提供
///有关当前测试运行及其功能的信息。
int a = -10; // TODO:初始化为适当的值
int b = 0; // TODO:初始化为适当的值
int c = -1; // TODO:初始化为适当的值
bool expected = false; // TODO:初始化为适当的值
bool actual;
actual = target.isLegal(a, b, c);