软件质量保证与测试课内实验指导书白盒测试黑盒测试_第1页
软件质量保证与测试课内实验指导书白盒测试黑盒测试_第2页
软件质量保证与测试课内实验指导书白盒测试黑盒测试_第3页
软件质量保证与测试课内实验指导书白盒测试黑盒测试_第4页
软件质量保证与测试课内实验指导书白盒测试黑盒测试_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课内试验指导书第一章白盒测试白盒测试背景学问构造性测试是知道产品内部工作过程,检测产品内部动作是否依据规格说明书的规定正常进展。构造性测试允许测试人员利用程序内部的规律构造及有关信息,设计或选择测试用例,对程序全部规律路径进展测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态全都。1.1.2规律掩盖时,选用测试用例执行程序规律路径的方法。规律掩盖按掩盖程度由低到高大致分为以下儿类:①.语句掩盖:设计假设干测试用例,使程序中每一可执行语句至少执行一次;②.推断掩盖:设计用例,使程序中的每个规律推断的取真取假分支至少经受一次;③.条件掩盖:设计用例,使推断屮的每个条件的可能取值至少满足一次;/条件掩盖:设计用例,使得推断中的每个条件的全部可能结果至少消灭一次,而且推断木身全部可能结果也至少消灭一次;一次;明显,满足⑤的测试用例也肯定是满足②、③、④的测试用例。⑥.路径掩盖。设计足够的测试用例,使程序的每条町能路径都至少执行一次。假设把路径掩盖和条件组介掩盖结介起来,可以设计出检错力量更强的测试数据川例。1.1.2 根本路径测试假设把掩盖的路径数压缩到肯定限度内,例如,程序中的循环体只执行零次和一次,就成为根本路径测试。它是在程序掌握流图的根底上,通过分析掌握构造的环路简单性,导出根本对执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。掌握流图是描述程序掌握流的一种图示方法。符号O称为掌握流图的一个结点,一组顺序处理框可以映射为一个单一的结点。掌握流图屮的箭头称为边,它表示了掌握流的方向,在选择或多分支构造中分支的会聚处,即使没有执行语句也应当有一个会聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。②计算程序坏路简单性这是确保程序中每个可执行语句至少执行--次所必需的测试用例数目的上界。所谓独立路径,是指包括一组以前没冇处理的语句或条件的一条路径。只要设计出的测试用例分支和取假分支也能得到测试。根本路径集不是唯一的,対于给定的掌握流图,可以得到不同的根本路径集。通常环路简单性可用以下三种方法求得。*将环路简单性定义为掌握流图屮的区域数。*设左为掌握流图的边数,N为图的结点数,则立义环路复朵性为V(G)=E—N+2。*PV(G)=P+lo③导出测试用例利用规律掩盖方法牛成测试用例,确保根本路径集中每条路径的执行测试题目三角形问题三角形问题的描述三角问题承受三个整数a,b和c作为输入,用作三角形的边。程序的输入是由这三条边确定的三角形类型:等边三和形、等腰三和形、不等边三和形或非三和形。三角形问题描述的细化>三角形问题承受三个整数a,b和c作为输入,用作三角形的边。整数a,b,c必需满足以下/cl.lWaW200“c2.1WbW200/ c3.1WCW200/c4.a<b+c丁c5.bva+c丁c6.c<a+b>程序的输出是有着三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。>假设输入值没有满足这些条件中的任何一•个,则程序会通过输出消息来进展通知。a,bccl,c2和c3,则给出以下四种相互排斥输出中的一个:>假设三条边相等,则程序的输出是等边三和形;>假设恰好有两条边相等,则程序的输出是等腰三角形;>假设没冇两条边想相等,则程序输出的是不等边三角形。c4,c5c6中有一个条件不满足,则程序输出的是非三角形。主要代码见附件中Project要求

条件:依据以上的C++代码画出该程序的流程图;、条件判定掩盖以及条件组介掩盖;路径;依据根本路径掩盖法设计测试用例,掩盖3中得到的根本路径;NextDate问题NextDate问题的描述NextDate是一个有三个变量〔月份、日期和年〕的函数。函数返冋输入日期厉而的那个日期。变量月份、日期和年都具有整型值,则满足一下条件:/cl.112/c2.1Fl31/c3.18122023FI期、月份和年的无效输入值的响应定义。还可以对无效组介定义NextDate问题的主要代码见附件中的project要求依据以上的C++代码画出该程序的流程图;、条件判定掩盖以及条件组合掩盖;径;依据基木路径掩盖法设计测试用例,掩盖3屮得到的基木路径;其次章黑盒测试2.1 黑盒测试的背景学问看作一个不能翻开的黑盒子,在完全不考虑程序内部构造和内部特性的状况下,在程序接口进展测和软件功能进展测试。2.1.1 等价类划分法筹价类划分的方法是把程序的输入域划分成假设干局部〔子集〕,表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。划分等价类和无效等价类。效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类:与有效等价类的定义恰巧和反。受意外的考验。这样的测试才能确保软件具有更高的町靠性。划分等价类准则划分等价类的方法:下而给出六条确定等价类的原则.①在输入条件规定了取值范围或值的个数的状况下,则可以确立一个有效等价类和两个无效等价类.② 在输入条件规定了输入值的集合或者规定了“必需如何”的条件的状况下,nJ确立一个有效等价类和一个无效等价类.③ 在输入条件是一个布尔量的状况下,可确定一个有效等价类和一个无效等价类.④ 〔假定n个可确立n个有效等价类和一个无效等价类.⑤ 在规定了输入数据必需遵守的规章的状况下,可确立一个有效等价类〔符介规章〕个无效等价类〔从不同角度违反规章〕.⑥ 一步的划分为更小的等价类.设计测试用例的步骤在确立了等价类后,可建立等价类表,列出全部划分出的等价类:例:① 为每一个等价类规定一个唯—•的编号;② 设计一个的测试用例,使其尽可能多地掩盖尚未被掩盖地冇效等价类,重复这一步。直到全部的有效等价类都被掩盖为止;③ 冇的无效等价类都被掩盖为止。2.1.2 边界值分析法边界值分析是通过选择等价类边界的测试用例。边界值分析法不仅重视输入条件边界,而且也必需考虑输出域边界。它是对等价类划分方法的补充。边界值分析方法的考虑:发生在输入输出范围的内部.因此针对各种边界状况设计测试用例,可以杳出更多的错使用边界值分析方法设计测试用例,首先应确立边界状况.通常输入和输出等价类的边界而不是选取等价类中的典型值或任意值作为测试数据.于边界值分析方法选择测试用例的原则:II边界的值作为测试输入数据;多一的数作为测试数据;③•依据规格说明的每个输出条件,使用前面的原则①;④.依据规格说明的每个输出条件,应用前面的原则②;最终一•个元素作为测试用例;©.例;⑦.分析规格说明,找出其它町能的边界条件。边界值分析中的两种假设边界值分析中基于两种假设:依据缺陷的数暈边界值分析分为两类:单缺陷假设和多缺陷假设;依据强健性的考虑边界值分析分为两类:非强健性分析和强健性分析。测试题目三角形问题问题的描述如上一章中1.2.1节的描述NextDate问题问题的描述如上一章中122节的描述黑盒测试要求依据题目中给出的三角形问题和NextDate问题的需求说明书,依据等价类划分法,设计测试用例,掩盖全部的等价类;依据题目小给出的三角形问题和NextDate问题的需求说明书,依据边界值分析法,设计测试用例,进展功能性测试。边界值分析法需要包含:小缺陷假设非强健性假设;多缺陷假设非强健性假设;单缺陷假设假装性假设;最坏状况测试。第三章自动测试工具—Nimit 的使用NUnit是一个单元测试框架,特地针对于.NET来写的。其实在前面冇JUnit(Java),CPPUnit(C++),他们都是xUnit的一员。最初,它是从JUnit而來。现在的版本是2.5.2。接下来我所用的都是基于这个版本。NUnit最初是由JamesW.Newkirk,AlexeiA.Vorontsov和PhilipA.Craig,后来开发团队渐渐庞人起来。在开发过程中,KentBeckErichGamma2位牛人也供给了很多帮助。看來对于NUM还真是下了一番力气了NUnit是xUnit家族种的笫4个主打产品,完全由C#语言來编写,并•且编写时充分利用了很多。NET的特性,比方反射,客户属性等等。最重要的一点是它适介于全部.NET语言。NUnit 介绍3.1NUnit运行效果从中我们町以格外简洁觉察,右边是个状态条,图13.1NUnit运行效果通过上面的图片,我想你对NUnit冇个总的了解了.接下來还是分为2个局部,一是NUnit的布局,另外一局部就是它的核心概念.NUnitGUI的布局.度条的颜色反映了测试执行的状态:绿色描述目前所执行的测试都通过黄色意味某些测试无视,但是这里没有失败红色表示有失败底部的状态条表示下而的状态:状态•说明白现在运行测试的状态。当所冇测试完成时,状态变为Completed.^测试中,Running:<test-name>〔<test-name>是正在运行的测试名称〕。TestCases说明加载的程序集中测试案例的总个数。这也是测试树里叶子节点的个数。TestsRun已经完成的测试个数。Failures到目前为止,全部测试中失败的个数.Time显示运行测试时间〔以秒计〕File主菜单有以下内容:NewProject允许你创立一个工程。工程是一个测试程序集的集合。这种机制让你组织多个测试程序集,并把他们作为一个组对待。Open加载一个的测试程序集,或一个以前保存的NUnitI程文件。CloseNUnit工程。SaveNunitI程到一个文件。假设正工作单个程序集,本菜单项允许你创立一个的NUnit工程,并把它保存在文件里。SaveAsNUnit工程作为一个文件保存。ReloadNUnit_E程。NUnit-Gui口动监测现加载的测试程序集的变化。当程序集变化时,测试运行器重加载测试程序集。〔集不会重加载。在测试运行Z间测试程序集仅可以重加载。一个忠告:假设测试程序集依靠另依靠的程序集变化可见。RecentFiles5NUnitNUnitT程〔这个列表在Windows注册表,由每个用户维护,因此假设你共享你的PC,你仅看到你的测试〕。最近程序OptionsTool主菜单。ExitLBView菜单有以卜•内容:Expand一层层扩呈现在树中所选节点Collapse折叠现在树中选择的节点ExpandAll递归扩展树中所选节点后的全部节点CollapseAll递归折叠树中所选节点后的全部节点ExpandFixturesfixture的节点CollapseFixturesfixture的节点Properties显示树中现所选节点的属性Tools菜单由这些项:SaveResultsasXMLXML文件保存运行测试的结杲OptionsNUnit的行为现在看看右边,你己经生疏Rim按钮和进度条。这里还有一个紧跟Run按钮的Stop按钮:点击这个按钮会终止执行正运行的测试。进度条下面是一个文本窗口,在它上方,由以下4个标签:ErrorsandFailures窗口显示失败的测试。在我们的例了里,这个窗口定空。TestsNotRun窗口显示没有得到执行的测试。Console.Error窗口显示运行测试产牛的错误消息。这些此消息是应用程序代码使用Console.Error输出流可以输出的。Console.Out窗口显示运行测试打印到Console.Error输出流的文本消息。3.2 —些常见属性NUnit里,有以下几种属性:TestFixtureTest下而对每种属性 讲解。TestFixtureAttribute本属性标记一个类包存测试,固然setup和teardown方法可有可无。〔关于setup和teardown方法在后面介绍〕做为一个测试的类,这个类还有一些限制:必需是Public,否则NUnil看不到它的存在。它必需有一个缺省的构造函数,否则是NUnit不会构造它。构造函数应当没有任何副作用,由于NUnit在运行吋常常会构造这个类屡次,假设要是构造函数要什么副作用的话,那不是乱了。usingSystem;usingNUnit.Framework;namespaceMyTest.Tests[TestFixture]publicclassPriceFixtureTestAttributeTestTestFixture)的某个方法是可以测试的。为了和从前的版木向后兼容,头4个字符(“tes这个测试方法可以定义为:publicvoidMethodName

人小写。(参看hg///test.html)对的话,这个方法不会消灭在测试方法列表中。也就是说在NUnit的界面左边的工作域内,看不到Public。例如:usingSystem;usingNUnit Franeviork;namespaceMyTest.Tests<[TestFixture]publicclassSuccessTests[Test]publicuoidTest1//NUnit中,用Assert〔断言〕进展比较,Assert是一个类,它包括以下方法:AreEqual,AreSame,Equals,Fail,Ignore,IsFalse,IsNotNull,具体请参看NUnit的文档。在NETNUnitVisualStudio工程MicrosoftVisualStudio.NETVisualC#工程作为工程类型,ClassLibrary作为模板。将丄程命名为NUnitQuickStart. 图4-1是一个描述本步骤的VisualStudio.NET。增加一个NUnit框架引用在MicrosoftVisualStudio.NET里创立这个例子时,你需要增加一个NUnit.framework.dll引SolutionExplorer右击引用,然后选择增加引用NUnit.framework组件,在AddReferenceSelectOK按钮。为工程增加一个类usingSystem;usingNUnit.Framework;3namespaceNUnitQuickStart71[TestFixture]publicclassNumersFixture71<[Test]10I11白public10I11白{inta=l;intb=2;intsum=a+b;Assert.AreEqual(sum,3);16rL}19建立你的VisualStudio工程,使用NUnit Gui测试从程序・>NUnit2.2翻开NUnit・gui,加载本本工程编译的程序集.VisualStudio.NET中白动运行NUnit・Gui,NUnit・Gui作为你的启动程序:SolutionExplorerNunitQuickStart工程。在弹出菜单中选择属性。在显示的对话框的左面,点击ConfigurationProperties夹ConfigurationPropertiesDebuggingoStartActionProgramDebugMode值。Apply按钮设置NUnit-gui.exe作为StartApplicatio0,你既可以键入nunit-gui.exe的全路径,也可使用扫瞄按钮•来指向它。以下图中描述了如何将NUniJGui作为工程的测试运行器NIJnitQuick^taHNIJnitQuick^taHProperty«Configuration:Active(Debug)OCorrmcnPropertes4ConfigurationProperbesOuid*Dcbu^gngAdvanced

曰DebuggersEnabeEnabeASPDebuggngEiIHUHA.MFTDt-bayyilyEnableurmanagedDebuggingEnabaSQLDebujonaFateFH“FdbeFalse

GorrigurationManager...DebtgMedeStartAppication5tartURLStartDebtgMedeStartAppication5tartURLStartStartOptionsCcmnandLineArrjLmenkWorkingDirectoryAlwo/sUco[ntomaExpioiorProgramD:\software\Small5oftwareNUnit.jyTruoStartApplicationIndicatesthepugroinUalshucldbestalledwhentheprcjcxlisJcbuyocd.Forcxanpleyourriylitrunopre-bultclientthatconsuniesyourClass…确定|确定|取消I a)|应用1帮肋编译运行测试.现在编译solutiono成功编译后,开头应用程序。NUnit-Gui测试运行器消灭。当你笫一次开头NUnit-Gui,它翻开时没有测试加载。从File菜单项选择择Opm,扫瞄NUnitQuickStart.dll 载了测试的程序集,测试运行器为加载的程序集的测试产生一个可见的表现。在例子屮,测试程序集仅有一个测试,测试程序集的构造如卜•图所示:按Run按钮。树的节点变为绿色,而且测试运行器窗口上的进度条变绿,绿色代农成功通过。3.4 其它一些核心概念NUnit特性和功能。TestFixture,Test,Assert3个最根本的特征,我们可以用这些特性进展程序员测试了。但是有的时候,你觉得这3个远远不够,比方有的时候翻开我想无视某些测试,又应当如何去完成呢?不用担忧,NUnit己经有这样的功能了。SetUp/TearDown 属性testfixture定义里,testfixture的测试是一组常规运行时资源.在测试完成之后,或化。NUnit使用2个额外的属性:SetUp和TearDown,就支持这种常规的初始化/请除.上面的例子來描述这个功能。现在增加乘法:usingSysten;usingNUnit.Framework;namespaceNUnitQuickStart[TestFixture]publicclassNunberFixture[Test]publicuoid AddTwoNumbersinta=1;intb=2;intsum=a+b;[Test]publicuoidMultiplyTwoNunbers{inta=1;intb=2;intproduct=a*b;Assert.AreEqual(2,product);|我们认真一看,有重复的代码,如何去除重复的代码呢?我们可以提取这些代码到一个独立的方法,然后标志这个方法为SetUp 属性。这样2个测试方法可以共享对操作数的初始化了,这里是改动后的代码:usingSystem;usingNUnit.Framework;namespaceNUnitQuickStart[TestFixture]publicclassNumberFixtureprivateinta;privateintb;[Setup]publicuoidInitializeOperandsa=1;b=2;[Test]publicuoidMultipl^TwoNumbersintproduct=a*b;Assert.AreEqual(2,product);这样NUnit将在执行每个测试前执行标记SetUp属性的方法.在木例屮就是执行InitializeOperandspublic,不然就会有以下错误:InvalidSetuporTearDownmethodsignatureExpectedException0除,抛出的特别利.NET文档描述的一样。参看以下源代码:■[Test][ExpectedException(typeof(DiuideByZeroException))]publicuoidDiuideByZerointzero=0;intinfinity=a/zero;Assert.Fail(“Shouldhauegottenanexception“);除了[Test]属性Z外,DivideByZer方法有另外一个客户属性:ExpectedException在这个属性里,你可以在执行过程中捕获你期望的特别类型,例如:在本例就是用这个属性帮助我们写程序员测试验证边界条件(BoundaryConditions)oIgnore属性成,这个测试止在重构Z中,这个测试的需求不是太明确。但你有不想破坏测试,不然进度条可是Ignore属性。你可以保持测试,但又不运行它们。让我们标记MultiplyTwoNumbersIgnore属性:[Test][Ignore(““Multiplicationisignored11)]publicuoidMultipl^TwoNumbersintproduct=a*b;Assert.AreEqual(2,product);|运行测试,现在产牛了下面的输出:Ignore属性可以附加到-个独立的测试方法,也可以附加到整个测试类(TestFixture).假设IgnoreTestFixture,fixture的测试都被无视.344TestFixtureSetUp/TestFixtureTearDown有时,一组测试需要的资源太昂贵。例如,数据库连接对能是一•个关键资源,在一个testfixture的每个测试中,翻开/NUnil有一对类似于前而争论的SetUp/TearDown的属性:TestFixtureSetUpITestFixtureTearDowm正testfixture初始化/释放资源方法一次的方法。例如,假设你想为全部testfixture的测试共享一样的数据库连接对彖,我们町以写一个翻开数据库连接的方法,标记为TestFixtureSetUp属也编写另外一个关闭数据库连接的方法,标记TestFixtureTearDo属性。这里是描述这个的例子。usingNUnit.Framework;[TestFixture]publicclassDatabaseFixture{[TestFixtureSetUp]publicuoidOpenConnection[TestFixtureTearDown]publicuoidCloseconnection{//...>[Setup]publicuoidCreateDatabaseObjects[TearDown]publicuoidDeleteDatabaseObjects//...}[Test]publicuoidReadOneObject<>[Test]publicuoidReadMani^Objects//第四章WinRunner 的使用凡问到Mercury公司的测试匚具,每个人都会说Winrunner记录的是询台界而的操作过程,是功能测试工具,;Loadrunnerii!员的心中,Winrunner和Loadrunner已经被很明确地界定开来,询者只能做功能测试,而后者只能进展性能测试。但是出乎人家的意料,Winrunner也能进展性能测试,只不过这不是一种常规的测试方法,不为宽阔测试人员使用。但是不被广泛使用并不是代表不行,前一阶段,我就在某系统上使用Winrunner进展了一次性能测试,证明白该测试方法的可行性。下面我将介绍使用Winrunner进展性能测试的工作原理,具体介绍使用Winrunner进展性能Winrunner进展性能测试。使用Winrunner进展性能测试的原理程序的运行状况和系统的承载状况。Winruner是功能测试工具,它主要的功能是记录用八的界面操作。假设使用Winrunner进展性能测试,模拟大量的客户前台界而操作的状况〔Loadrurmer只是记录后台程序的交互状况〕,那不是真止到达了性能测试的目的了么。Winrunner是没冇方法模拟大量用户的,但是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论