软件测试工程师培训软件测试方法论主要内容1软件测试方法概述2软件测试规范3软件测试用例设计-黑盒测试4软件测试用例设计-白盒测试5小结1软件测试方法概述1.1软件测试活动及信息流1.2测试方法1.3生成测试用例的信息来源1.4小结1.1软件测试活动及信息流测试是从大量的测试用例中选择有限的测试用例发现软件中的大部分缺陷的一种技术好的测试用例的4个特性:1.检测软件质量的有效性,是否能发现缺陷,或至少可能发现缺陷;2.可仿效的测试用例可以测试很多内容,因而减少测试用例的数量;3.经济性,测试用例的执行、分析和调试是否经济4.测试用例的可修改性,每次软件修改后对测试用例的维护成本测试活动标识标志测试条件(确定测试什么)和测试的优先级设计设计测试用例(确定怎么测试)开发开发测试(设计脚本、数据等)执行执行测试用例将测试结果与比较期望进行比较测试活动1测试条件取决于被测试验证的项目或事件。如等价划分、边界值分析、因果图等。测试条件是被测环境的描述,可以用多种方式描述:如简单的语言,表格项形式或类似于流图的图表形式;标识测试条件的活动最好与开发活动(即V模型左边的活动)并行开展测试活动2设计测试用例确定“怎样测试”。测试用例(testcase)是按一定顺序执行的与测试目标(testobject,测试理由或目的)相关的一系列测试。测试用例设计将产生许多测试所包括的输入值、期望结果及其他任何运行测试的有关信息,如环境要求。期望输出包括应输出或建立的内容,应修改或更新或应删除的内容。期望输出集可以是一个很大的集合。测试活动一个测试用例测试用例:POS1036先决条件:作为数据输入员注册到定单系统显示的主菜单数据库系统必须含有标准数据集合确保系统中没有其他活跃的新定单活动步骤输入期望输出测试条件1建立用任何一个标准的订单项建立一个新订单,设置订单数为100显示订单确认信息VB10VB202确认订单打印具有正确细目购置订单VB103打印新订单报表打印的新订单报表就是新创建的订单VB10VB234取消订单打印正确的取消购置订单信息VB85打印新订单报表无打印订单输出VB8测试活动3开发测试用例包括准备测试脚本、测试输入、测试数据以及期望输出。测试脚本(testscript)是具有正规语法的数据和指令的集合,在测试执行自动工具使用中,通常以文件形式保存;必须先完成测试用例的先决条件(precondition),然后再执行测试。测试用例可能要求专门的硬件或软件,如网络环境或打印机等;期望输出可以组成成文件形式用于自动工具。对于手动测试,期望输出仅仅只是简单地记录在手工测试过程或脚本中。设置用于自动比较的期望输出比设置用于手工测试的期望输出复杂得多。在自动工具中要求每项内容都要拼写正确,而在手工测试中要求没这么严格。测试开发的任何工作可以提前进行(相对V模型左边的活动进行),以后可以节省时间。测试活动4执行测试用例对于手动测试来讲,测试者按事先准备好的手工过程进行测试,测试者输入数据、观察输出、记录发现的问题。对于自动测试,可能只需要启动测试工具,并告诉工具执行哪些测试用例;测试执行只能在软件开发完成后进行,即V模型右边的活动。测试活动5将测试结果与期望输出进行比较应该对每次测试的实际输出进行分析研究,判断软件功能是否正确。该验证可以是非正的测试者主观判断,也可以是将实际输出与期望输出进行严格准确的比较。一些信息比较,如可以在执行测试时进行显示屏幕上的信息,另一些输出比较,如修改数据库记录,只能在测试执行结束后进行。自动测试一般结合了这两种方法。测试阶段的信息流被测模块设软系统客计件其他户信需元素参息求与被测模块被测模块单元测试单元测试单元测试集成测试确认测试系统测试验收测试已经测试过的模块已集成的软件已确认的软件可交付的软件测试阶段的信息流测试阶段的输入信息有两类:软件配置:这是测试的对象,包括需求说明书、设计说明书和被测的源程序等。测试配置:包括测试计划、测试步骤、测试用例(测试数据),以及具体实施测试的测试程序、测试工具等1.2测试方法静态方法动态方法黑盒测试白盒测试静态方法和动态方法静态方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序,只对被测程序进行特性分析。因此,静态方法常称为“分析”,静态分析是对被测程序进行特性分析的一些方法的总称。动态方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况(输入/输出的对应关系)进行分析。黑盒测试黑盒测试(Black—boxTesting)又称功能测试、数据驱动测试或基于规格说明的测试,是一种从用户观点出发的测试。用这种方法进行测试时,被测程序被当作一个黑盒,在不考虑程序内部结构和内部特性,测试者只知道该程序输入和输出之间的关系或程序的功能的情况下,依靠能够反映这一关系和程序功能的需求规格说明书考虑确定测试用例和推断测试结果的正确性。软件的黑盒测试被用来证实软件功能的正确性和可操作性。白盒测试白盒测试(White—boxTesting)又称结构测试、逻辑驱动测试或基于程序的测试。它依赖于对程序细节的严密检验,针对特定条件和/与循环集设计测试用例,对软件的逻辑路经进行测试。在程序的不同点检验“程序的状态”以判定其实际情况是否和预期的状态相一致。软件的白盒测试用来分析程序的内部结构。白盒测试白盒测试要求对某些程序的结构特性做到一定程度的覆盖,或者说是“基于覆盖的测试”。最为常见的程序结构覆盖有:语句覆盖:它要求被测程序的每一可执行语句在测试中尽可能都检验过,这是最弱的逻辑覆盖准则;分支覆盖或判定覆盖:要求程序中所有判定的分支尽可能得到检验;条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验;判定/条件覆盖:同时考虑条件的组合值及判定结果的检验;路径覆盖:只考虑对程序路径的全面检验。取得测试覆盖的方法——程序插装白盒测试既然黑盒测试是测试软件与需求的一致性,为什么还要白盒测试?编程是容易发生逻辑错误和作出不正确的假设如对执行路径假设不正确,会产生设计错误,白盒测试能发现这样的错误录入错误是随机的黑盒测试与白盒测试的比较黑盒测试白盒测试测试规划根据用户的规格说明,即针对命令、信息、报表等用户界面及体现它们的输入数据与输出数据之间的对应关系,特别是针对功能进行测试。根据程序的内部结构,比如语句的控制结构,模块间的控制结构以及内部数据结构等进行测试。特点优点能站在用户立场上进行测试。能够对程序内部的特定部位进行覆盖测试。缺点•不能测试程序内部特定部位。•如果规格说明有误,则无法发现。•无法检验程序的外部特性。•无法对未实现规格说明的程序内部欠缺部分进行测试。方法举例基于图的测试等价类划分边值分析比较测试语句覆盖判定覆盖条件覆盖判定/条件覆盖基本路径覆盖循环覆盖模块接口测试测试阶段与测试方法测试阶段目的执行者测试方法单元测试查找独立模块中逻辑错误、数据错误和算法错误软件工程师白盒测试集成测试查找模块之间接口错误软件工程师测试人员白盒测试、自顶向下或自底向上确认测试确认软件是否满足软件需求测试人员黑盒测试模拟用户操作系统测试对系统中各个组成部分进行综合性检验测试人员黑盒测试模拟用户操作回归测试确认软件变更后是否仍满足软件需求测试人员黑盒测试模拟用户操作α测试与β测试用户黑盒测试模拟用户操作验收测试确认软件是否满足用户需求用户、项目组测试人员黑盒测试模拟用户操作1.3测试信息来源基于软件规约生成测试用例基于软件设计生成测试用例基于程序生存测试用例1.3小结软件测试主要工作就是确定合适的测试用例;测试过程贯穿在整个软件开发活动中;测试方法:动态、静态、黑盒、白盒等2软件测试用例设计-黑盒测试2.0概述2.1等价类划分2.2因果图2.3边值分析2.4判定表驱动测试2.5正交实验设计法2.6自动测试用例生成方法2.7小结2.0黑盒测试概述这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?黑盒测试目标用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的。假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的测试数据组:232×232=264如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年。2.1测试用例设计方法-等价类划分选取测试用例等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。在分析需求规格说明的基础上划分等价类,列出等价类表。2.1.1等价类所谓等价类是指某个输入域的集合。它表示,如果用集合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,那么使用集合中的其它输入条件进行测试也不可能发现错误。也就是说,对揭露程序中的错误来说,集合中的每个输入条件是等效的。有效等价类和无效等价类在考虑等价类时,应该注意区别两种不同的情况:*有效等价类:有效等价类指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以有一个,也可以是多个。*无效等价类:无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。等价类输入条件有效等价类无效等价类输入条件:…项数可以从1到999…有效等价类为“1〈项数〈999”无效等价类为“项数1”及“项数999”2.1.2经典例子“输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形及等边三角形时,分别做计算…”注意输入和输出条件有效等价类型号码无效等价类号码121314151617整数1a为非整数一边为非整数b为非整数c为非整数a,b为非整数两边为非整数b,c为非整数a,c为非整数三边a,b,c均为非整数18192021222324三个数2只给a只给一边只给b只给c只给ab只给两边只给b,c只给ac给出三个以上25262728293031非零数3a为0一边为零b为0c为0a,b为0二边为零b,c为0a,c为0三边a,b,c均为032333435363738输入条件输入三个整数正数4a0一边0b0c0a0且b0二边0a0且c0b0且c0三边均0:a0且b0且c0394041424344构成一般三角形a+bcb+caa+cb567a+b0a+b=0b+cab+c=aa+cba+c=b45构成等腰三角形a=bb=c且两边之和a=c大于第三边8910输出条件构成等腰三角形a=b=c11表4.1例1的等价类型表有效等价类覆盖有效等价类的测试用例:abc覆盖等价类号码345(1)--(7)445(1)--(7),(8)455(1)--(7),(9)545(1)--(7),(10)444(1)--(7),(11)无效等价类2.1.3问题讨论问题:给出下面的有效和无效等价类输入条件:“…统计全国各省、市、自治区的人口…”输入条件:“标识符应以字母开头…”输入条件:长度为1-20的字符串输入条件:数据库中的值域,CHAR(20),NOTNULL2.2测试方法-因果图采用因果图方法(Cause一EffectGraphics)能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。2.2