《软件工程系统测试.ppt》由会员分享,可在线阅读,更多相关《软件工程系统测试.ppt(85页珍藏版)》请在优知文库上搜索。
1、软件实现软件实现2软件测试软件测试3软件测试基本概念软件测试基本概念什么是软件测试?目标是什么什么是软件测试?目标是什么? ?测试步骤测试步骤测试阶段信息流测试阶段信息流4软件测试的概念软件测试的概念4.4.软件测试的工作量一般占软件开发总工作量的软件测试的工作量一般占软件开发总工作量的40%40%以上以上, ,有的测试成本占到其它步骤总成本的有的测试成本占到其它步骤总成本的3 35 5倍。倍。1.1.软件测试是按照特定的规则,软件测试是按照特定的规则,发现软件错误的发现软件错误的过程;过程;2.2.软件测试是对软件规格说明、设计和编码的最软件测试是对软件规格说明、设计和编码的最后复审;后复审
2、;3.3.软件测试在软件生存周期中横跨两个阶段:软件测试在软件生存周期中横跨两个阶段:模模块和单元测试在编码阶段块和单元测试在编码阶段,综合测试在独立的综合测试在独立的测试阶段测试阶段;5软件测试的目标软件测试的目标1.1. 软件测试是为了发现错误而执行程序的过程软件测试是为了发现错误而执行程序的过程; ; 2.2. 测试是程序的执行过程,目的在于发现错误;测试是程序的执行过程,目的在于发现错误;3.3. 软件测试中需要数据软件测试中需要数据, ,即为测试而精心设计的即为测试而精心设计的测试测试用例用例, ,利用测试用例去运行程序利用测试用例去运行程序, ,帮助发现程序错误帮助发现程序错误;
3、;4.4. 一个好的一个好的测试用例测试用例在于能发现至今未发现的错误;在于能发现至今未发现的错误;5.5. 一个成功的测试是发现了至今未发现的错误的测试。一个成功的测试是发现了至今未发现的错误的测试。6.6. 软件测试绝对不是要证明程序的正确性软件测试绝对不是要证明程序的正确性, , 也证明不也证明不了程序的正确性了程序的正确性. .6软件测试与软件调试的区别软件测试与软件调试的区别内容内容软件测试软件测试软件调试软件调试目的目的从一个侧面证明程序员的失败;从一个侧面证明程序员的失败;证明程序员的正确;证明程序员的正确;方法方法从已知条件开始,使用预先定义的程序,从已知条件开始,使用预先定义
4、的程序,且有预知的结果,不可预见的仅是程序是且有预知的结果,不可预见的仅是程序是否通过测试;否通过测试;从不可知内部条件开始,除从不可知内部条件开始,除统计性调试外,结果是不可统计性调试外,结果是不可预见的;预见的;约束约束有计划并且要进行测试设计;有计划并且要进行测试设计;不受时间约束;不受时间约束;过程过程发现错误、改正错误、重新测试的过程;发现错误、改正错误、重新测试的过程;是一个推理的过程;是一个推理的过程;方式方式执行是有规程的;执行是有规程的;执行要求程序员进行必要的执行要求程序员进行必要的推理;推理;测试测试人员人员由独立的测试组在不了解软件设计的由独立的测试组在不了解软件设计的
5、条件下完成;条件下完成;由了解详细设计的程序员完由了解详细设计的程序员完成;成;工具工具大多数测试的执行和设计可由工具支持。大多数测试的执行和设计可由工具支持。程序员能用的工具主要是调程序员能用的工具主要是调试器。试器。7软件测试的原则软件测试的原则(1)3.3.进行回归测试进行回归测试, ,对程序的任何修改对程序的任何修改, ,使用以前测试使用以前测试用例,重新进行测试用例,重新进行测试, ,有助于发现修改程序引起有助于发现修改程序引起的新错误。的新错误。1.设计测试用例设计测试用例,要给出测试的要给出测试的预期结果预期结果。一个测试。一个测试用例,必须由两部分组成:对用例,必须由两部分组成
6、:对输入数据的描述输入数据的描述及其及其这些输入数据所产生的程序这些输入数据所产生的程序预期结果的精确描述预期结果的精确描述。2.设计设计非法输入用例非法输入用例。当有非法输入时,测试程序。当有非法输入时,测试程序是否能够拒绝接受那些非法输入并给出提示信息。是否能够拒绝接受那些非法输入并给出提示信息。8软件测试的原则软件测试的原则(2)4.4.集中测试容易出错的程序段集中测试容易出错的程序段。测试统计结果表明:。测试统计结果表明:一段程序中发现的错误越多,则其中存在错误的概一段程序中发现的错误越多,则其中存在错误的概率也就越大。为了提高测试效率,在深入测试时,率也就越大。为了提高测试效率,在深
7、入测试时,要集中测试那些容易出错的程序段。要集中测试那些容易出错的程序段。5.5.开发小组与测试小组应分离开发小组与测试小组应分离,二者在思想上、方法,二者在思想上、方法上是不一样的,前者是上是不一样的,前者是建设性建设性的,后者是的,后者是“破坏性破坏性”的。因此二者分离是成立测试小组的基本要求。的。因此二者分离是成立测试小组的基本要求。9软件测试方法和技术软件测试方法和技术软件测试软件测试人工测试人工测试(代码复审代码复审)机器测试机器测试(动态测试动态测试)代码会审代码会审走查和排练走查和排练办公桌检查办公桌检查黑盒测试技术黑盒测试技术白盒测试技术白盒测试技术10软件测试方法和技术软件测
8、试方法和技术1.1.人工测试人工测试 代码复审采用人工方式进行代码复审采用人工方式进行, ,目的在于检查程目的在于检查程序的静态错误。序的静态错误。2.2.机器测试机器测试(1)(1)在设定的测试数据上执行被测程序的过程在设定的测试数据上执行被测程序的过程, ,也称也称为为动态测试动态测试; ;(2)(2)动态测试包括动态测试包括: :测试用例、执行被测程序和分析测试用例、执行被测程序和分析执行结果并发现错误的过程。执行结果并发现错误的过程。11软件测试步骤软件测试步骤步骤步骤测试内容测试内容时间时间单元单元测试测试 将每一个模块作为一个单独的测试单元,保证每个模块作将每一个模块作为一个单独的
9、测试单元,保证每个模块作为一个单元能正确运行。为一个单元能正确运行。编码编码阶段阶段子系统子系统测试测试 将经过单元测试的模块放在一起形成一个子系统来测试,将经过单元测试的模块放在一起形成一个子系统来测试,以测试模块间的接口正确性作为主要任务。以测试模块间的接口正确性作为主要任务。集中测集中测试阶段试阶段系统系统测试测试 将经过测试的子系统装配成一个完整的系统来测试,检验将经过测试的子系统装配成一个完整的系统来测试,检验系统是否确实能实现需求规格说明书中的功能,以及系统的系统是否确实能实现需求规格说明书中的功能,以及系统的动态特征是否符合预定要求。系统测试是指整个计算机系统动态特征是否符合预定
10、要求。系统测试是指整个计算机系统( (包括软硬件包括软硬件) )的测试的测试, ,可与系统的安装和验收相结合进行。可与系统的安装和验收相结合进行。验收验收测试测试 在用户的参与下,把软件系统作为单一的实体进行测试,在用户的参与下,把软件系统作为单一的实体进行测试,使软件系统能满足用户的需要。测试内容与系统测试基本相使软件系统能满足用户的需要。测试内容与系统测试基本相同。同。验收验收阶段阶段平行平行测试测试 新旧两个系统同时运行进行比较,避免风险的同时给用户新旧两个系统同时运行进行比较,避免风险的同时给用户对新系统一段熟悉的时间。对新系统一段熟悉的时间。运行运行阶段阶段12单元测试单元测试 在单
11、元测试期间着重从下述在单元测试期间着重从下述5 5个方面对模块进个方面对模块进行测试。行测试。1. 1. 模块接口模块接口 主要检查下述几个方面:参数的主要检查下述几个方面:参数的数目数目、次序次序、属性或单位系统属性或单位系统与变元是否一致;是否修改了只与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个作输入用的变元;全局变量的定义和用法在各个模块中是否一致。模块中是否一致。2. 2. 局部数据结构局部数据结构3. 3. 重要的执行通路重要的执行通路134. 4. 出错处理通路出错处理通路 当评价出错处理通路时,应该着重测试下当评价出错处理通路时,应该着重测试下述一些可能
12、发生的错误:述一些可能发生的错误:(1) (1) 对错误的描述对错误的描述是难以理解的;是难以理解的;(2) (2) 记下的错误与实际遇到的错误记下的错误与实际遇到的错误不同不同;(3) (3) 在对错误进行处理之前,错误条件已经引起在对错误进行处理之前,错误条件已经引起系统干预系统干预;(4) (4) 对错误的对错误的处理不正确处理不正确;(5) (5) 描述错误的信息不足以帮助确定造成错误的描述错误的信息不足以帮助确定造成错误的位置。位置。5. 5. 边界条件边界条件14集成测试集成测试n不论是子系统测试还是系统测试,都兼有检测和组不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通
13、常称为装两重含义,通常称为集成测试集成测试。n由模块组装成程序时有两种方法:由模块组装成程序时有两种方法: 1、非渐增式测试方法、非渐增式测试方法 2、渐增式测试方法:、渐增式测试方法: a.a.自顶向下自顶向下 b.b.自底向上自底向上。15自顶向下集成自顶向下集成n方法方法: : 从从主控制模块主控制模块开始,沿着程序的控制层次开始,沿着程序的控制层次向下移动向下移动,逐渐把各个模块,逐渐把各个模块结合结合起来。在把附起来。在把附属于(及最终附属于)主控制模块的那些模块属于(及最终附属于)主控制模块的那些模块组装组装到程序结构中去时,或者使用到程序结构中去时,或者使用深度优先深度优先的的策
14、略,或者使用策略,或者使用宽度优先宽度优先的策略。的策略。16自顶向下集成自顶向下集成把模块结合进软件结构的具体过程由下述把模块结合进软件结构的具体过程由下述4 4个步骤完成:个步骤完成:第一步第一步,对主控制模块进行测试,测试时用存根程序,对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;代替所有直接附属于主控制模块的模块;第二步第二步,根据选定的结合策略,根据选定的结合策略( (深度优先或宽度优先深度优先或宽度优先) ),每次用一个实际模块代换一个存根程序每次用一个实际模块代换一个存根程序( (新结合进新结合进来的模块往往又需要新的存根程序来的模块往往又需要新的存根
15、程序) );第三步第三步,在结合进一个模块的同时进行测试;,在结合进一个模块的同时进行测试;第四步第四步,为了保证加入模块没有引进新的错误,可能,为了保证加入模块没有引进新的错误,可能需要进行回归测试需要进行回归测试( (即,全部或部分地重复以前做即,全部或部分地重复以前做过的测试过的测试) )。17自顶向下结合自顶向下结合18自底向上自底向上集成集成实现自底向上结合策略的步骤:实现自底向上结合策略的步骤:第二步第二步,写一个驱动程序,写一个驱动程序( (用于测试的控制程序用于测试的控制程序) ),协调测试数据的输入和输出;协调测试数据的输入和输出;第三步第三步,对由模块组成的子功能族进行测试
16、;,对由模块组成的子功能族进行测试;第一步第一步,把低层模块组合成实现某个特定的软件子,把低层模块组合成实现某个特定的软件子功能的族;功能的族;19 第四步第四步,去掉驱动程序,沿软件结构自下,去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大向上移动,把子功能族组合起来形成更大的子功能族。的子功能族。 上述第二步到第四步实质上构成了一个循上述第二步到第四步实质上构成了一个循环。环。 自底向上集成自底向上集成20自底向上结合自底向上结合21不同集成测试策略的比较不同集成测试策略的比较 一般说来,一种方法的优点正好对应于另一种一般说来,一种方法的优点正好对应于另一种方法的缺点。方法的缺点。 自顶向下测试方法的主要优点自顶向下测试方法的主要优点:不需要测试驱动:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。要功能,而且能在早期发现上层模块的接口错误。 自顶向下测试方法的主要缺点自顶向下测试方法的主要缺点:需要存根程序,:需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中