一道白盒测试题画流程图
- 格式:wps
- 大小:20.50 KB
- 文档页数:1
白盒测试程序流程
白盒测试是软件测试中的一种重要方式,它通过分析程序的内部结构,设计测
试用例,检查代码逻辑等方法,来验证程序的正确性和完整性。
下面将介绍一般的白盒测试程序流程。
1. 确定测试目标
在进行白盒测试之前,首先需要明确测试的目标。
这包括对被测试程序的功能
和逻辑的理解,以及需要测试的具体功能或模块。
2. 分析源代码
白盒测试的核心是分析程序的源代码,了解程序的结构和逻辑。
通过代码审查、静态代码分析等方法,找出可能存在的潜在缺陷或逻辑错误。
3. 设计测试用例
根据对源代码的分析,设计测试用例来覆盖各个代码路径和逻辑分支。
测试用
例应该包括正常输入、边界情况、异常情况等,以确保程序的各个部分都能得到充分的测试。
4. 执行测试用例
按照设计的测试用例,逐个执行测试,记录测试结果和发现的问题。
可以采用
自动化测试工具来提高测试效率和覆盖范围。
5. 分析测试结果
对测试结果进行分析,验证程序的功能是否符合预期,并查找未发现的缺陷或
逻辑错误。
根据测试结果调整测试用例并重新执行,直到所有问题得到解决。
6. 编写测试报告
最后,根据测试过程和结果编写测试报告,详细描述测试的内容、结果和发现
的问题。
测试报告应该清晰明了,方便开发人员理解并修复问题。
通过以上的流程,可以有效地进行白盒测试,帮助开发人员发现和解决程序中
的问题,提升软件的质量和稳定性。
实验 2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
白盒测试指南(说明:此白盒测试指南主要给白盒测试人员提供一些基本的白盒测试方法和技术,由于涉及的问题广泛,测试内容中的细节不一定准确和完整,还有待于各位的共同参与和不断完善,欢迎多交流!)目的本方案主要实施NC产品程序代码的白盒测试。
使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。
保证局部模块功能完备性,运行正确性与稳定性。
测试项所要测试的类。
如:nc.ui.bd.*nc.bs.bd.*nc.vo.bd.*测试依据1.N C产品需求报告;需求规格说明书、用例描述清单2.设计文档;(OOA、OOD、CRC卡)如:AOM(Analysis Object Model)表示类间的静态关系,是多个相关的用例共用的。
ASD(Analysis Sequence Diagram)是按业务工作的顺序表示每一工作步骤执行时类间的动态关系。
一个用例对应一个ASD。
CRC (Collaborators & Responsibilities Card)卡是一个类的完整表述3.界面规范4.编码规范5.开发命名标准通过的准则1.界面测试通过的标准:界面的样式、大小、颜色、整体布局的设置;各种标签控件的使用及主题描述以及事件源控件的使用、快捷键使用都应符合《NC系统应用框架需求报告》和《设计文档的相关规范》。
2.程序代码通过的标准:创建的类、接口、方法、属性应与《设计文档》保持一致;程序的各种命名、注释、代码行的格式等应符合《程序开发命名标准》和《编码规范》;程序模块能独立稳定运行。
测试环境配置1.测试工具:2.软件环境:Client端:操作系统:中文WINNT/2000开发环境:VA3.5 专业版待测试的源码包Server端:操作系统:WIN NT4.0开发环境:VA3.5 专业版通讯环境: Servlet3.DB Server端:DBMS:SQL SERVER4.资源文件白盒测试总流程测试流程依据,请参见《代码层次结构规范》。
湖北科技学院软件测试实验报告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;}public boolean doWork(int x,int y,int z){return true;}}测试程序:(1)package gy.test2;import junit.framework.*;import org.junit.Test;public class DoWorkTest1 extends TestCase { private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(4, 8, 8));}}(2)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest2 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(4, 3, 13));}}(3)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest3 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(6, 2, 8));}}(4)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest4 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(2, 3, 13));}}2.源程序:package gy.test;public class BinSearch {public int binSearch (int array[],int key) { int mid,low,high;low = 0;high = array.length-1;while (low <= high) {mid = (low+high)/2;if (key == array[mid])return mid;else if (key < array [mid])high = mid -1;elselow = mid+1;}return -1;}}测试程序:(1)package gy.test;import junit.framework.*;public class BinSearchTest1 extends TestCase{ private static BinSearch search= new BinSearch();private int array[] = {};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(-1, search.binSearch(array, 1));}}(2)package gy.test;import junit.framework.*;public class BinSearchTest2 extends TestCase { private static BinSearch search= new BinSearch();private int array[] = {2,4,6};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(1, search.binSearch(array, 4));}}(3)package gy.test;import junit.framework.*;public class BinSearchTest3 extends TestCase{ private static BinSearch search= new BinSearch();private int array[] = {2,4,6,8};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(0, search.binSearch(array, 2));}}(4)package gy.test;import junit.framework.*;public class BinSearchTest4 extends TestCase {private static BinSearch search= new BinSearch();private int array[] = {2,4,6,8};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(2, search.binSearch(array, 6));}}。