实验四、白盒测试技术(二)
白盒测试有那些常用方法和技巧
白盒测试有那些常用方法和技巧白盒测试是一种测试软件内部结构、设计和代码的过程,主要用于评估程序代码的质量、逻辑覆盖率和完整性。
白盒测试通常由开发人员执行,以确保代码按照规范执行,并且同时确保测试覆盖率达到预期水平。
下面将介绍一些白盒测试中常用的方法和技巧。
常用方法1. 语句覆盖语句覆盖是一种基本的白盒测试方法,旨在确保每个软件代码中的语句都被执行到。
测试人员通过设计测试用例来检查代码覆盖率,以便发现潜在的逻辑错误。
2. 判定覆盖判定覆盖是一种测试方法,旨在确保每个条件都被至少一次计算为true和false。
通过设计测试用例来覆盖条件语句的所有可能路径,从而提高代码的覆盖率。
3. 条件覆盖条件覆盖是一种测试方法,旨在确保每个条件语句内的所有布尔表达式都得到测试。
测试人员需要设计多个测试用例来覆盖所有可能的布尔组合,以发现潜在的逻辑错误。
4. 路径覆盖路径覆盖是一种测试方法,旨在确保从程序的入口到出口的所有可能执行路径都被覆盖。
通过设计测试用例来覆盖代码中的所有可能路径,以确保程序的完整性和正确性。
常用技巧1. 设计合适的测试用例在进行白盒测试时,设计合适的测试用例是至关重要的。
测试用例应该能够覆盖代码中的不同路径和分支,以便发现潜在的错误。
同时,测试用例应该具有高效性和可重复性,以便在代码发生改变时进行回归测试。
2. 使用静态分析工具静态分析工具可以帮助测试人员检测代码中的潜在错误和不一致性。
通过使用这些工具,测试人员可以更快速地发现代码中的问题,并及时进行修复。
3. 结合代码审查代码审查是一种有效的质量保证方法,可以帮助测试人员发现代码中的错误和潜在问题。
在白盒测试过程中,结合代码审查可以提高代码的质量和可维护性,确保代码符合规范。
4. 自动化测试自动化测试是提高测试效率的关键。
通过编写测试脚本和使用自动化测试工具,可以快速地执行大量的测试用例,提高测试覆盖率和质量。
通过采用上述方法和技巧,可以有效地进行白盒测试,并提高软件代码的质量和稳定性。
白盒测试实验报告-范例
实验报告书实验一白盒测试学生姓名:李庆忠专业:计算机科学与技术学号:1341901317白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
流程图如下图所示实验代码#include"stdio.h"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可覆盖所有判定。
条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。
软件测试中的白盒测试技术与方法
软件测试中的白盒测试技术与方法在软件开发过程中,测试是至关重要的一环。
而软件测试又分为白盒测试和黑盒测试两种方法。
本文将重点讨论白盒测试技术与方法。
一、白盒测试概述白盒测试又称结构化测试或透明盒测试,是指测试人员对软件内部结构和实现细节有详细了解,并以此为基础来编制测试用例,验证软件是否按设计要求正常运行。
相比之下,黑盒测试只依据软件需求规格说明书等外部信息来制定测试用例。
白盒测试广泛应用于各个测试层次,并被认为是提高测试效率和发现隐藏缺陷的关键手段。
二、白盒测试技术1. 静态白盒测试技术静态白盒测试技术是在软件开发生命周期的早期应用,主要通过检查源代码以及其他开发文档来识别潜在问题。
常见的静态白盒测试技术包括代码审查、需求分析、软件框架分析等。
2. 动态白盒测试技术动态白盒测试技术是在软件开发过程中进行源代码的动态执行,通过运行时的覆盖情况、路径信息等来进行测试。
常见的动态白盒测试技术包括基本路径测试、条件覆盖测试、循环测试等。
三、白盒测试方法1. 代码覆盖测试代码覆盖测试是白盒测试方法中的一种,主要以覆盖代码的不同路径来验证软件功能是否正确。
常见的覆盖测试包括语句覆盖、分支覆盖、判定覆盖等。
2. 数据流测试数据流测试是通过分析软件中的数据流来设计测试用例,以验证数据是否按照预期流动。
常见的数据流测试技术包括数据定义使用测试、局部/全局变量定义测试、数据定义-使用关系测试等。
3. 边界值测试边界值测试是一种白盒测试方法,通过检查软件在极限输入值或接近边界的输入值时的行为来验证程序的正确性。
这种测试方法能有效地发现常见的错误,如数组越界、变量溢出等。
4. 语句覆盖测试语句覆盖是白盒测试方法中最常见的一种,目标是通过执行每一条语句至少一次来验证软件的正确性。
通过多次运行测试用例,可以尽可能地发现隐藏的缺陷。
5. 状态覆盖测试状态覆盖测试是白盒测试方法中的一项重要内容,它覆盖了程序中可能的状态转换,以验证软件是否按照预期状态进行正确运行。
软件测试实验4
软件测试实验4本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March广东海洋大学学生实验报告书实验名称实验四白盒测试课程名称软件测试成绩学院软件学院专业软件工程班级(系)学生姓名学号实验地点实验日期一、实验目的:1.掌握白盒测试原理和测试方法2.使用白盒测试的逻辑测试和基本路径测试法设计测试用例二、实验内容:1.画出如下程序段的程序流程图,分别用最少的测试用例完成语句覆盖、判定覆盖、条件覆盖和路径覆盖的测试设计。
void test(int x, int y){if (x>0 && y>10) y=y/x;if(x<-10 || y<0) y=-(y+x);}程序流程图如下所示:input x,yx>0 and y>10y=y/xx<-10 or y<0y=-(y+x)语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
路径覆盖使程序中每一条可能的路径至少执行一次。
由这个流程图可以看出,该程序模块有4条不同的路径:P1:(a-c-e) P2:(a-c-d)P3:(a-b-e) P4:(a-b-d)将里面的判定条件和过程记录如下:判定条件M={x>0 and y>10}判定条件N={x<-10 or y<0}1、语句覆盖(P4)2、判定覆盖(P2 P3)P2和p3可以作为测试用例。
3、条件覆盖对于M:x>0取真时T1,取假时F1;y>10取真时T2,取假时F2;对于N:x<-10取真时T3,取假时F3;Y<0取真时T4,取假时F4。
条件:x>0,y>10条件:x<-10,y<0根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示:4、路径覆盖由上表可知,本程序无法实现路径覆盖。
白盒测试技术与实践
白盒测试技术与实践白盒测试是软件测试中的一种核心测试方法,它通常被用于检验程序的内部结构、设计和实现。
本文将详细介绍白盒测试技术的原理和常用的实践方法。
一、白盒测试技术的原理白盒测试是一种基于内部知识和了解来测试软件的方法。
它通过对软件的内部结构进行分析,以评估软件在各种情况下的行为和性能。
白盒测试技术的原理包括以下几个方面:1. 分析代码覆盖率:白盒测试通过分析代码的执行路径来评估测试用例对程序代码的覆盖程度。
通过这种方式,测试人员可以确定测试用例是否覆盖了程序的各个分支和边界情况,以此来评估测试的完整性和有效性。
2. 数据流分析:白盒测试通过对程序中的数据流进行分析,以识别可能存在的错误和缺陷。
通过分析数据的路径和变化,测试人员可以发现潜在的空指针引用、未初始化的变量等问题。
3. 代码审查:白盒测试还包括对代码的审查,以发现潜在的设计和实现问题。
通过审查代码,测试人员可以评估代码的质量和可维护性,并提出改进建议。
二、白盒测试的实践方法白盒测试的实践方法包括以下几个步骤:1. 制定测试计划:在进行白盒测试之前,首先需要制定测试计划。
测试计划应该包括测试的范围、目标和策略等内容。
同时,还需要确定测试环境和所需资源。
2. 选择测试用例:选择合适的测试用例对软件进行测试。
测试用例应该能够覆盖程序的各个分支和边界情况,并且能够发现潜在的错误和缺陷。
3. 进行代码分析:对软件的代码进行分析,以评估测试用例对程序的覆盖程度。
通过分析代码的执行路径,可以判断测试用例是否覆盖了程序的各个分支和边界情况。
4. 进行数据流分析:对软件的数据流进行分析,以发现潜在的错误和缺陷。
通过分析数据的路径和变化,可以发现可能存在的问题。
5. 进行代码审查:对软件的代码进行审查,以评估代码的质量和可维护性。
通过审查代码,可以发现潜在的设计和实现问题,并提出改进建议。
6. 执行测试用例:执行选择好的测试用例,以评估软件在各种情况下的行为和性能。
白盒测试技术实验报告
白盒测试技术实验报告白盒测试技术实验报告引言:在软件开发过程中,测试是至关重要的一环。
而白盒测试作为一种常见的测试方法,对于确保软件质量和稳定性起着重要的作用。
本文将对白盒测试技术进行实验,并对实验结果进行分析和总结。
一、实验目的本次实验的目的是通过使用白盒测试技术,对一个简单的软件模块进行测试,验证其功能的正确性,并评估测试的覆盖率。
二、实验环境本次实验使用的软件模块是一个简单的登录功能,开发语言为Java。
实验环境包括Java开发工具包(JDK)、集成开发环境(IDE)和测试框架JUnit。
三、实验步骤1. 首先,我们对登录功能进行功能性测试。
通过输入正确的用户名和密码,验证系统能够成功登录,并显示欢迎页面。
然后,我们输入错误的用户名和密码,验证系统能够给出相应的错误提示。
2. 接下来,我们使用白盒测试技术进行代码覆盖率测试。
通过编写测试用例,覆盖代码中的不同分支和路径,以确保代码的各种情况都能被正确测试到。
同时,我们还使用代码覆盖率工具,如JaCoCo,来评估测试的覆盖率。
3. 在测试用例编写完成后,我们使用JUnit框架来执行测试。
JUnit是一个常用的Java单元测试框架,它提供了一系列的断言方法和测试运行器,方便我们编写和执行测试用例。
4. 运行测试后,我们可以得到测试结果和覆盖率报告。
通过分析报告,我们可以了解到哪些代码分支被覆盖,哪些分支未被覆盖,从而可以进一步完善测试用例,提高测试的覆盖率。
四、实验结果经过测试,我们发现登录功能在输入正确的用户名和密码时能够成功登录,并显示欢迎页面。
而在输入错误的用户名和密码时,系统能够给出相应的错误提示,确保了功能的正确性。
在代码覆盖率测试方面,我们使用JaCoCo工具进行了测试。
结果显示,我们的测试用例覆盖了代码中的90%分支和路径,达到了较高的覆盖率。
然而,仍有一小部分分支未被覆盖到,可能需要进一步优化测试用例。
五、实验总结通过本次实验,我们了解了白盒测试技术的基本原理和应用方法。
白盒测试方法
白盒测试方法
白盒测试方法是一种软件测试方法,旨在检查软件的内部结构和实现细节。
通过了解软件的内部工作原理,白盒测试可以有针对性地检测代码中的错误和漏洞。
下面介绍几种常见的白盒测试方法。
1. 语句覆盖(Statement Coverage):该方法要求测试用例能够覆盖被测软件中的每一条语句。
通过执行测试用例,可以确定每一条语句是否被执行,从而判断是否存在潜在的错误。
2. 分支覆盖(Branch Coverage):该方法要求测试用例覆盖软件中的每一条分支语句。
分支语句通常包括if语句、switch语句等条件分支。
通过对分支语句进行测试,可以发现与条件相关的错误。
3. 条件覆盖(Condition Coverage):该方法要求测试用例覆盖软件中的每一个条件表达式。
条件覆盖可以进一步细分为条件判定覆盖(Decision Coverage)和条件组合覆盖(Condition Combination Coverage)。
条件判定覆盖要求每一个条件都能取到真值和假值,而条件组合覆盖要求所有条件的可能取值组合都进行测试。
4. 路径覆盖(Path Coverage):该方法要求测试用例覆盖软件中的每一条可能路径。
路径是指软件的执行流程,覆盖所有可能路径可以发现因程序流程不正确而导致的错误。
综上所述,白盒测试方法包括语句覆盖、分支覆盖、条件覆盖
和路径覆盖等。
通过选择合适的测试方法和设计有效的测试用例,可以提高白盒测试的效果,发现更多的错误和漏洞。
实验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. 等价类划分等价类划分是一种将输入值划分为若干个等效类,并选择一个代表性的测试用例进行测试的方法。
通过等价类划分,可以减少测试用例的数量,提高测试效率。
例如,对于一个接受一个数字作为输入的软件,可以将输入值划分为小于0、等于0和大于0的三个等价类,分别选择一个代表性的测试用例进行测试。
4. 条件覆盖条件覆盖是一种测试方法,它要求每个逻辑条件的所有可能取值至少被测试一次。
通过测试不同的条件组合和边界条件,可以发现软件的潜在问题和错误。
条件覆盖可以通过设计相应的测试用例来实现,测试人员需要详细了解被测软件的逻辑结构和条件约束。
5. 数据流分析数据流分析是一种基于程序变量之间数据流关系的测试方法。
白盒测试包括哪些测试方法和方法
白盒测试包括哪些测试方法和方法白盒测试是一种软件测试方法,也称为结构测试或逻辑驱动测试。
它是通过对软件内部结构、代码和逻辑进行全面测试来验证软件系统的正确性和完整性。
白盒测试侧重于测试软件的内部逻辑,以确保软件按照预期的方式运行。
1. 代码覆盖测试代码覆盖测试是白盒测试中最常用的方法之一。
它旨在确保软件代码的每一行、每一个分支和每一个条件都被测试到。
代码覆盖测试包括以下几种类型:•语句覆盖(Statement Coverage):确保每个代码语句都被执行至少一次。
•判定覆盖(Decision Coverage):确保每个判定语句的每个分支都被覆盖。
•条件覆盖(Condition Coverage):确保每个条件语句的每个条件都被覆盖。
2. 控制流分析控制流分析是通过分析软件代码的控制流图来进行的测试方法。
它主要关注代码执行路径,以验证各种路径下的代码逻辑正确性。
控制流分析包括以下几种技术:•基本块划分(Basic Block Division):将代码划分为基本块,以便更好地分析代码执行流程。
•路径覆盖(Path Coverage):确保覆盖软件的所有可能执行路径,包括正常执行路径和异常执行路径。
3. 数据流分析数据流分析是一种通过分析数据流程来测试软件的方法。
它主要关注数据的流动和处理过程,以验证数据在不同环节下的正确性和完整性。
数据流分析包括以下几种技术:•数据定义分析(Definition-Use Analysis):确保变量在使用之前已经定义。
•活跃变量分析(Live Variable Analysis):确保变量在使用之前是“活跃”的。
•数据依赖性分析(Data Dependency Analysis):确保数据的传递和依赖关系正确。
结论白盒测试是一种非常有效的测试方法,能够全面且深入地检查软件系统的内部结构和逻辑,帮助发现潜在的缺陷和问题。
通过代码覆盖测试、控制流分析和数据流分析等方法,可以有效地保证软件系统的质量和稳定性。
白盒测试实验报告_2
软件测试实验二一:实验目的1.通过实验熟悉测试用例设计2.通过实验熟悉白盒测试二:实验内容1:1.用java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:void DoWork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1; //语句块1j=sqrt(k);}if((x= =4)||(y>5)){j=x*y+10; //语句块2}j=j%3; //语句块3}试验内容2:1、画出上面函数的流程图。
2、分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例(注意测试用例的格式)。
3、执行每个测试用例,执行完毕后填写测试用例。
public class Test{static void dowork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=(int)Math.sqrt(k);}if((x==4)||(y>5)){j=x*y+10;}j=j%3;System.out.println("k="+k);System.out.println("j="+j);}public static void main(String[] args){dowork(4,6,5);}}三:设计测试用例1.语句覆盖x=4,y=6,z=53.条件覆盖x>3为真,记为T1x>3为假,记为-T1z<10为真,记为T2z<10为假,记为-T2x=4为真,记为T3x=4为假,记为-T3y>5为真,记为T45.条件组合覆盖1.X>3,Z<10,记为T1,T22.X>3,Z>=10,记为T1,-T23.X<=3,Z<10,记为–T1,T24.X<=3,Z>=10记为–T1,-T25.X=4,Y>5 记为T3,T46.X=4,Y<=5 记为T3,-T47.X<>4,Y>5 记为–T3,T4。
白盒测试技术
实验六白盒测试技术1 实验要求与目的●了解白盒测试技术的原理;●熟悉常用的白盒测试技术;●掌握逻辑覆盖的不同标准及原理,能够设计测试用例;2 实验原理与背景知识2.1 白盒测试白盒测试也称结构测试或逻辑驱动测试,它按照程Array序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子,如图1所示白盒测试通常可分为静态测试和动态测试两类方法,其中静态测试不要求实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而动态测试是通过输入一组预先按照一定的测试准则构造的实例图1 白盒测试示意图数据来动态运行程序,从而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法、域测试法、符号测试法、数据流测试法、Z路径覆盖法、程序变异法等等。
2.2 代码检查法代码检查是静态测试的主要方法,包括代码走查、桌面检查、流程图审查等。
代码检查主要检查代码和设计意图的一致性、代码结构的合理性、代码编写的标准性和可读性、代码逻辑表达的正确性等方面,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
代码检查应该在编译和动态测试之前进行,在检查前,应该准备好需求文档、程序设计文档、程序的源代码清单、代码编写标准和代码缺陷(错误)检查表。
在实际使用中,代码检查法能够快速找到缺陷,发现30%到70%的逻辑设计和编码缺陷,而且代码检查法看到的是问题本身而非征兆。
但是代码检查法非常耗费时间,并且需要经验和知识的积累。
代码检查法可以使用人工测试,也可以使用测试软件进行自动化测试。
2.3 静态结构分析法静态结构分析是指测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形和图表,清晰得标识整个软件的组成结构,通过分析这些图表,检查软件是否存在缺陷或错误。
实验二_白盒测试
实验二:白盒测试一、实验目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
二、实验内容要求:被测测试程序功能: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执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
白盒测试实验实验报告
白盒测试实验实验报告白盒测试实验实验报告引言白盒测试是软件测试中一种重要的测试方法,通过对软件内部结构和代码的了解,以及对程序逻辑的分析,检查软件是否按照设计要求正确运行。
本篇实验报告旨在介绍我们进行的一次白盒测试实验,包括实验目的、实验环境、实验过程以及实验结果等内容。
一、实验目的本次实验的目的是通过对一个简单的计算器程序进行白盒测试,验证其在各种输入情况下的正确性和稳定性。
通过这次实验,我们希望能够掌握白盒测试的基本原理和方法,并且了解如何利用白盒测试技术来提高软件质量。
二、实验环境我们选择了一款名为“Calc”的计算器程序作为实验对象。
该程序是一个基于命令行的简单计算器,支持加、减、乘、除等基本运算操作。
实验所需的环境如下:1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++三、实验过程1. 熟悉程序代码:首先,我们仔细阅读了“Calc”程序的源代码,了解了其整体结构和各个函数的功能。
2. 制定测试计划:根据程序的功能和代码结构,我们制定了一份详细的测试计划,包括各种输入情况的测试用例和预期结果。
3. 执行测试用例:根据测试计划,我们逐个执行了各个测试用例,并记录了实际结果。
4. 分析测试结果:对于测试用例执行过程中出现的错误,我们进行了分析,并尝试找出错误的原因。
5. 提出改进建议:基于分析结果,我们提出了一些改进建议,以帮助开发人员修复错误并提高程序的质量。
四、实验结果在本次实验中,我们共执行了30个测试用例,其中包括了各种边界情况和异常输入。
通过这些测试用例的执行,我们发现了一些程序中存在的问题,包括以下几个方面:1. 输入验证不完善:在部分情况下,程序没有对输入进行充分的验证,导致程序崩溃或输出错误结果。
我们建议在程序中增加输入验证的代码,以提高程序的健壮性。
2. 算法逻辑错误:在某些特定的输入情况下,程序的计算结果与预期结果不一致。
白盒测试的测试方法是什么样的
白盒测试的测试方法是什么样的什么是白盒测试白盒测试是一种软件测试方法,也被称为结构测试或逻辑驱动测试。
与黑盒测试不同,白盒测试是基于源代码的内部结构和实现细节来开展测试的方法。
白盒测试旨在评估软件内部逻辑的正确性,确保代码能够按照预期的方式运行。
白盒测试的基本原则在进行白盒测试时,有几个基本原则需要遵循: 1. 熟悉代码:了解并熟悉被测试软件的源代码结构和内部逻辑。
2. 设计测试用例:根据代码的逻辑结构和覆盖准则设计测试用例。
3. 执行测试:运行测试用例,监控程序的执行路径和输出结果。
4. 分析结果:分析测试结果,发现潜在的逻辑错误或代码覆盖不足的地方。
常用的白盒测试方法语句覆盖(Statement Coverage)语句覆盖是一种基本的测试方法,目的是确保每个源代码语句都被执行到。
测试用例设计应该能够覆盖到所有的代码语句,以确保代码的逻辑正确性。
分支覆盖(Branch Coverage)分支覆盖是通过测试用例覆盖每一个分支的执行路径,以确保每一个分支条件都能被正确评估和执行。
这有助于发现代码中潜在的逻辑错误或漏洞。
函数覆盖(Function Coverage)函数覆盖是指确保每一个函数都被调用并执行到。
通过设计测试用例来测试每个函数的行为和功能,以验证函数的正确性和完整性。
条件覆盖(Condition Coverage)条件覆盖用于测试每个条件表达式的取值,验证条件的真假情况。
通过设计测试用例来涵盖不同的条件组合,以确保程序能够正确处理各种情况。
路径覆盖(Path Coverage)路径覆盖是最全面的覆盖方法,要求测试用例覆盖每一个可能的执行路径。
这能够有效发现程序中的潜在错误,但也是最耗时的一种方法。
白盒测试的优势1.可以发现代码逻辑错误:通过覆盖完整的代码路径和逻辑,可以检查程序中的潜在错误。
2.提高代码覆盖率:能够保证代码的每一行、分支、函数和条件都得到覆盖,提高测试的全面性与深度。
白盒测试实验
白盒测试实验实验四白盒测试一、实验目的1. 掌握白盒测试技术,并能应用白盒测试技术设计测试用例。
2. 熟练使用Junit实施测试。
二、实验设备主流PC 机一台,要求安装windows 操作系统、Office、Eclipse 和Junit。
三、实验内容1. 使用逻辑覆盖测试方法测试以下程序段voidDoWork ( int x, int y, int z ) {1 int k=0, j=0;2 if((x>3)&&(z<10))3 {4 k=x*y-1;5 j=sqrt(k);6 }7 if((x==4)||(y>5))8 j=x*y+10;9 j=j%3;10 }说明:程序段中每行开头的数字(1—10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
2. 计算生日是星期几已知公元1年1月1日是星期一。
编写一个程序,只要输入年月日,就能回答那天是星期几。
应用逻辑覆盖方法和基本路径测试方法为上面的问题设计测试用例。
四、实验步骤1. 根据白盒测试技术设计测试用例,主要考虑逻辑覆盖测试(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖)和基本路径测试技术。
2. 计算测试用例的分支覆盖率、条件覆盖率和语句覆盖率等测试管理指标。
五、实验要求1. 根据题目要求编写测试用例;2. 撰写实验报告。
六、实验思考1. 在实际的白盒测试中,如何设计测试用例才能达到用最少的测试用例检测出最多的缺陷?2. 在进行用例设计时,如何考虑软件测试用例的充分性和减少软件测试用例的冗余性?。
白盒测试技术实验报告
白盒测试技术实验报告一、实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、完成实验并认真填写实验报告二、问题描述输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。
要求输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。
请采用静态白盒测试方法和动态白盒测试方法设计测试用例。
三、代码说明(复制测试的主要代码并在每行程序代码前面标上行号)1.importjava.util.Scanner;2.public class abc{3.public static void main(String args[]){4.String str1=””;5.String str2=””;6.String str3=””;7.inta,b,c;8.Scanner input = new Scanner(System.in);9.System.out.printf(“请输入三角形的三条边,以空格换行:\n”);10.str1=input.next();11.str2=input.next();12.str3=input.next();13.if(str1.matches(“\\d+”)&& str2.matches(“\\d+”)14.&& str3.matches(“\\d+”)){15.a=Integer.parseInt(str1);16.b=Integer.parseInt(str2);17.c=Integer.parseInt(str3);18.if(a+b>c&&a+c>b&&b+C>a){19.if(a==b||a==c|b==c){20.if(b==c&&a==c)21.System.out.printf(“等边三角形\n”);22.else23.System.out.printf(“等腰三角形\n”);24.}else25.System.out.printf(“一般三角形\n”);26.}else{27.System.out.printf(“不构成三角形\n”);28.}29.}30.}五、白盒测试分析1.代码走读1.importjava.util.Scanner;2.public class abc{3.public static void main(String args[]){/*读取三条边*/4.String str1=””;5.String str2=””;6.String str3=””;7.inta,b,c;8.Scanner input = new Scanner(System.in);9.System.out.printf(“请输入三角形的三条边,以空格换行:\n”);10.str1=input.next();11.str2=input.next();12.str3=input.next();/*判断三条边是否构成三角形*/13.if(str1.matches(“\\d+”)&& str2.matches(“\\d+”)14.&& str3.matches(“\\d+”)){15.a=Integer.parseInt(str1);16.b=Integer.parseInt(str2);17.c=Integer.parseInt(str3);18.if(a+b>c&&a+c>b&&b+C>a){19.if(a==b||a==c|b==c){20.if(b==c&&a==c)21.System.out.printf(“等边三角形\n”);22.else23.System.out.printf(“等腰三角形\n”);24.}else25.System.out.printf(“一般三角形\n”);26.}else{27.System.out.printf(“不构成三角形\n”);28.}29.}else{30.System.out.printf(“请输入整型数字”);31.}32.}33.}2.静态结构分析(函数控制流图法)3. 对判定的测试(1)函数流程图(2)语句覆盖?判定翻盖?条件覆盖?条件组合覆盖?判定/条件覆盖?修正的判定/条件覆盖(选1-2种覆盖方法,并说明选取的理由)选择判断覆盖语句:选择理由:基于判定覆盖指标的测试因需覆盖到每一条执行边,生成的测试用例数量相对语句覆盖有所增加,且测试重点转向判定节点,因此一般来说具有更强的测试覆盖能力。
白盒测试试验报告
实验二:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。
熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;测试环境: Windows vista、Dev C++;说明:本次测试采用插装测试法,由于程序简单,手动输入测试用例。
程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数B 闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详细测试用例;(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;(3)决策表测试法;①列出输入变量month、day、year的有效等价类;(条件桩)②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)③画出决策表(简化);④根据决策表,给出详细测试用例。
代码:(被测部分为while循环内部语句)#include<iostream> usingnamespacestd;intmain(){intx=1,year,month,day;while(x){1.inti,num=0,total,total1,total2;2.cout<<"请输入年份:";3.cin>>year;4.cout<<”请输入月份:“;5.cin>>month;6.cout<<”请输入日期:";7.cin>>day;//求得输入年份之前一年末的总天数8.for(i=1;i<year;i++){9.if((i%4==0)&&(i%100!=0)||(i%400==0))10.num++;}11.total1=365*(year-num-1)+366*num;//求得输入年份的总天数12.if((year%4==0)&&(year%100!=0)||(year%400==0)) { //求得输入月份之前一月末的总天数13.switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=60;break;case4:total2=91;break;case5:total2=121;break;case6:total2=152;break;case7:total2=182;break;case8:total2=213;break;case9:total2=244;break;case10:total2=274;break;case11:total2=305;break;case12:total2=335;break;}}else{14.switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=59;break;case4:total2=90;break;case5:total2=120;break;case6:total2=151;break;case7:total2=181;break;case8:total2=212;break;case9:total2=243;break;case10:total2=273;break;case11:total2=304;break;case12:total2=334;break;}//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数15.total=total1+total2+day;16.intweek;17.week=total%7;18.cout<<”您输入的日期是";19.switch(week){case0:cout<<"星期天"<<endl;break;case1:cout<<"星期一"<<endl;break;case2:cout<<"星期二"<<endl;break;case3:cout<<" 星期三"<<endl;break;case4:cout<<"星期四"<<endl;break;case5:cout<<"星期五"<<endl;break;case6:cout<<"星期六"<<endl;break;cout<<"**********退出程序请输入0,否则任一输入继续**********"<<endl;cin>>x;}2、测试用例设计1)控制流图12)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。
实验二-白盒测试
实验二白盒测试一、实验目的通过本实验,熟悉白盒测试的目的、内容,并掌握白盒测试的基本方法,能够按照具体要求对指定的程序设计测试用例并进行测试。
二、相关知识逻辑覆盖法的六种覆盖标准: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)。
实验四、白盒测试技术(二)
一、实验类型
实验类型为验证型,2个学时。
二、实验目的
(1)通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯;
(2)熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析;
三、背景知识
基本路径测试
如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
① 程序的控制流图
控制流图是描述程序控制流的一种图示方法。
基本控制构造的图形符号如图所示。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
图1 控制流图的各种图形符号
如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。
例如对应图3-2. (a) 的复合条件的判定,应该画成如图3-2. (b) 所示的控制流图。
条件语句if a OR b 中条件a和条件b各有一个只有单个条件的判定结点。
图2 复合逻辑下的控制流图
② 计算程序环路复杂性
进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。
所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。
如在图3-3(b)所示的控制流图中,一组独立的路径是:
path1:1 - 11
path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11
path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11
path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11
路径path1,path2,path3,path4组成了图3-3 (b) 所示控制流图的一个基本路径集。
只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真分支和取假分支也能得到测试。
基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。
(a) 程序流程图(b) 控制流图
图3 程序流程图与对应的控制流图
通常环路复杂性可用以下三种方法求得。
▪将环路复杂性定义为控制流图中的区域数。
▪设E为控制流图的边数,N为图的结点数,则定义环路复杂性为V(G)=E-N+2。
▪若设P为控制流图中的判定结点数,则有V(G)=P+1。
因为图5.14(b)所示控制流图有4个区域。
其环路复杂性为4。
它是构成基本路径集的
独立路径数的上界。
可以据此得到应该设计的测试用例的数目。
③ 导出测试用例
利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。
四、实验设备
主流PC机一套,要求安装windows操作系统、VC++开发工具和OFFICE工具;
五、实验内容
被测测试程序功能:计算被输入日期是星期几,已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几。
程序代码,测试对象为while循环内代码:
#include <iostream>
using namespace std;
int main()
{
int x=1,year,month,day;
while(x){
1 int i,num=0,total,total1,total2;
2 cout<<"请输入年份:";
3 cin>>year;
4 cout<<"请输入月份:";
5 cin>>month;
6 cout<<"请输入日期:";
7 cin>>day;
//求得输入年份之前一年末的总天数
8 for(i=1;i<year;i++){
9 if(((i%4==0)&&(i%100!=0))||(i%400==0))
10 num++;
}
11 total1=365*(year-num-1)+366*num;
//求得输入年份的总天数
12 if(((i%4==0)&&(i%100!=0))||(i%400==0)){
//求得输入月份之前一个月末的总天数
13 switch(month){
case 1:total2=0;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;
case 8:total2=213;break;
case 9:total2=244;break;
case 10:total2=274;break;
case 11:total2=305;break;
case 12:total2=335;break;
}
}else{
14 switch(month){
case 1:total2=0;break;
case 2:total2=31;break;
case 3:total2=59;break;
case 4:total2=90;break;
case 5:total2=120;break;
case 6:total2=151;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;
}
}
//再加上输入的日,求其总和可得到总天数
15 total=total1+total2+day;
16 int week;
17 week=total%7;
18 cout<<"请输入的日期是";
19 switch(week){
case 0:cout<<"星期天"<<endl;break;
case 1:cout<<"星期一"<<endl;break;
case 2:cout<<"星期二"<<endl;break;
case 3:cout<<"星期三"<<endl;break;
case 4:cout<<"星期四"<<endl;break;
case 5:cout<<"星期五"<<endl;break;
case 6:cout<<"星期六"<<endl;break;
}
20 cout<<"********退出程序请输入0,否则任意输入继续********"<<endl;
21 cin>>x;
}
}
程序运行结果
六、实验步骤
(1)画控制流图(简化)
(2)计算环形复杂度;
(3)导出基本路径集;A、
B、
C、
D、
(4)设计测试用例;A、
B、
C、
D、
(5)执行测试用例,记录结果
用例编号输入期望输出覆盖路径测试结果
七、实验报告要求
完成以上实验步骤。