Ch1-软件测试基础知识.ppt_第1页
Ch1-软件测试基础知识.ppt_第2页
Ch1-软件测试基础知识.ppt_第3页
Ch1-软件测试基础知识.ppt_第4页
Ch1-软件测试基础知识.ppt_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

软件测试方法和技术 Ch 1软件测试基础知识 内容概览 全书共分成三大部分软件测试的原理 阐述软件测试的重要性 基本概念和方法等软件测试的技术 介绍软件测试在各个阶段 单元测试 集成测试 系统测试 验收测试和安装测试 的技术和方法 以及典型测试领域的特点和技术软件测试的实践 介绍软件测试的团队和环境的建立 以及如何设计测试用例 报告软件缺陷 写测试报告 测试项目的管理 机遇和挑战并存 TestEngineerQA SupervisorProject QualityManager 目前国内软件业的弱点正是发展的前沿 21世纪什么最贵 软件测试工程师 软件测试工程师 目前IT行业极端短缺的金贵人才 未来5年IT行业最炙手可热的高薪职位 中国软件业每年新增约20万测试岗位就业机会 而企业 学校培养出的测试人才却不足需求量的1 10 这种测试人才需求与供给间的差距仍在拉大 软件测试 产品质量的保证软件测试 控制成本的关键软件测试 软件可靠性确认软件测试 让企业具备国际竞争的实力 人力市场的测试人员位置 1800虚位以待 Onlyinonewebsite 51job cob 职位描述 制定测试计划 根据需求分析和详细设计 撰写测试用例 执行软件测试 根据测试计划和测试用例 检测系统是否符合功能规格说明 进行错误跟踪 承担质量保证 撰写相关技术文档 如测试计划书 测试用例 测试报告 修改建议等 熟悉软件工程 软件测试理论和方法 了解相关的测试流程 测试文档标准 并知晓软件的开发过程 对基于Web软件产品设计有较深的了解 能够独立撰写测试计划 测试用例 并完成测试任务 提交测试报告 熟悉错误跟踪软件 并能建立及维护错误跟踪系统 熟悉基于Web系统自动化测试和性能测试工具 如 LoadRunner QTP等 者优先 熟悉SQL语句 熟悉Oracle SQLServer DB2者优先 任职资格 课程目标 本课程是计算机或软件专业课程 重在培养我们的实践能力 适应软件企业的工作环境和业界标准 并和国际先进的软件开发理念和测试技术保持同步 通过本课程的学习 了解并掌握软件产品质量保证的基本思想和科学体系 软件测试技术的基本内容 以及软件测试的方法 技术和工具的使用 为全面掌握软件技术和软件项目管理打下坚实的基础 课程目标 通过本课程的学习 我们还可以了解并掌握 有效的测试策略 方法和技术测试计划和测试用例的设计测试自动化的引入 应用测试团队的建立和测试项目的管理更清楚 准确地报告测试缺陷对软件产品质量的正确评估软件测试和质量保证的关系和区别 课程服务于 测试工程师TestengineerQA工程师 经理QAEngineer Manager软件工程过程组成员ThememberofSEPG项目经理Projectmanager 课程考核 课时 108 平时成绩占20 到勤 作业 实训 期中考试占20 期末考试占60 第一章软件测试基础知识 1 1软件的概念1 2软件测试基本概念1 3软件测试的必要性1 4软件测试的分类 了解软件的含义了解软件测试的重要性了解软件测试的工作范畴掌握软件质量的定义 内涵掌握软件开发的基本过程理解软件开发过程的模型理解软件缺陷的定义 种类 产生和构成理解软件测试的分类理解软件测试的基本方法 学习目标 学习重点 软件开发的基本过程软件开发过程的模型软件测试的重要性软件测试的分类缺陷的定义 种类 产生和构成软件测试的基本方法 软件开发过程的模型软件测试的基本方法软件测试的分类 学习难点 1 1软件的概念 能够完成预定功能和性能的 可执行的指令 计算机程序 使得程序能够适当地操作信息的数据结构 描述程序的操作和使用的文档 软件 程序 数据 库 文档 服务 1 1软件的含义 软件危机 在计算机软件的开发和维护过程中所遇到的一系列严重问题 软件生产与市场需求出现极不适应的严重现象软件工程 应用计算机科学 数学及管理科学等原理开发软件的工程 软件组成 客户需求 CustomerRequirements市场需求文档 MRD MarketingRequirementDocument 软件规格说明书 Specifications技术设计文档 TechnicalDesignDocs测试文档TestDocuments在线帮助 Onlinehelp产品发布注释 ReleaseNotes ReadMe产品软件包 Releasepackages Return 软件产品的其他内容 帮助文件Helpfiles示例Samplesandexamplestoillustratepoints产品支持文档Productsupportinformation错误信息Errormessages安装手册Setupandinstallationinstructions用户手册Usermanual s 产品标签Labelandstickers产品广告或宣传材料Adsandmarketingmaterial 软件特点 软件则是逻辑的 知识性的产品集合 是对物理世界的一种抽象 或者是某种物理形态的虚拟化 软件是硬件的灵魂 硬件是软件的基础软件 是智慧和知识的结晶软件不会 磨损 而是逐步完善 软件开发过程的特性 软件开发的基本过程软件开发过程模型UML代表着软件建模的发展趋势 软件开发的基本过程 软件开发过程 需求分析 根据客户的要求 清楚了解客户需求中的产品功能 特性 性能 界面和具体规格等 然后进行分析 确定软件产品所能达到的目标 设计 根据需求分析的结果 考虑如何在逻辑 程序上去实现所定义的产品功能 特性等 可以分为概要设计和详细设计 也可分为数据结构设计 软件体系结构设计 应用接口设计 模块设计 界面设计等 编程 将设计转换成计算机可读的形式 测试 对设计 编程进行验证和用户需求确认的过程维护 维持软件运行 修改软件缺陷 增强已有功能 增加新功能 升级等 软件开发过程模型 软件开发过程中存在各种复杂因素 为了解决由此而带来的种种问题 软件开发者们经过多年的摸索 给出了多种实现软件工程的方式 软件过程模型 如瀑布过程模型 螺旋过程模型和增量过程模型等 瀑布过程模型反映了人们早期对软件工程的认识水平 是人们所熟悉的一种线性思维的体现 瀑布过程模型强调阶段的划分及其顺序性 各阶段工作及其文档的完备性 是一种严格线性的 按阶段顺序的 逐步细化的开发模式 瀑布模型 螺旋过程模型的基本思路是 依据前一个版本的结果构造新的版本 这个不断重复迭代的过程形成了一个螺旋上升的路径 螺旋模型 图1 2螺旋过程模型 有些时候可能会用一种几乎连续的过程小幅度地推进项目 这就是增量过程模型 增量过程模型 快速原型过程模型首先是快速进行系统分析 在设计人员和用户的紧密配合下 快速确定软件系统的基本要求 尽快实现一个可运行的 功能简单的原型系统 然后通过对原型系统逐步求精 不断扩充完善得到最终的软件系统 快速原型模型 快速应用开发 RAD V模型 RAD VModel 改进 迭代模型 UML代表着软件建模的发展趋势 敏捷开发 AgileDevelopment 极限编程 eXtremeProgramming泛型编程 GenericProgramming 面向方面的编程 AspectOrientedProgramming 简称AOP UML UnifiedModelingLanguage 统一建模语言 可以说代表软件建模的今后5到10年的发展方向 成为面向对象技术领域内占主导地位的标准建模语言 支持从需求分析开始的软件开发的全过程 总的来说 UML是一种定义良好 易于表示 功能强大且普遍实用的建模语言 UML发展历史 问题 生活中有测试 质检 的例子 对软件产品进行充分测试 找出其中的缺陷 Bug 并进行修复 Fix 软件测试是测试的一种 顾名思义就是对软件进行测试 软件测试是由于软件缺陷的存在而产生的 我们将所有软件问题统称作软件缺陷 不管他们的规模和危害有多大 由于它们都会产生使用障碍 而都称为软件缺陷 1 2软件测试的基本概念 软件测试的基本概念 软件测试就是在软件投入运行前 对软件需求分析 设计规格说明和编码实现的最终审查 它是软件质量保证的关键步骤 实践证明 对软件进行充分的测试才能够有效的保证软件质量 软件测试的基本概念 软件测试的定义软件测试是为了发现错误而执行程序的过程 软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例 并利用这些测试用例运行程序以及发现错误的过程 即执行测试步骤 测试用例为特定的目的而设计的一组测试输入 执行条件和预期的结果 测试用例是执行测试的最小实体 测试步骤 测试步骤详细规定了如何设置 执行 评估特定的测试用例 软件测试的对象软件测试不等于程序测试 软件开发过程中所产生的需求规格说明 概要设计规格说明 详细设计规格说明以及源程序都是软件测试的对象 软件测试的基本概念 软件测试的目的 程序测试是为了发现错误 BUG 而执行程序的过程 测试的目的是发现程序中的错误 是为了证明程序有错 而不是证明程序无错 在软件开发过程中 分析 设计与编码等工作都是建设性的 惟独测试是带有 破坏性 测试可视为分析 设计和编码3个阶段的 最终复审 在软件质量保证中具有重要地位 Bug 缺点 defect 偏差 variance 谬误 fault 失败 failure 问题 problem 矛盾 inconsistency 错误 error 毛病 incident 异常 anomy 什么是Bug 软件缺陷 Bug 是什么 Anyproblem disfigurement limitationinproductdesign developmentFeatureorfunctioncan tworkUnreasonabledesignPartlyrealizationinfunctionDataerrorRunerrorLimitationinfeaturesDifferencebetweenactualresultsandexpectedresultsUnfriendlyUI LowperformanceOthers 任何程序 系统中的问题 和产品设计书的不一致性 不能满足用户的需求 软件缺陷 IEEE软件缺陷一个标准的定义 从产品内部看 软件缺陷是软件产品开发或维护过程中所存在的错误 毛病等各种问题 从外部看 软件缺陷是系统所需要实现的某种功能的失效或违背 软件缺陷的主要类型 现象 功能 特性没有实现或部分实现设计不合理 存在缺陷实际结果和预期结果不一致运行出错 包括运行中断 系统崩溃 界面混乱数据结果不正确 精度不够用户不能接受的其他问题 如存取时间过长 界面不美观 致命的 致命的错误 造成系统或应用程序崩溃 死机或造成数据丢失 主要功能完全丧失 严重的 严重错误 指功能或特性没有实现 主要功能部分丧失 次要功能完全丧失 一般的 不太严重的错误 不影响基本使用但没有很好的实现功能 没有达到预期效果 微小的 一些小问题 对功能几乎没有影响 软件缺陷错误级别 激活状态 OPEN 问题还没有解决 测试人员新报的BUG 或验证后的BUG仍然存在 已修正状态 FIXED 开发人员针对所存在的缺陷 修改程序 认为问题已解决 关闭或非激活状态 测试人员验证FIXEDBUG后 确认BUG不存在之后的状态 BUG状态 软件缺陷的产生 技术问题算法错误 语法错误 计算和精度问题 接口参数传递不匹配团队工作误解 沟通不充分软件本身文档错误 用户使用场合 userscenario 时间上不协调 或不一致性所带来的问题 系统的自我恢复或数据的异地备份 灾难性恢复等问题 软件缺陷构成 软件缺陷在不同阶段的分布 在真正的程序测试之前 通过审查 评审会可以发现更多的缺陷 规格说明书的缺陷会在需求分析审查 设计 编码 测试等过程中会逐步发现 而不能在测试一个阶段发现 缺陷成本 软件测试和修复 软件测试和修复是不同意义的行为过程 最能体现修复行为的是调试和修正 经过测试发现错误后 往往不能直觉从测试结果中找到错误的根源 这就需要充分利用测试结果和测试过程中提供的信息进行全面分析 通过调试发现错误 并修正这些发现的错误 第一类标准 测试超过了预定时间 则停止测试 这类标准不能用来衡量测试质量 第二类标准 执行了所有的测试用例 但并没有发现故障 则停止测试 第三类标准 使用特定的测试用例设计方案作为判断测试停止的基础 第四类标准 正面指出停止测试的具体要求 第五类标准 根据单位时间内查出故障的数量决定是否停止测试 测试停止的依据 标准 软件测试的原则 1 所有测试的标准都是建立在用户需求之上 软件测试必须基于 质量第一 的思想去开展各项工作 当时间和质量冲突时 时间要服从质量 事先定义好产品的质量标准 只有有了质量标准 才能根据测试的结果 对产品的质量进行分析和评估 软件项目一启动 软件测试也就是开始 而不是等程序写完 才开始进行测试 穷举测试是不可能的 甚至一个大小适度的程序 其路径排列的数量也非常大 因此 在测试中不可能运行路径的每一种组合 软件测试的原则 2 第三方进行测试会更客观 更有效 软件测试计划是做好软件测试工作的前提 测试用例是设计出来的 不是写出来的 所以要根据测试的目的 采用相应的方法去设计测试用例 从而提高测试的效率 更多地发现错误 提高程序的可靠性 对发现错误较多的程序段 应进行更深入的测试 一般来说 一段程序中已发现的错误数越多 其中存在的错误概率也就越大 重视文档 妥善保存一切测试过程文档 测试计划 测试用例 测试报告等 软件测试的注意事项 应当把 尽早和不断地测试 作为测试人员的座右铭回归测试的关联性一定要引起充分的注意 修改一个错误而引起更多错误出现的现象并不少见测试应从 小规模 开始 逐步转向 大规模 不可将测试用例置之度外 排除随意性 必须彻底检查每一个测试结果 一定要注意测试中的错误集中发生现象 这和程序员的编程水平和习惯有很大的关系对测试错误结果一定要有一个确认的过程 软件测试误区 误区一 如果发布出去的软件有质量问题 都是软件测试人员的错误区二 软件测试技术要求不高 至少比编程容易多了误区三 有时间就多测试一些 来不及就少测试一些误区四 软件测试是测试人员的事 与开发人员无关误区五 根据软件开发瀑布模型 软件测试是开发后期的一个阶段 软件测试学科发展 从测试的思想导向来划分为4个阶段 1957 1978年 以功能验证为导向 测试是证明软件是正确的 正向思维 1978 1983年 以破坏性为为导向 测试是为了找到软件中的错误 逆向思维 1983 1987年 以质量评估为导向 测试是提供产品的评估和质量度量 1988年起 以缺陷预防为导向 测试是为了展示软件符合设计要求 发现缺陷 预防缺陷 更好的阶段划分 分为3个阶段 初期阶段 发展阶段和成熟阶段初级阶段 1957 1971 测试通常被认为是对产品进行事后检验 缺乏有效的测试方法发展阶段 1972 1982 1972年第一次关于软件测试的正式会议 促进了软件测试的发展成熟阶段 1983到现在 国际标准Std829 1983 形成一门独立的学科和专业 成为软件工程学科中的一个重要组成部分 1 3软件测试的重要性 1 3 1软件所带来的悲剧1 3 2其他一些例子1 3 3测试是软件开发重要环节之一 千年虫 Y2K 在上个世纪70年代 程序员为了节约非常宝贵的内存资源和硬盘空间 在存储日期时 只保留年份的后两位 如 1980 被存为 80 当2000年到来的时候 问题就会出现 比如银行存款程序在计算利息时 应该用现在的日期 2000年1月1日 减去当时存款的日期 比如 1989年1月1日 结果应该是11年 如果利息是3 银行要付给顾客每100元 大约56元利息 如果程序没有纠正年份只存储两位的问题 其存款年数就变为 89年 变成顾客反要付银行1288元的巨额利息 就是为了这样一个简单的设计缺陷 全世界付出几十亿美元 奔腾芯片缺陷 4195835 3145727 3145727 4195835 0 450million 4 5亿美元损失 其他一些例子 软件风暴召回淘宝手机软件事件 终极目标 满足客户要求 保证软件质量 软件质量的内涵 软件质量是客户满意度的体现 客户 质 量 软件质量范围 3A Accountability 可说明性 用户可以基于产品或服务的描述和定义进行使用 例如 市场需求说明书 功能设计说明书 Availability 有效性 产品或服务对于99 999 客户总是有效的 例如 性能测试和恢复测试 Accessibility 易用性 对于用户 产品或服务非常容易使用并且一定是非常有用的功能 例如 确认测试和用户可用性测试 高质量的软件 应该是相对的无产品缺陷 BugFree 或只有极少量的缺陷 它能够准时递交给用户并且所用的费用都是在预算内的并且满足客户需求 是可维护的 但是 有关质量的好坏最终评价依赖于用户的反馈 客户 广义定义 内在的定义 下一个环节 工序的接收者 更广的 服务的对象 周围有任何联系或影响的团队 人 广泛的定义 最终用户 客户管理 软件质量不同的视点 先验论观点 质量是产品一种可以认识但不可定义的性质用户观点 质量是产品满足使用目的之程度 制造者的观点 质量是产品性能和规格要求的符合度产品观点 质量是联结产品固有性能的纽带 基于价值观点 质量依赖于顾客愿意付给产品报酬的数量 产品质量的标准 功能性Functionality 可用性Usability 简单安装 轻松使用 友好界面 可靠性Reliability 用户使用的根本 性能Performance 容量Capacity 可测量性Scalability 可维护性Servicemanageability 兼容性Compatibility 可扩展性Extensibility 软件质量特征 ISO9126 功能 与一组功能及其指定性质有关的一组属性 这里的功能是满足明确或隐含的需求的那些功能 可靠 在规定的一段时间和条件下 与软件维持其性能水平的能力有关的一组属性 易用 由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性 效率 与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性 可维护 与进行指定的修改所需的努力有关的一组属性 可移植 与软件从一个环境转移到另一个环境的能力有关的一组属性 其中每一个质量特征都分别与若干子特征相对应 软件过程质量 软件能力成熟度模型CMM CapabilityMaturityModel 国际标准过程模型ISO9000软件过程改进和能力决断SPICE SoftwareProcessImprovementandCapabilitydEtermination 质量保证的策略 主要分三个阶段 以检测为重 产品制成之后进行检测 只能判断产品质量 不能提高产品质量 以过程管理为重 把质量的保证工作重点放在过程管理上 对制造过程中的每一道工序都要进行质量控制 以新产品开发为重 在新产品的开发设计阶段 采取强有力的措施来消灭由于设计原因而产生的质量隐患 质量管理发展五个阶段 2000 1 4软件测试的分类 黑盒测试和白盒测试 测试用例设计方法 静态测试和动态测试 执行程序 单元测试 集成测试 系统测试 验收测试和确认测试 策略和过程 静态与动态 按照是否需要执行程序 软件测试可划分为静态测试和动态测试静态测试 并不真正运行被测试程序 只是进行特征分析动态测试 通过选择适当的测试用例 实际运行所测程序 比较实际运行结果和预期结果 以找出错误 静态测试主要是对软件的编程格式 结构等方面进行评估 静态测试包括代码检查 静态结构分析 代码质量度量等 它可以由人工进行 也可以借助软件工具自动进行 静态测试方法也可利用计算机作为对被测程序进行特性分析的工具 但与人工测试方式有着根本区别 另一方面 因它并不真正运行被测程序 只进行特性分析 这又与动态方法不同 所以 静态方法常常称为 分析 静态测试是对被测程序进行特性分析方法的总称 静态测试 代码检查包括代码走查 桌面检查 代码审查等 主要检查代码和设计的一致性 代码对标准的遵循 可读性 代码的逻辑表达的正确性 代码结构的合理性等方面 代码检查的具体内容 变量检查 命名和类型审查 程序逻辑审查 程序语法检查和程序结构检查等 代码检查的优点 在实际使用中 代码检查比动态测试更有效率 能快速找到缺陷 发现30 70 的逻辑设计和编码缺陷 代码检查看到的是问题本身而非征兆 代码检查的缺点 非常耗费时间 而且代码检查需要知识和经验的积累 代码检查 静态结构分析主要是以图形的方式表现程序的内部结构 例如函数调用关系图 函数内部控制流图 其中 函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系 控制流图显示一个函数的逻辑结构 由许多节点组成 一个节点代表一条语句或数条语句 连接结点的叫边 边表示节点间的控制流向 静态结构分析 软件质量包括六个方面 功能性 可靠性 易用性 效率 可维护性和可移植性 软件的质量是软件属性的各种标准度量的组合 代码质量度量 1 检查算法的逻辑正确性 2 检查模块接口的正确性 3 检查输入参数是否有合法性检查 4 检查调用其他模块的接口是否正确 5 检查是否设置了适当的出错处理 6 检查表达式 语句是否正确 是否含有二义性 7 检查常量或全局变量使用是否正确 8 检查标识符的使用是否规范 一致 9 检查程序风格的一致性 规范性 10 检查代码是否可以优化 算法效率是否最高 11 检查代码注释是否完整 是否正确反映了代码的功能 静态测试阶段的任务 1 发现下列程序的错误 错用局部变量和全局变量 未定义的变量 不匹配的参数 不适当的循环嵌套或分支嵌套 死循环 不允许的递归 调用不存在的子程序 遗漏标号或代码 2 找出以下问题的根源 从未使用过的变量 不会执行到的代码 从未使用过的标号 潜在的死循环 3 提供程序缺陷的间接信息 所用变量和常量的交叉应用表 是否违背编码规则 标识符的使用方法和过程的调用层次 4 为进一步查找做好准备 5 选择测试用例 6 进行符号测试 静态测试可以完成以下工作 动态方法的主要特征是 计算机必须真正运行被测试的程序 通过输入测试用例 对其运行情况即输入与输出的对应关系进行分析 以达到检测的目的 动态测试包括 1 功能确认与接口测试 2 覆盖率分析 3 性能分析 4 内存分析 动态测试 黑盒和白盒 功能测试数据驱动测试 结构测试逻辑驱动测试 若测试规划是基于产品的功能 目的是检查程序各个功能是否能够实现 并检查其中的功能错误 则这种测试方法称为黑盒测试 Black boxTesting 方法 黑盒测试又称为功能测试 数据驱动测试和基于规格说明的测试 它是一种从用户观点出发的测试 一般被用来确认软件功能的正确性和可操作性 若测试规划基于产品的内部结构进行测试 检查内部操作是否按规定执行 软件各个部分功能是否得到充分使用 则这种测试方法称为白盒测试 White boxTesting 方法 白盒测试又称为结构测试 逻辑驱动测试或基于程序的测试 一般用来分析程序的内部结构 黑盒和白盒 两种测试方法从完全不同的角度出发 反映了测试思路的两方面情况 适用于不同的测试阶段 黑盒和白盒 黑盒测试的基本观点是 任何程序都可以看作是从输入定义域映射到输出值域的函数过程 被测程序被认为是一个打不开的黑盒子 黑盒中的内容 实现过程 完全不知道 只明确要做到什么 黑盒测试主要根据规格说明书设计测试用例 并不涉及程序内部构造和内部特性 只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例 黑盒测试的特点 1 黑盒测试与软件的具体实现过程无关 在软件实现的过程发生变化时 测试用例仍然可以使用 2 黑盒测试用例的设计可以和软件实现同时进行 这样能够压缩总的开发时间 黑盒测试 黑盒测试 黑盒测试主要是为了发现以下几类错误 是否有不正确或遗漏了的功能 在接口上 输入能否正确地接受 能否输出正确的结果 是否有数据结构错误或外部信息访问错误 性能上是否能够满足要求 是否有初始化或终止性错误 黑盒测试的难点 在哪个层次上进行测试 黑盒测试的具体技术方法 边界值分析法等价类划分法因果图法决策表法 黑盒测试 白盒测试将被测程序看作一个打开的盒子 测试者能够看到被测源程序 可以分析被测程序的内部结构 此时测试的焦点集中在根据其内部结构设计测试用例 白盒测试要求是对某些程序的结构特性做到一定程度的覆盖 或者说这种测试是 基于覆盖率的测试 通常的程序结构覆盖有 语句覆盖判定覆盖条件覆盖判定 条件覆盖路径覆盖 白盒测试 白盒测试 黑盒与白盒测试的比较 黑盒测试 以用户的观点 从输入数据与输出数据的对应关系 即根据程序外部特性进行测试 而不考虑内部结构及工作情况 黑盒测试技术注重于软件的信息域 范围 通过划分程序的输入和输出域来确定测试用例 若外部特性本身存在问题或规格说明的规定有误 则应用黑盒测试方法是不能发现问题的 白盒测试 只根据程序的内部结构进行测试 测试用例的设计要保证测试时程序的所有语句至少执行一次 而且要检查所有的逻辑条件 如果程序的结构本身有问题 比如说程序逻辑有错误或者有遗漏 那也是无法发现的 黑盒与白盒测试的比较 黑盒与白盒测试的比较 按软件测试过程划分 单元测试集成测试确认 有效性 测试系统测试验收 用户 测试 单元测试 单元测试的对象是程序系统中的最小单元 模块或组件上 在编码阶段进行 针对每个模块进行测试 主要通过白盒测试方法 从程序的内部结构出发设计测试用例 检查程序模块或组件的已实现的功能与定义的功能是否一致 以及编码中是否存在错误 多个模块可以平行地 对立地测试 通常要编写驱动模块和桩模块 单元测试一般由编程人员和测试人员共同完成 单元测试针对每个程序的模块 主要测试5个方面的问题 模块接口 局部数据结构 边界条件 独立的路径和错误处理 单元测试的主要任务 这是对模块接口进行的测试 检查进出程序单元的数据流是否正确 模块接口测试必须在任何其它测试之前进行 模块接口测试至少需要如下的测试项目 1 调用所测模块时的输入参数与模块的形式参数在个数 属性 顺序上是否匹配 2 所测模块调用子模块时 它输入给子模块的参数与子模块中的形式参数在个数 属性 顺序上是否匹配 3 是否修改了只做输入用的形式参数 4 调用标准函数的参数在个数 属性 顺序上是否正确 5 全局变量的定义在各模块中是否一致 模块接口 在模块工作过程中 必须测试模块内部的数据能否保持完整性 包括内部数据的内容 形式及相互关系不发生错误 对于局部数据结构 应该在单元测试中注意发现以下几类错误 1 不正确的或不一致的类型说明 2 错误的初始化或默认值 3 错误的变量名 如拼写错误或书写错误 4 下溢 上溢或者地址错误 局部数据结构 在单元测试中 最主要的测试是针对路径的测试 基本路径测试法是在程序控制流图的基础上 通过分析控制构造的环路复杂性 导出基本可执行路径集合 从而设计测试用例的方法 设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次 测试用例必须能够发现由于计算错误 不正确的判定或不正常的控制流而产生的错误 常见的错误有 误解的或不正确的算术优先级 混合模式的运算 错误的初始化 精确度不够精确 表达式的不正确符号表示 针对判定和条件覆盖 测试用例还要能够发现如下错误 不同数据类型的比较 不正确的逻辑操作或优先级 应当相等的地方由于精确度的错误而不能相等 不正确的判定或不正确的变量 不正确的或不存在的循环终止 当遇到分支循环时不能退出 不适当地修改循环变量 路径测试 边界测试是单元测试的最后一步 必须采用边界值分析方法来设计测试用例 认真仔细地测试为限制数据处理而设置的边界处 看模块是否能够正常

温馨提示

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

评论

0/150

提交评论