Android软件测试理论与方法解析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Android软件测试理论与方法解析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 软件 测试 理论 方法 解析 课件
- 资源描述:
-
1、软件测试的目标与原则软件测试的目标与原则Myers在其软件测试著作中对软件测试的目标提在其软件测试著作中对软件测试的目标提出以下观点:出以下观点:软件测试是为了发现错误而运行程序的过程;软件测试是为了发现错误而运行程序的过程;一个好的测试用例能够发现至今尚未发现的一个好的测试用例能够发现至今尚未发现的 错误;错误;一个成功的测试是发现了至今尚未发现的错一个成功的测试是发现了至今尚未发现的错 误的测试。误的测试。软件测试的步骤软件测试的步骤q 在本书中,从软件工程的角度:在本书中,从软件工程的角度:将单元测试与详细设计对应起来,即在详细设计阶段就应将单元测试与详细设计对应起来,即在详细设计阶段就
2、应制定出单元测试计划;制定出单元测试计划;而集成测试又称为综合测试,可以把概要设计和集成测试而集成测试又称为综合测试,可以把概要设计和集成测试对应起来,在概要设计阶段就可以制定集成测试计划;对应起来,在概要设计阶段就可以制定集成测试计划;将功能测试、性能(行为)测试、验收测试统称为验收测将功能测试、性能(行为)测试、验收测试统称为验收测试(也称确认测试),与软件系统需求分析阶段对应起来,试(也称确认测试),与软件系统需求分析阶段对应起来,在需求分析阶段就应制定出验收准则和验收测试计划,验在需求分析阶段就应制定出验收准则和验收测试计划,验收测试应提交经用户确认的软件产品;收测试应提交经用户确认的
3、软件产品;最后,将软件、硬件等要素构成一个完整的基于计算机的最后,将软件、硬件等要素构成一个完整的基于计算机的系统,再进行系统测试,使系统测试与系统定义相对应,系统,再进行系统测试,使系统测试与系统定义相对应,即在系统定义阶段就应制定系统测试计划。即在系统定义阶段就应制定系统测试计划。软件测试的步骤软件测试的步骤测试步骤测试步骤部件部件代码代码部件部件代码代码单元测试单元测试单元测试单元测试单元测试单元测试部件部件代码代码集成测试集成测试功能测试功能测试性能测试性能测试验收测试验收测试安装测试安装测试设计设计规格说明规格说明系统系统功能需求功能需求其他其他软件需求软件需求用户需求用户需求规格说
4、明规格说明用户用户环境环境集成后集成后的模块的模块功能功能系统系统验证,验证,生效的生效的软件软件被接受被接受的系统的系统在使用中的系统在使用中的系统测试后测试后的模块的模块软件测试的步骤软件测试的步骤软件工程的开发与测试的关系软件工程的开发与测试的关系系统工程系统工程需求分析需求分析概要设计概要设计设计、编码设计、编码单元测试单元测试集成测试集成测试验收测试验收测试系统测试系统测试测试阶段的信息流测试阶段的信息流测试阶段的信息流测试阶段的信息流测试测试评价评价排错排错可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试结果测试结果错误错误错误统计错误统计预期结果预期结果正确的程序正确的程
5、序可靠性预测可靠性预测14.1.3 测试阶段的信息流测试阶段的信息流q测试的输入流有软件配置和测试配置。测试的输入流有软件配置和测试配置。软件配置由需求规格说明、设计说明、源软件配置由需求规格说明、设计说明、源代码等组成;代码等组成;测试配置包括测试计划、测试用例(其中测试配置包括测试计划、测试用例(其中包括预期的结果)、测试工具等组成。包括预期的结果)、测试工具等组成。测试结果评价测试结果评价经常发现严重的错误并需要修改软件,经常发现严重的错误并需要修改软件,则软件的质量和可靠性一定不高,需要则软件的质量和可靠性一定不高,需要进一步测试;进一步测试;如果测试所发现的错误不多且易于改正,如果测
6、试所发现的错误不多且易于改正,软件功能看起来也较完善,则需考虑两软件功能看起来也较完善,则需考虑两种可能:种可能:1)软件质量和可靠性确实令人满意;)软件质量和可靠性确实令人满意;2)测试不全面,很可能还潜伏着严重错误;)测试不全面,很可能还潜伏着严重错误;如果测试过程没有发现任何错误,则很如果测试过程没有发现任何错误,则很有可能是测试配置不合理。有可能是测试配置不合理。软件测试中常见的错误类型软件测试中常见的错误类型按照错误的影响和造成的后果进行分类,按照错误的影响和造成的后果进行分类,可分为:较小错误,中等错误,较严重可分为:较小错误,中等错误,较严重错误,严重错误,非常严重的错误,最错误
7、,严重错误,非常严重的错误,最严重的错误。严重的错误。按照软件生存周期各个阶段分类,可分按照软件生存周期各个阶段分类,可分为:问题定义错误、需求分析规格说明为:问题定义错误、需求分析规格说明错误、设计错误、编码错误等等。错误、设计错误、编码错误等等。这里重点介绍一种按照错误的性质和范这里重点介绍一种按照错误的性质和范围进行分类的方法,可以将错误分为如围进行分类的方法,可以将错误分为如下几类:下几类:按照错误的性质和范围进行分类按照错误的性质和范围进行分类1功能错误功能错误 需求规格说明错误。主要是指其中有需求规格说明错误。主要是指其中有错误、多余或遗漏的功能,有二义性错误、多余或遗漏的功能,有
8、二义性或自相矛盾。或自相矛盾。设计实现错误。设计或实现的功能不设计实现错误。设计或实现的功能不是规格说明或用户所要求的功能。是规格说明或用户所要求的功能。按照错误的性质和范围进行分类按照错误的性质和范围进行分类2系统错误系统错误 外部接口错误。如与打印机的接口错误。外部接口错误。如与打印机的接口错误。内部接口错误。指各程序模块间的联系存在错内部接口错误。指各程序模块间的联系存在错误。如输入误。如输入/输出、数据保护、子程序访问等。输出、数据保护、子程序访问等。硬件结构错误。如错误地理解硬件结构错误。如错误地理解I/O指令、中断指令、中断处理、设备启动和初始化等而引起的错误。处理、设备启动和初始
9、化等而引起的错误。软件结构错误。由于软件结构不合理或不清晰软件结构错误。由于软件结构不合理或不清晰所引起的错误。往往在系统满载时才能发现。所引起的错误。往往在系统满载时才能发现。操作系统错误。该类错误是由于不了解操作系操作系统错误。该类错误是由于不了解操作系统而引起的,操作系统本身也有错误。统而引起的,操作系统本身也有错误。控制与顺序错误。包括事件的时间顺序不正确、控制与顺序错误。包括事件的时间顺序不正确、等待一个不可能发生的事件等等。等待一个不可能发生的事件等等。资源管理错误。既资源使用不当。资源死锁等。资源管理错误。既资源使用不当。资源死锁等。按照错误的性质和范围进行分类按照错误的性质和范
10、围进行分类3加工错误(算法错误)加工错误(算法错误)计算与操作错误。指计算、函数求值和一般计算与操作错误。指计算、函数求值和一般操作过程中的错误。操作过程中的错误。初始化错误。如忘记了初始化工作区、数据初始化错误。如忘记了初始化工作区、数据区,错误地对循环变量赋初值,不正确的初区,错误地对循环变量赋初值,不正确的初始化等等。始化等等。局部控制和次序错误。如遗漏路径、不可达局部控制和次序错误。如遗漏路径、不可达到的代码段、循环嵌套或终止条件不正确、到的代码段、循环嵌套或终止条件不正确、死循环等等。死循环等等。逻辑错误。如多分支、判断条件不正确等。逻辑错误。如多分支、判断条件不正确等。按照错误的性
11、质和范围进行分类按照错误的性质和范围进行分类4数据错误数据错误 动态数据错误。动态数据错误。静态数据错误。静态数据指直接或间接地出现静态数据错误。静态数据指直接或间接地出现在程序或数据库中的数据,其内容和格式都是在程序或数据库中的数据,其内容和格式都是固定的。因此在内容或格式上都可能存在错误。固定的。因此在内容或格式上都可能存在错误。数据内容错误。是指由于内容被破坏或被错误数据内容错误。是指由于内容被破坏或被错误地解释而造成的错误。地解释而造成的错误。数据结构错误。包括数据结构说明错误和数据数据结构错误。包括数据结构说明错误和数据结构使用错误。结构使用错误。数据属性错误。数据属性是指数据内容的
12、含义数据属性错误。数据属性是指数据内容的含义或语义,如整数、字符等。数据属性错误是指或语义,如整数、字符等。数据属性错误是指对数据属性的错误解释和错误使用而导致的错对数据属性的错误解释和错误使用而导致的错误。误。按照错误的性质和范围进行分类按照错误的性质和范围进行分类5代码错误代码错误 代码错误主要包括语法错误、键入错误、代码错误主要包括语法错误、键入错误、对语句的理解错误等。对语句的理解错误等。例如,例如,Myers(1976)指出,美国第一个)指出,美国第一个去金星的太空任务的失败是由于在一个去金星的太空任务的失败是由于在一个Fortran do循环中缺少一个逗号。循环中缺少一个逗号。软件
13、测试的常用方法软件测试的常用方法1静态测试静态测试静态测试是采用人工检测和计算机辅助静态分静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。析的方法对程序进行检测。人工检测是指靠人工走查程序或评审软件。这人工检测是指靠人工走查程序或评审软件。这种走查与评审主要针对编码的质量和软件开发种走查与评审主要针对编码的质量和软件开发各个阶段的文档,特别是总体设计和详细设计各个阶段的文档,特别是总体设计和详细设计阶段的错误。能发现阶段的错误。能发现30%70%的逻辑设计和的逻辑设计和编码错误。编码错误。计算机辅助静态分析是指利用静态分析软件工计算机辅助静态分析是指利用静态分析软件工具对程序进
14、行静态分析,主要检测变量是否用具对程序进行静态分析,主要检测变量是否用错、参数是否匹配、循环嵌套是否有错、是否错、参数是否匹配、循环嵌套是否有错、是否有死循环和永远执行不到的死代码等等。同时,有死循环和永远执行不到的死代码等等。同时,它还可对程序的特性进行分析。它还可对程序的特性进行分析。软件测试的常用方法软件测试的常用方法2动态测试动态测试 动态测试是指事先设计好一组测试用例,动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。然后通过运行程序来发现错误。动态测试有两种测试方法:动态测试有两种测试方法:黑盒测试;黑盒测试;白盒测试。白盒测试。用黑盒法测试时,必须在所有可能的输入条
15、件和输出条件中确定测试数据。是否要对每个数据都进行穷举测试呢?例如测试一个程序,需输入 3 个整数值。微机上,每个整数可能取值有216个,3个整数值的排列组合数为216216216=24831014。假设此程序执行一次为1毫秒,用这些所有的数据去测试要用1万年!但这还不能算穷举测试,还要输入一切不合法的数据。可见,穷举地输入测试数据进行黑盒测试是不可能的。白盒测试又称为结构测试或逻辑驱动测试,此方法是将测试对象比作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构和相关信息来设计或选择测试用例,对穿过软件的逻辑路径进行测试,可以在不同点检查程序的状态,以确定实际状态与预期状态是否一致。表面看
16、来,白盒测试是可以进行完全的测试的,从理论上讲也应该如此。只要能确定测试模块的所有逻辑路径,并为每一条逻辑路径设计测试用例,并评价所得到的结果,就可得到100%正确的程序。但实际测试中,这种穷举法是无法实现的,因为即使是很小的程序,也可能会出现数目惊人的逻辑路径。如图所示是一个小程序的流程图。循环小于等于20次 图中,一个圆圈代表一行源程序代码(或一个语句块)。其中有五条通路,左边曲线箭头表示执行次数不超过20次循环。这样的执行路径就有520个,近似为1014个可能的路径。如果1 ms完成一个测试,由此测试程序需3170年。由此看出,即使精确地实现了白盒测试,也不能断言测试过的程序全正确,因为
17、实行穷举测试,由于工作量过大,需用时间过长,实施起来是不现实的。这就是程序测试的经济学问题。既然在测试阶段穷举法测试是不可行的,那么为了节省时间和资源,提高测试效率,就必须精心设计测试用例。需从大量的可用测试用例中精选出少量的测试数据,使得采用这些测试数据能够达到最佳的测试效果,即能高效地、尽可能多地发现隐藏的错误。测试只能发现错误,并不能保证程序没有错误。测试用例测试用例为了进行有效的测试而设计的输入为了进行有效的测试而设计的输入数据和预期的输出结果数据。数据和预期的输出结果数据。测试用例设计的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据。无论是黑盒测试(下节内容介绍),还是白
18、盒测试都不可能进行穷举测试,所以测试用例的设计只能在周期和经费允许的条件下,使用最少数目的测试用例,发现最大数目可能的错误。6种覆盖标准的对比语句覆盖 每条语句至少执行一次 判定覆盖 每个判定的每个分支至少执行一次 条件覆盖 每个判定的每个条件应取到各种可能的值 判定/条件覆盖 同时满足判定覆盖和条件覆盖 条件组合覆盖 每个判定中各条件的每一种组合至少出现一次 弱 发 现 错 误 能 力 强 路径覆盖 使程序中每一条可能的路径至少执行一次 语句覆盖发现错误能力最弱。判定覆盖包含了语句覆盖,但它可能会使一些条件得不到测试。条件覆盖对每一条件进行单独检查,一般情况下它的检错能力较判定覆盖强,但有时
19、达不到判定覆盖的要求。判定/条件覆盖包含了判定覆盖和条件覆盖的要求,但由于计算机系统软件实现方式的限制,实际上不一定达到条件覆盖的标准。条件组合覆盖发现错误能力较强,凡满足其标准的测试用例,也必然满足前4种覆盖标准。前5种覆盖标准把注意力集中在单个判定或判定的各个条件上,可能会使程序某些路径没有执行到。路径测试根据各判定表达式取值的组合,使程序沿着不同的路径执行,查错能力强。但由于它是从各判定的整体组合出发设计测试用例的,可能使测试用例达不到条件组合覆盖的要求。在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。判定结构分析判定结构分析 当程
20、序中判定多于一个时,形成的分支结当程序中判定多于一个时,形成的分支结构可以分为两类:构可以分为两类:嵌套型分支结构嵌套型分支结构和和连锁连锁型分支结构型分支结构。对于嵌套型分支结构,若有对于嵌套型分支结构,若有 n 个判定语句,个判定语句,则存在则存在 n+1 条路径,需要条路径,需要 n+1 个测试用例;个测试用例;对于连锁型分支结构,对于连锁型分支结构,若有若有 n 个判定语句,个判定语句,则存在则存在2n 条路径,需要有条路径,需要有 2n 个测试用例,个测试用例,覆盖所有的路径。覆盖所有的路径。s1s2s3s4p1p2p3s1s2s3s4s5s6p1p2p3 对于连锁型分支结构,当对于
21、连锁型分支结构,当 n 较大时将无法较大时将无法测试。测试。为减少测试用例的数目,可采用试验设计为减少测试用例的数目,可采用试验设计法,抽取部分路径进行测试。法,抽取部分路径进行测试。由于抽样服从均匀分布,因此,在假定各由于抽样服从均匀分布,因此,在假定各条路径的重要性相同,或暂不明确各条路条路径的重要性相同,或暂不明确各条路径的重要性的情况下可以做到均匀抽样。径的重要性的情况下可以做到均匀抽样。如果明确了各条路径的重要性,还可以采如果明确了各条路径的重要性,还可以采取加权的办法,筛选掉部分路径,再用如取加权的办法,筛选掉部分路径,再用如下的措施进行抽样。下的措施进行抽样。设连锁型分支结构中有
22、设连锁型分支结构中有 n 个判定个判定,计算满,计算满足关系式足关系式 n+12m 的最小自然数的最小自然数m;设设t=2m,取正交表,取正交表Lt,并利用它设计测试,并利用它设计测试数据。数据。例如,一个连锁型分支结构中有三个判定例如,一个连锁型分支结构中有三个判定语句语句p1,p2,p3。全部路径是。全部路径是238 条。条。先计算先计算3+12m=t 的的 t,得,得 t=4。取正交。取正交表表L4,把每一列当做一个判定,每一行当,把每一列当做一个判定,每一行当做可取的测试用例,可得做可取的测试用例,可得4个测试用例。个测试用例。用各个判定的用各个判定的取假分支取假分支取代正交表取代正交
23、表L4中的中的“0”,用,用取真分支取真分支取代正交表中的取代正交表中的“1”,就建立起一个测试路径矩阵。这样,测试就建立起一个测试路径矩阵。这样,测试路径数目从路径数目从238条减少到条减少到314条。条。L40 0 01 0 10 1 11 1 01 2 31234用例用例s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5p1 p2 p31234s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5s1s3s5p1p2p3s2s3s6p1p2p3s1s4s6p1p2p3s2s4s5p1p2p3L201112L40 0 01 0 10 1 11 1 01 2 3123
24、4L80 0 0 0 0 0 01 0 1 0 1 0 10 1 1 0 0 1 11 1 0 0 1 1 00 0 0 1 1 1 11 0 1 1 0 1 00 1 1 1 1 0 01 1 0 1 0 0 11 2 3 4 5 6 712345678L22L4LL4循环覆盖在逻辑覆盖的测试技术中,以上只讨论了程序内部有判定存在的逻辑结构的测试用例设计技术。而循环也是程序的主要逻辑结构,要覆盖含有循环结构的所有路径是不可能的,但可通过限制循环次数来测试。fdcabe循环循环 i n Ai Ai+1 Ai+2 k 路路 径径 0 1 2 1 1 i a c 1 2 1 2 i a b e f
25、 c 2 1 i+1 a b d f c 1 3 1 2 3 i a b e f e f c 2 3 1 i+2 a b e f d f c 3 2 1 i+2 a b d f d f c 3 1 2 i+1 a b d f e f c d 改改改改 k k 的的的的值值值值,e e 不不不不改改改改 k k 的的的的值值值值 某工厂公开招工,规定报名者年龄应在某工厂公开招工,规定报名者年龄应在1635 周周岁之间(到岁之间(到1995年年6月月30日为止),即出生年月不早于日为止),即出生年月不早于1960年年7月,不晚于月,不晚于1979年年6月。月。报名程序具有自动检报名程序具有自动检验
展开阅读全文