




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件测试的任务 由安博测试空间技术中心 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 2 本章要点 讨论软件测试的背景 包括缺陷是什么软件测试的定义和目的软件测试工程师工作职责工作流程工作产品职业道德易混淆的专业术语 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 3 软件中的错误是客观存在的 原因在可以预见的未来 人仍将是软件开发中的主角 我国有句古话 人非圣贤孰能无过 由于在软件开发各个环节中产生的人为错误 使得软件中必然存在着大大小小的问题 而这些问题在一定的触发条件下被激活 便会使软件的运行出现差错 导致或大或小的经济损失 而且更为严重的是这些激活的错误可能会威胁人类生命 会导致令人痛心疾首的人间悲剧 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 4 软件中的问题导致的可怕后果 阅读下面的代码 标出你认为有问题的地方 Ifthesignalaheadisclearthenincreasethespeed voidincrease speed if safe intspeed intsignal if signal CLEAR increase speed 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 5 软件中的问题导致的可怕后果 阅读下面的代码 标出你认为有问题的地方typedefintTime typedefintDistance typedefintSpeed constSpeedSAFETY SPEED 120 voidincrease speed Speeds voidcheck speed Timet Distanced Speeds d t if s SAFETY SPEED increase speed t voidperform safety checks Timet get time Distanced get distance check speed d t 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 6 缺陷是什么 定义到目前为止 没有标准的定义 不同组织对缺陷的定义不同 有的组织称缺陷为偏差 异常 故障 错误或事故 在实际活动中 不用太在意缺陷的到底该怎么叫 最重要的对缺陷有相同的理解在软件测试中 有一组专门用于描述软件中的错误的术语 下面的一些定义已经被大多数专业人员所接受软件错误 在软件生存期内的不希望或者不可接受的人为错误 软件缺陷 存在于软件 文档 数据 程序 之中的那些不希望或不可接受的偏差 Bug是口语化的缺陷 缺陷在没有被激活的状态下 软件可以正常运行 但是一旦在某一触发条件下 缺陷被激活 软件内部就会出现故障 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 7 缺陷是什么 定义下面的一些定义已经被大多数专业人员所接受软件故障 软件运行过程中出现的一种不希望或不可接受的内部状态 此时 如果没有适当的处理措施的话 软件故障就会导致软件失效 软件失效 软件运行时产生的一种不希望或不可接受的外部行为结果 比如死机就是一种严重的软件失效 软件失效是软件用户所能直接感受到的 当软件出现失效时 必然说明软件中存在缺陷 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 8 缺陷的代价 缺陷的代价是非常高昂的经济上一项统计数据表明 大约62 的项目成本用于修复软件缺陷 据美国NIST在2002年发布的一项研究估计 美国经济每年因软件Bug会损失600亿美金 约合0 6 的国民生产总值对人类生命的威胁 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 9 结论 结论软件已经越来越多的被使用在日常生活中 我们需要更多的高质量 高可靠性 高安全性的软件产品 但是缺陷 软件世界中的 恐怖分子 影响着软件的质量 威胁着软件的正常运行 我们无法避免人类犯错 但是可以通过努力将隐藏在软件中的缺陷 尤其是那些致命的 严重的缺陷 尽可能多地寻找出来 尽早定位 尽早解决 避免人间悲剧一次又一次地上演 寻找软件中的缺陷就是软件测试的主要目的 承担这个使命的就是软件测试工程师 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 10 软件测试是什么 定义到目前为止 没有标准的定义不同组织有不同的定义下面的一些定义被大多数专业人员所接受 Myers 程序测试是为了发现错误而执行程序的过程 BillHetzel 测试是以评价一个程序或者系统属性为目标的任何一种活动 测试是对软件质量的度量请记住软件测试的目的就是发现软件中的缺陷测试对象不只包括程序代码 也包括与软件相关的交付件 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 11 软件测试的目标 目标软件测试的目的就是寻找软件中的缺陷为了获得更高质量的软件 软件测试的目标是尽量多的寻找软件中的缺陷另外 考虑到测试成本 软件测试的目的是在可允许的时间跨度内可管理的工作量的条件下尽可能多地寻找软件中的缺陷 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 12 软件测试方法的分类 通常有如下几种分类 站在对被测对象内部实现情况了解程度的角度 白盒测试 灰盒测试和黑盒测试 站在是否执行被测系统的角度 静态测试和动态测试 站在测试工具支持的程度 手工测试和自动测试 站在被测内容的角度 功能测试 结构测试和非功能性测试 站在以显示被测对象是否工作的角度 正向测试和反向测试 站在测试过程推进的角度 单元测试 集成测试 系统测试 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 13 白盒测试 灰盒测试和黑盒测试 白盒测试 White boxTesting 是指基于被测对象的内部实现结构进行测试的方法 黑盒测试 Black boxTesting 是指把被测对象看成一个不透明的黑盒 在完全不考虑被测对象内部实现的情况下进行测试的方法 灰盒测试 Grey boxTesting 是白盒测试和黑盒测试的混合体 是指在部分了解被测对象实现的情况下进行测试的方法 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 14 静态测试和动态测试 静态测试 StaticTesting 是指不运行软件系统 而是通过采用检查或者评审的方式寻找被测对象中的缺陷 动态测试 DynamicTesting 是指运行系统进行测试的过程 动态测试可能是大多数人认为的测试 即通过运行软件进行的测试 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 15 手工测试和自动测试 手工测试 ManualTesting 是指在不借助测试工具的情况下 完全由人类完成对软件产品的测试 自动测试 AutomatedTesting 是指通过测试工具或者其它手段 按照测试工程师的预定计划对软件产品进行自动的测试 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 16 正向测试和反向测试 正向测试 PositiveTesting 是指以验证被测对象的正常行为为测试目标 根据其行为表现判断被测对象中是否存在缺陷的一种测试方法 反向测试 NegativeTesting 是指以破坏被测对象的正常行为为测试目标 根据其行为表现判断被测对象中是否存在缺陷 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 17 单元测试 集成测试和系统测试 单元测试 UnitTesting 是指以构成软件的基本单位 单元为测试对象 验证其功能是否正常 是否符合设计要求 集成测试 IntegrationTesting 是指将经过单元测试的构件按照设计要求组装成子系统或系统 以验证按设计要求组合在一起的各单元能够按照既定的意图协作 系统测试 SystemTesting 是指将已经集成好的软件系统 作为整个基于计算机系统的一个元素 与计算机硬件 外设 某些支持软件 数据和人员等其他系统元素结合在一起 在实际运行环境下 对应用系统进行的一系列组装和确认测试 以验证系统是否符合用户需求 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 18 功能测试 结构测试和非功能测试 功能测试 FunctionalTesting 是指依据功能需求规格说明书评估被测对象的功能是否符合需求 结构测试 StructuredTesting 是指基于被测对象的内部结构或者逻辑寻找缺陷的测试活动 非功能性测试 NonfunctionalTesting 是指依据非功能需求规格说明书评估被测系统的某些整体属性 例如性能测试 安全性 易用性等是否符合需求 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 19 功能测试vs黑盒测试 功能测试针对系统或者组件的功能进行的测试黑盒测试不考虑系统或者组件的内部结构 仅关注系统或组件在特定输入和一定条件所产生的输出区别和联系许多专业人士认为功能测试和黑盒测试是等同的两个事物 我个人并不同意此观点 黑盒测试是一种设计测试用例的方法而功能测试是测试的内容 黑盒测试同样可以用于性能 安全 易用性等非功能测试 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 20 结构测试vs白盒测试 结构测试基于内部结构或者逻辑寻找缺陷的测试过程白盒测试也叫玻璃盒测试 透明盒测试基于系统或者组件内部实现方法寻找缺陷的测试方法区别和联系白盒测试的方法一般可用于进行结构测试 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 21 软件测试工程师的目标 目标基于软件测试的目标 软件测试工程师的目标就是发现软件中的缺陷考虑到缺陷修正成本 软件测试工程师的目标是尽早发现程序中的缺陷缺陷被修正后 测试人员必须确认缺陷被修改正确 同时修改没有引入新的缺陷 也就是说软件测试工程师的目标是尽早的发现软件中的缺陷并确保缺陷被正确的修改 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 22 软件测试工程师如何进行测试 方法根据软件需求规格说明书 设计说明书 代码等软件产物选取恰当的输入组合 测试用例testcase 运行被测对象输入数据执行操作查看输出结果是否和预期的结果一致 如果一致则认为被测对象没有问题 否则 则认为被测对象中可能存在缺陷缺陷修改完毕 验证缺陷修改 确认缺陷是否修改正确是否引入新问题 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 23 软件测试工程师的工作流程 核心工作产品测试用例缺陷报告单其他重要的工作产品测试计划测试策略测试报告 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 24 测试用例是什么 定义针对被测试项的测试输入 执行条件和预期结果的集合 是挑选出来的具有代表性的输入组合 挑选输入组合的方法就是测试用例设计方法测试用例是软件测试的灵魂 体现着软件测试工程师的职业价值测试用例可以用结构化自然语言描述 也可以用编程语言实现 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 25 为什么需要测试用例 不可能进行完全的测试根本原因 输入的组合数目太庞大输出的可能结果数目太庞大可执行的路径数目太庞大结论为了进行聪明的测试 软件测试工程师必须在众多的数据中选取恰当的做代表 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 26 如果你打算测试一个计算器程序的功能 你认为需要进行多少次输入 不可能进行完全的测试 结论是不计其数整型 从1 1到999999999999999999999999999999 999999999999999999999999999999小数 1 0 0 1 1 0 0 2 等等键盘上的任何一种组合为乘法和除法运算重复上面的操作 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 27 结论是 51 52 53 510 6 1 107 需要1分钟左右的时间如果循环次数为20次 100次时 结果又如何 结论是 循环20次 需要约16000小时 循环100次则大约需要2 4 1048年 不可能进行完全的测试 1 2 3 5 6 4 7 8 9 左图是具有某程序的流程图 假设循环10次 请计算一下有多少条程序执行通路 假设由图中得到的所有路径都是可执行路径 执行一次循环大约需要10微秒 奔腾41 7G 且一年365天每天24小时不停机 请回答 如果循环次数为10的话 遍历图中所有路径需要多长时间 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 28 三角形问题 三角形问题 输入三个整数 这三个数分别代表三角形三条边的长度 请判断这三个数构成的三角形是等边三角形 等腰三角形还是不等边三角形并输出相应的结果 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 29 测试用例实现 1 一个用自然语音实现的测试用例实例 不同的组织可能使用不同的测试用例模版 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 30 测试用例实现 基于JUnit框架 www junit org 用Java语言实现的一个测试用例 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 31 高质量测试用例的属性 高质量测试用例的四个属性有效性是否能够发现缺陷或者至少可能发现缺陷仿效性衡量测试用例的代表程度 减少测试用例的数量经济性测试用例所花费的成本 包括设计 实现 调试和运行测试用例的成本可维护性修改和维护测试用例的难易程度 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 32 缺陷报告单 定义缺陷问题报告单是描述缺陷细节的文档 包括缺陷的编号 被测软件及其版本 优先级 严重程度 谁来修复缺陷等等优良的缺陷报告应该具备准确 清晰 简洁 完整 统一的特点 还需要注意给每个缺陷问题报告单分配一个唯一的标识以有利于缺陷的后续处理 查询和管理维护等活动 站在为他人服务的立场上编写缺陷问题报告单注意语句措词 不要涉及对他人的评价和自己情绪的宣泄只报告问题不要试图解决问题一个缺陷问题报告单里只报告一个缺陷漏 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 33 缺陷问题报告单示例 缺陷问题报告单 张三 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 34 软件测试工程师职业道德规范 建议恪守职业道德 始终维护所在组织的利益 不能因为个人利益 损害甚至出卖组织具备团队合作精神 在工作中树立为他人服务的意识 始终铭记软件项目不是个人作品 而是整个团队密切合作的产物 当同事们寻求帮助时 应尽最大可能伸出援助之手 具备诚实的品德 实事求是 不能为了个人绩效进行具有欺骗性的活动 如伪造测试数据 对发现的缺陷夸大其辞等 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 35 软件测试工程师职业道德规范 建议良好的沟通能力 软件测试工程师的工作是挑别人的毛病 这注定测试人员不会太受团队中其他成员的欢迎 尤其是开发人员 两者经常会因为发现的缺陷究竟是不是真的缺陷而发生冲突 软件开发工程师 出于本能 会为自己的作品辩解不承认测试工程师找到的缺陷是自己的问题或者认为这就是一个功能 而软件测试工程师 出于职业责任感 会坚持自己的意见 此时 如果不适当运用一些沟通技巧 很可能将形成一个互不相让的僵局 在这种情况下 软件测试工程师不防站在开发人员的角度思考一下并选择恰当的方式进行表达 适当的幽默可能会非常有帮助 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 36 软件测试工程师职业道德规范 建议始终秉持任何软件都存在缺陷的工作态度 软件测试工程师不能因为自己的想当然或崇拜心理主观地认为被测系统中问题很少或者不会有问题 如果是这样的话 根据心理学研究的结果 那么很可能遗漏本应被发现的缺陷 认真负责仔细耐心 缺陷经常会把自己隐藏在角落里 为了发现缺陷 测试工程师很可能重复相同的操作很多次 如果没有耐心半途而废或者思想有松懈的话 缺陷也许就从会悄悄地溜走 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 37 软件测试工程师职业道德规范 建议只要是缺陷不论大小一定要报告 客户和用户会因为系统中竟然会存在类似于页面中的错别字 文本框没有左对齐或是语句不太通顺等很明显的小错误而大动肝火 会认为连这种小问题都没有办法杜绝 系统有何可信而言 另外 一旦测试工程师报告了所发现的缺陷 如果没有确切的理由 那么就要坚持到底所提的缺陷是一个缺陷 不能因为开发人员的态度或者自己自信心的缺乏而退缩 报告不可重现的缺陷 不可重现问题的背后很可能隐藏着系统致命的缺陷 一旦被激活会导致系统运行的不稳定甚至宕机 对于这类缺陷 软件测试工程师有责任提出并且协助开发人员重现定位 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 38 软件测试工程师职业道德规范 建议不断充实专业知识 总结工作经验 在目前的IT界里 不跟进先进的专业知识是一种落后 不重复优良的工程经验是一种浪费 这条规则对软件测试工程师也不会例外 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 39 术语 软件测试中几组易混淆的术语测试和调试 Testinganddebugging 验证和确认 VerificationandValidation 动态测试和静态测试 DynamictestingandStatictesting 功能测试和黑盒测试 FunctionalTestingandblack boxTesting 结构测试和白盒测试 StructuralTestingandWhite BoxTesting 测试和质量保证 TestingandQualityAssurance 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 40 测试和调试 测试测试的目的是为了寻找缺陷调试调试是为了发现 定位和修改程序代码中的错误调试的目的是为了排错区别和联系测试为了寻找缺陷 调试为了排除缺陷可能存在这样的工作流程 测试发现缺陷 调试定位缺陷和修改缺陷 测试验证缺陷是否修改正确 2007级本科 软件测试与质量保证 2009年9月 2010年01月SEIofECNU版权所有 1 41 验证和确认 验证评估系统或组件的过程以确定在给定的开发阶段是否满足在该阶段开始时定义的标准
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论