软件测试课程.ppt

上传人:本田雅阁 文档编号:3302577 上传时间:2019-08-10 格式:PPT 页数:104 大小:926.55KB
返回 下载 相关 举报
软件测试课程.ppt_第1页
第1页 / 共104页
软件测试课程.ppt_第2页
第2页 / 共104页
软件测试课程.ppt_第3页
第3页 / 共104页
软件测试课程.ppt_第4页
第4页 / 共104页
软件测试课程.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《软件测试课程.ppt》由会员分享,可在线阅读,更多相关《软件测试课程.ppt(104页珍藏版)》请在三一文库上搜索。

1、软件测试课程,软件测试,参考书,1、软件测试 作者:(美)Ron Patton 译者:周予滨 姚静 出版社:机械工业出版社 原出版社: SAMS,参考书,2、软件测试 作者:美Paul C.Jorgensen 译者:韩柯 杜旭涛 出版社:机械工业出版社 原出版社: CRC,参考书,3、软件测试 作者:(美)Ron Patton 译者:张小松 王钰等 出版社:机械工业出版社 原出版社: SAMS,参考书,4、软件测试与质量管理 作者:许育诚 飞思科技产品研发中心 出版社:电子工业出版社,参考书,5、网上资料 其他网上资料,考试安排,课程实践80%左右 分组进行LD、WR、WAS等进行软件测试实

2、践。 平时考勤20%左右,第一章 软件测试概述 杨双远 ,软件测试,课程目标,掌握软件测试的基本概念 理解测试对于软件质量保障的重要性 了解软件测试的基本流程和过程 了解黑盒测试和白盒测试含义 理解软件测试的分类和内容,课程内容,软件测试基本概念 软件测试误区 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,软件测试基本概念,什么是软件测试 软件测试的目的 软件测试原则 软件测试的重点 软件测试质量 软件测试度量 软件的可测试性,什么是软件测试,广义的概念 指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的

3、审查和确认 狭义概念 识别软件缺陷的过程,即实际结果与预期结果的不一致,什么是软件测试,软件测试通常包括验证(verification)和确认(validation): 验证指保证软件正确的实现了某一特定功能的一系列活动(功能性) 确认指的是保证软件的实现满足了用户需求的一系列活动(实用性) ?哪一个更重要?,什么是软件测试,软件的质量与可靠性: 可靠性:运行稳定、满足客户需求 质量:功能强度、可靠性、性能、客服以及性价比等 可靠性和功能,哪一个更重要?,什么是软件测试,软件的测试(Testing)与质量保证(Quality Assurance,QA): 软件测试:尽可能找到软件缺陷,并确保缺

4、陷得以修复 软件质量保证:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法 ?QA和QC的异同点?,软件测试的目的,测试的目的就是发现软件中的各种缺陷 测试只能证明软件存在缺陷,不能证明软件不存在缺陷 测试可以使软件中缺陷降低到一定程度,而不是彻底消灭 以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量 以更少的支出(需求变更、维护、客服等成本)来谋取收入支出比达到最大化。,软件测试的目标,最终目的是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正: 确保软件完成了它所承诺或公布的功能 (缺少规范的书面文档?) 确保软件满足性能的要求(界面、操作

5、、性能) 确保软件是健壮的和适应用户环境的 (哪怕不健壮,也要给出解决方案),测试的目标,为软件的质量评估提供依据 (项目验收) 为软件质量改进和管理提供帮助 (经验教训等知识转移),软件测试的原则,Good-enough: 一种权衡投入/产出比的原则:选择测试 保证测试的覆盖程度,但穷举测试是不可能的:有限测试 所有的测试都应追溯到用户需求 越早测试越好,测试过程与开发过程应是相结合的 测试的规模由小而大,从单元测试到系统测试 为了尽可能地发现错误,应该由独立的第三方来测试 不能为了便于测试擅自修改程序 既应该测试软件该做什么也应该测试软件不该做什么,传统的瀑布模型中软件测试学仅处于运行维护

6、阶段之前,软件测试的规律,木桶原理: 软件质量的关键因素是分析、设计和实现,测试应该是融于其中的补充检查手段,其他管理、支持、甚至文化因素也会影响最终软件的质量(例如:老板不诚信) 测试是提高软件质量的必要条件,最直接、最快捷的手段,但决不是一种根本手段 2个角度:木桶原理与反木桶原理?,软件测试的规律,Bug的80-20原则 在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug(提前测试) 而系统测试又能找出其余Bug中的80% 最后的5%的Bug可能只 有在用户的大范围、长时间使用后才会曝露出来,软件测试的规律,80/20原则 1.80%的工程量用在20%的需求上(关键需求)

7、 2.80%的开发成本花费在20%的部件上 3.80%的错误是由20%的部件引起的 4.80%的延期或返工是由20%的变更造成的 5.80%的系统资源是由20%的部件消耗的 6.80%的进度是由20%的人完成的,软件测试的重点,测试用例的良好设计 测试用例的设计是整个软件测试工作的核心 测试用例反映对被测对象的质量要求,决定对测试对象的质量评估,软件测试的重点,测试工作的管理 尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提 测试环境的建立 测试环境应该与实际测试环境一致,软件测试的质量,软件测试可以发现以下软件缺陷: 软件实现

8、的功能不正确 “缺少”:软件没有实现某项功能 “多余”,软件实现的某项功能在需求中没有定义 发现第一类软件缺陷的过程 - “验证” 发现后两类软件缺陷的过程 - “确认” “验证”和“确认”哪一个更重要?“确认”有必要吗?,软件测试度量,1、测试覆盖率 有多少需求、代码已经被测试了 2、缺陷发现率 缺陷是何时被发现,并且有多少缺陷已经被发现。缺陷可以根据严重性来分类。需记录以下值: 缺陷数目 缺陷的严重性,软件测试度量,3、测试成功率: 有多少测试已经通过了,并且有多少是运行正常的?需记录以下值: 已通过的测试用例的数目 可利用的测试用例的数目,软件测试的分类,典型的软件测试类型 功能测试 可

9、靠性测试 容错性测试 恢复测试 易用性测试,性能测试 可维护性测试 可移植性测试 安全性测试 用户文档测试,课程内容,软件测试基本概念 软件测试误区 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,软件测试误区,软件开发完成后进行软件测试;软件测试=程序测试; 软件质量问题是测试人员的错误,软件发布后如果发现问题,那是软件测试人员的错; 测试技术要求不高,比编程容易,随便找一个人就可以了; 测试跟着开发动,有时间就多测,没时间就少测; 测试是测试人员的事,与开发人员无关; 软件测试是没有前途的工作,只有程序员才是软件高手; 测试要执行所有可能的输入; 好的测试一定要使

10、用很多的测试工具。,软件测试工程师素质,基本素质: 沟通能力、自信心、幽默感、记忆力、耐心、怀疑精神、自我督促 洞察力 广泛的经验 表达能力、问题描述能力 会提问,会寻求Help 逻辑思维能力 团队协作能力 处理日常事务的能力和处理突发事件的能力,软件测试工程师素质,专业素质: 对于系统测试,把握需求是第一位的。对产品熟练,能够快速熟悉新的产品需求, 很强的需求理解能力显得很重要;(业务素质、需求分析能力) 测试基础:明确测试流程中各个阶段的工作,对测试的认知程度,决定了测试流程管理的规范性,测试工作的质量; 测试方案的分析设计能力、测试案例的设计能力(测试案例的覆盖率、优先级等); 测试工具

11、的使用(包括测试管理和测试执行工具,也包括开发工具的能力); 编程能力,数据库知识,网络知识,操作系统知识; 团队协作能力,与各个小组之间的沟通能力,以及管理测试工作的能力。,软件测试工程师分类,测试工程师一般分为两类:测试工具软件开发工程师和软件测试工程师。 -测试工具软件开发工程师主要负责编写测试工具代码,并利用测试工具对软件进行测试或开发测试工具为软件测试工程师服务。 -软件测试工程师主要负责理解产品的功能要求,然后对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,并写出相应的测试规范和测试案例。,课程内容,软件测试基本概念 软件测试误区 软件测试技术 软件测试方法 软件测试流程

12、 软件测试过程 微软软件测试简介,软件测试技术,牙医管理软件建设规划图,思考:,1、如何实现这种复杂的数据库关系?现在的关系型数据库能够实现吗?主要困难是什么? 2、统计某个口腔疾病患者的某次医疗记录是简单的。但是如果要统计某一个病人全年的医疗记录,将会遭遇如下困难: (1)需要花费2周编写复杂的SQL语句,如果数据库内容有改变,调试这些sql语句困难。 (2)因为共享数据库,这些长时间的读操作和运算操作势必影响到日常其他医生工作。 如何解决?,软件测试技术,黑盒测试/白盒测试 -从要不要看代码部分来区分 动态测试/静态测试 -从要不要运行软件来区分,黑盒测试和白盒测试,什么是黑盒测试(Bla

13、ck-box Testing) 功能测试,数据驱动测试:是在已知软件产品具有何种功能的前提下,用来检验每个功能是否能够正常使用的一个测试方法。 测试的方法和原理:把程序看成是一个不能打开的黑盒子,在不考虑程序内部结构的情况下,测试人员用操作接口的方式进行测试,检查程序能否按照需求指定的功能接收输入数据产生正确的结果。 黑盒测试主要在开发后期进行。基于对需求、设计、用户要求的理解 黑盒测试关注输入、输出的信息域,而不关注软件的内部结构 黑盒测试是穷举输入测试,黑盒测试和白盒测试,什么是白盒测试 白盒测试也称结构测试或逻辑驱动测试 必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计

14、正常运行 通过逻辑覆盖、路径覆盖等方式选择测试用例,可以用测试覆盖率评价测试用例 白盒测试法是否可以用穷举逻辑或路径法来测试?,黑盒测试和白盒测试,P,IN,OUT,白盒测试:,黑盒测试:,黑盒测试和白盒测试,黑盒测试主要工作:检查实现功能与实际需求的满足程度;(确认和验证的过程) 白盒测试主要工作: -代码检查(语法、逻辑、书写) -静态结构分析(内部关系如系统结构、函数调用关系等) -功能确认与接口分析(主要是确认过程) -逻辑覆盖率分析(内部的执行路径、提高软件的可靠性) -性能与效率分析 -内存分析(内存泄露、内存越界等),动态测试和静态测试,静态测试 不执行程序来寻找代码中存在的错误

15、或评估代码的过程。由人工来进行,发挥了人的逻辑思维的优势或测试经验。能够批量性地发现问题,并直接定位到缺陷或错误的具体位置。 用静态测试来进行代码检查、静态结构分析。 动态测试 必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析测试质量依赖于测试数据 生成测试数据、分析测试结果的工作量大,使开展测试工作费时、费力、费人,动态测试和静态测试,静态测试 静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估 静态测试包括代码检查、程序结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行 代码检查比动态测试更有效率,能快速找到缺陷,发 现3

16、0%70%的逻辑设计和编码缺陷,课程内容,软件测试基本概念 软件测试误区 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,手工测试和自动测试,手工测试 自动测试 适合自动化的测试操作 手工测试和自动测试的比较,手工测试,传统的测试方法 由测试人员手工编写测试用例 缺点在于测试工作量大,重复多,回归测试难以实现,自动测试,利用软件测试工具自动实现全部或部分测试工作:管理、设计、执行和报告 自动测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试 自动化测试前必须首先手工测试(调试) 缺点:无法及时进行动态调整和数理分析,例如:计算正确不代表逻辑性上没有错误;,适

17、合自动化的测试操作,测试用例的生成(包括测试输入,标准输出,测试操作指令等) 测试的执行与控制(包括单机与网络多机分布运行;夜间及假日运行) 测试对象、范围、版本等的控制,适合自动化的测试操作,测试结果与预期输出的对比 不吻合的测试结果的分析、记录、分类、和通报 测试的统计,报表的产生,手工测试和自动测试的比较,手工完成测试的全部过程无法保证测试的科学性与严密性: 修改的缺陷越多,回归测试越困难 没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率 反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一 测试花费的时间越长,测试的严格性也就越低 难以对不可视对象或对象的不可视属性进行

18、测试。,手工测试和自动测试的比较,自动测试将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析 软件测试不可能完全自动化 不能完成所有手工测试任务 无创造性且灵活性差,不能改进测试的有效性 过程中可能会遇到许多意想不到的问题,特别是当软件不稳定时 测试脚本的维护高,课程内容,软件测试基本概念 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,测试流程,单元测试 集成测试 系统测试 用户验收测试 回归测试,V模型示意图,单元测试,完成对最小的软件设计单元模块的验证工作 目标是确保模块被正确地编码 使用过程设计描述作为指南,对重要的控制路径进行测试

19、以发现模块内的错误 通常情况下是面向白盒的 对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误,单元测试,单元测试的内容 接口测试:保证进出单元模块的数据流是正确的。 内部数据结构:保证临时存储的数据在算法执行过程中的完整性 全局数据结构:全局数据结构对单元模块的影响应当审查 边界:采用边界值分析技术,保证模块在边界条件和极限情况下正常执行 语句覆盖:保证每个语句均执行一次 错误路径:对所有处理错误的路径进行测试,集成测试,通过测试发现与模块接口有关的问题 目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构 应当避免一次性的集成(除非软件规

20、模很小),而采用增量集成,集成测试,集成测试主要内容 API API/参数组合 子模块 ,系统测试,根据软件需求规范的要求进行系统测试,确认系统满足需求的要求 系统测试人员相当于用户代言人 在需求分析阶段要确定软件的可测性,保证有效完成系统测试工作,系统测试,系统测试主要内容 所有功能需求得到满足 所有性能需求得到满足 其他需求(例如安全性、容错性、兼容性等)得到满足,用户验收/确认测试,配置审查 确保已开发软件的所有文件资料均已编写齐全,并分类编目 Alpha测试 是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的,用户验收/确认测试,Beta测试 由软件的最终用户在一

21、个或多个用户场所来进行的 开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者 开发者对系统进行最后的修改,并开始准备发布最终的软件,回归测试,当发现并修改缺陷后,或者在软件中添加新功能后,重新测试,用来检查被发现的缺陷是否被改正,并且所作的修改没有引发新的问题 回归测试可以通过人工重新执行测试用例,也可以使用自动化的捕获回放工具来进行,回归测试,回归测试方式 再测试全部用例 选择基线测试用例库中的全部测试用例组成回归测试包,测试成本最高 基于风险选择测试 可以基于一定的风险标准来从基线测试用例库中选择回归测试包,各阶段测试所使用的方法技术,单元测试 白盒、自动、静态 集成测试 白盒、黑

22、盒、自动、静态 系统测试 黑盒、自动、手工 用户验收/确认测试 黑盒、自动、手工,课程内容,软件测试基本概念 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,测试基本过程,一个规范化的软件测试过程包括以下基本的测试活动 拟定软件测试计划、方案 设计和生成测试用例、准备测试数据 执行测试,记录原始数据,对缺陷进行管理 生成软件测试报告、缺陷的统计和报表,测试基本过程,测试基本过程,软件测试过程与整个软件开发过程基本上是平行进行的 一个开发机构还应当制定软件测试规程,按照软件工程的规范,定义各项活动的目标和详细过程,测试基本过程示图,测试基本过程,测试计划 时间进度和人员

23、安排、风险管理 测试范围的确定、测试数据的生成 测试工具、方法的选择和工具开发 测试完成标准 影响资源分配的特殊考虑等,测试基本过程,测试方案 定义被测软件功能以及相关的测试,并详细说明的测试方法和策略 创建测试方案是开始测试设计的第一步。测试方案的定义应当基于需求分析和设计文档,并遵从测试计划文档,测试基本过程,测试用例 为实施一次测试而向被测系统提供的输入数据、操作或各种环境设置 控制着软件测试的执行步骤 是对测试方案中每个测试项的进一步实例化,测试基本过程,接口与路径测试用例(单元测试),测试基本过程,功能测试用例(系统测试),测试基本过程,性能测试用例(系统测试、验收测试),测试基本过

24、程,测试用例的几条基本准则 测试用例的代表性:代表各种合理和不合理的、合法的和非法的、边界和越界的。以及极限的输人数据、操作和环境设置等。 测试结果的可判定性 测试结果的可再现性,测试基本过程,如何编写/生成测试用例 对于手动执行的测试用例 确定测试用例,描述执行步骤及预期结果 对于可自动执行的测试用例 采用工具录制回放脚本 性能测试工具 使用通用的脚本语言,测试基本过程,软件测试的执行 执行测试用例 记录原始测试数据 记录缺陷 对所发现的缺陷进行跟踪、管理和监控,测试基本过程,测试评估 结合量化的测试覆盖率及缺陷跟踪报告,对整个软件质量、测试工作和软件缺陷进行总结 对软件项目的质量和开发团队

25、的工作进度及工作效率进行综合评价 生成相应报告或报表,测试基本过程,测试报告 总结测试的结果,通过与未通过的测试用例,并对被测软件对象进行评估 测试总结: 评价软件质量 分析提交客户后的缺陷预测分析,以及维护成本分析 对测试工作进行经验、教训、建议总结,测试基本过程,好的测试报告 针对检测内容,对网站的功能完备性、系统安全性及系统性能进行专项定性分析;按照项目分类归并,对每一类错误或异常情况进行细致分析,指出问题存在位置、问题类型、问题严重程度、问题产生的可能原因及错误归属方、问题整改大致所需时间等;,软件测试的管理,测试管理从功能应用上可分为三部分: 测试管理控制对象的编辑和管理 测试计划、

26、测试用例、缺陷报告、测试总结报告等 测试流程控制和管理 统计分析和决策支持,测试的组织方式小组,测试小组内部分为测试人员和支持人员(管理人员属于支持人员) 测试的工作实体是测试小组和支持小组,分别由小组长全权负责。小组长向测试主管负责 测试组长是测试对外的唯一接口,对内完全负责组员的工作安排、工作检查和进度管理,测试的组织方式小组,支持小组负责测试的后勤保障和日常管理工作:负责网络管理、数据备份、文档管理、设备管理和维护、员工内部培训、测试理论和技术应用、日常事务管理和检查等 测试组应当长期研究和跟踪竞争对手的软件特征、性能、优缺点等。在需求分析、设计阶段应多多参与,测试的运作方式,测试项目组

27、关心的系统测试流程: 项目组提交系统测试申请,给测试指定帐号 由专人检查文档格式和完备性 检查合格后交给该软件对应方向的研究人员,评价其内容的有效性和真实性 检查合格后由测试主管审查并通过,成立测试组,指定测试组长,测试的运作方式,测试组长/成员根据该软件的需求报告、测试计划和以往测试数据,制定测试方案 测试主管审核通过测试方案后,根据测试方案指定测试组成员,并由支持组完成其他支持任务(如:设备的配备、测试数据库的建立、网络权限的修改),课程内容,软件测试基本概念 软件测试技术 软件测试方法 软件测试流程 软件测试过程 微软软件测试简介,微软公司软件测试简介,基本思想 测试人员 测试文档,基本

28、思想,测试人员的任务就是站在使用者的角度上,通过不断地使用和攻击刚开发出来的软件,尽量多地找出软件中存在的问题,基本思想,在测试时主要考虑以下几个问题: 测试要考虑到所有的出错可能性。同时要做一些不是按常规做的操作 除了缺陷之外,测试还应考虑性能问题,保证软件运行良好,速度稳定,没有内存泄露,不会出现软件运行越来越慢的情形 测试要考虑软件的兼容性,软件测试人员,软件测试人员分为: 测试工具软件开发工程师 软件测试工程师 管理层,软件测试人员,测试工具软件开发工程师主要负责编写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务 软件测试工程师主要负责理解软件的功能要

29、求,然后对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,并写出相应的测试方案和测试用例 在微软内部,软件测试人员与软件开发人员的比率一般为1.52.5左右,微软软件开发的实践过程已经证明这种人员结构的合理性,测试中使用的测试文档,测试计划 测试方案 测试用例 缺陷报告 测试报告 进度报告、测试记录等,测试计划,测试计划和软件开发紧密相关,所有大型的商业软件都需要完整的测试计划,需要具体到每一个步骤,并且每一个部分都要符合规范要求,测试计划,测试计划包括内容: 概述 测试目标和发布标准 计划将测试的领域 测试方法描述 测试进度表 测试资源 配置范围和测试工具,测试方案,测试方案用来描述

30、在测试计划中确定的软件测试领域的测试需求 编写测试方案,需要参照项目经理写的软件规范,开发人员写的开发计划 每个领域都应该有一份详细的测试方案,所以还需要参照测试计划,测试方案,测试方案包括的内容: 背景信息 被测试的特性 功能考虑 测试考虑 测试流程,测试用例,测试用例是指描述如何测试某一个领域的文档,这些文档符合测试方案中的需求说明 测试用例没有固定格式,测试报告,测试管理人员以测试报告的形式向整个软件开发部门报告测试结果及发现的缺陷或错误 撰写测试报告的目的是为了让整个软件开发部门了解软件开发的进展情况,以使缺陷能够迅速得到修复 测试报告的格式并无定式,要求能够完整、清楚地反映当前的测试进展情况,明白易懂,无二义性,缺陷报告,测试人员以缺陷报告的形式向开发人员报告所发现的缺陷或错误 撰写缺陷报告的目的是为了使缺陷能够得到修复 测试人员的缺陷报告撰写的好坏会直接影响到开发人员对缺陷的修复,缺陷报告的内容,缺陷名称 被测试软件的版本 优先级与严重性 发现缺陷的测试步骤 缺陷造成的后果 预计的操作结果 其他信息,课后习题,第一题: 简述软件测试的方法和策略 第二题: 简述软件测试流程与软件研发流程的对应关系,写出每一个测试阶段的主要内容。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1