测试计划与软件缺陷.docx

上传人:b****5 文档编号:30727835 上传时间:2023-08-19 格式:DOCX 页数:27 大小:337.06KB
下载 相关 举报
测试计划与软件缺陷.docx_第1页
第1页 / 共27页
测试计划与软件缺陷.docx_第2页
第2页 / 共27页
测试计划与软件缺陷.docx_第3页
第3页 / 共27页
测试计划与软件缺陷.docx_第4页
第4页 / 共27页
测试计划与软件缺陷.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

测试计划与软件缺陷.docx

《测试计划与软件缺陷.docx》由会员分享,可在线阅读,更多相关《测试计划与软件缺陷.docx(27页珍藏版)》请在冰豆网上搜索。

测试计划与软件缺陷.docx

测试计划与软件缺陷

测试计划与软件缺陷

北大青鸟专用

陶陶

2009-3-15

本课程是软件测试重点课程。

本课程主要介绍软件测试的基本概念和基础知识、如何编写测试计划、识别软件缺陷、编写缺陷报告等。

通过学习,学员可以掌握软件测试的流程、软件测试的策略和分类,掌握缺陷的分类和优先级等,从而对测试有一个整体的认识。

本课程中介绍了Bugzilla缺陷跟踪管理系统(测试工具)。

总体来说,本课程将使学员掌握软件测试相关的大部分基础知识。

 

目录

第1章什么是软件测试4

软件的定义4

软件测试的产生4

软件测试的意义4

软件测试的概念4

软件测试的定义4

软件测试活动一般包含4

软件测试的目的5

测试的目的5

测试与调试的区别5

软件测试员必备的素质5

第2章识别和描述缺陷5

产生缺陷的原因5

判断发现的问题是否是缺陷的方法6

再现(又叫重现)与优化缺陷的必要性6

再现与优化缺陷的方法6

怎样有效记录缺陷6

第3章识别和描述缺陷实践(略)7

第4章编写和管理缺陷报告7

缺陷报告的用途7

缺陷分类7

缺陷报告的分类7

缺陷报告的处理流程8

使用Bugzilla缺陷跟踪系统9

小结9

第5章使用缺陷跟踪系统(略)9

第6章编写软件测试计划9

软件生命周期9

软件生命周期的瀑布模型10

软件生命周期的螺旋模型10

软件测试的生命周期11

测试计划内容11

风险和问题11

第7章制定软件测试计划实战(略)12

第8章软件测试流程和分类12

软件测试流程图(需求阶段)12

软件测试流程图(设计编码阶段)12

软件测试流程图(集成、系统、验收)12

软件测试的过程13

软件测试的分类13

第9章编写缺陷报告实战(略)14

第10章正确理解软件测试14

软件测试的原则14

什么是评审14

软件质量与软件过程的关系14

软件测试与软件过程的关系15

软件测试与软件质量的关系15

正确认识软件测试15

关于处理缺陷16

第11章编写缺陷报告实战(略)16

第12章软件测试计划16

什么是测试计划16

为什么要制定测试计划16

什么时候开始制定测试计划16

软件测试计划的基本结构16

第13章调整测试计划实战(略)17

第14章软件与软件测试17

软件的特点17

软件的分类17

关于单元测试17

单元测试的意义17

桩模块(Stub)和驱动模块(Driver)18

关于集成测试18

第15章处理缺陷报告实战(略)18

第16章软件测试经验分析(略)18

第17章处理缺陷报告实战(略)18

第18章软件测试评估总结文档组织18

评估的方法18

第19章编写测试总结实战(略)19

第20章软件测试过程改进19

过程改进的步骤19

软件测试的六个要点20

第1章什么是软件测试

软件的定义

软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它是包括程序(program)、文档(document)的完整集合。

软件与程序的区别

软件=程序+文档

软件测试的产生

原因一:

程序规模的爆炸式增长

⏹程序代码规模显著增大

⏹程序结构和算法更加复杂

⏹程序模块间接口增多

原因二:

在程序员与用户需求间寻找平衡点

⏹程序员在开发过程关注什么?

⏹设计需求

⏹技术内涵

⏹用户关注什么?

⏹满足自身特定的需求

⏹优秀的软件产品的特点是什么?

⏹在程序自身的技术内涵和用户特定领域的需求间找到平衡点

软件测试的意义

解放程序员和售后服务人员

软件测试可以降低软件质量风险,使程序员能够更专心于解决程序的算法和效率;同时经过严格检验的完整产品也减轻了售后服务人员的工作量。

软件测试的概念

1.是为了发现错误而执行程序的过程。

2.应关心程序的效率和鲁棒性等因素。

3.检验软件是否满足规定的需求。

4.弄清预期与实际结果之间的差别。

备注:

所谓“鲁棒性”,是英文“robust”的译音,指强壮、健壮的意思。

软件的“鲁棒性”,是指系统在一定条件下维持某些性能的特性,简单地说,就是适应各种各样的变化的能力。

鲁棒性越强,系统精确度就愈高,性能越好。

软件测试的定义

使用人工或自动手段,来运行或测试某个系统的过程。

其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

软件测试活动一般包含

1.制订测试计划

2.设计测试用例

3.实施测试

4.提交缺陷报告

5.测试总结

软件测试的目的

测试是程序的执行过程,目的在于发现错误。

一个成功的测试用例在于发现至今未发现的错误。

一个成功的测试是发现了至今未发现的错误的测试。

测试的目的

1.确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。

2.确保产品满足性能和效率的要求

3.确保产品是健壮的和适应用户环境的

测试与调试的区别

测试

调试

发现软件的错误(测试人员不负责修改错误)

确定程序中错误的确切位置,对程序(设计,编码)进行修改,排除错误。

贯穿整个软件生命周期

主要在开发阶段

测试人员和程序员参与

程序员参与

软件测试员必备的素质

⏹责任心

⏹沟通能力

⏹团队合作精神

⏹耐心、细心、信心

⏹时时保持怀疑态度,并且有缺陷预防的意识

⏹具备一定的编程经验

第2章识别和描述缺陷

缺陷:

不满足用户确定需求

注:

缺陷不仅仅特指那些我们常见的程序错误,那些“不符合设计要求”和“不满足用户需求的”的问题也是缺陷,而且是更加严重的缺陷。

产生缺陷的原因

1.人员之间的沟通交流不够,交流上有误解或者根本不进行交流

2.文档不完善

3.需求不断的变化

4.参与人员的过度自信

5.程序设计本身有错误

6.软件复杂性

7.工期短,任务重,时间压力大

8.软件开发工具与系统软硬件的支持

判断发现的问题是否是缺陷的方法

1.通过参考文档来确认缺陷(辅助工具:

需求分析书、用户手册、联机帮助)

2.通过了解软件产品的行业背景(或参考同类典型软件)来发现缺陷

3.通过沟通来确认和识别缺陷

再现(又叫重现)与优化缺陷的必要性

⏹优化缺陷并不是指优化缺陷本身,而是优化缺陷的再现步骤。

⏹关于软件中“随机”出现的缺陷。

所谓“随机”软件缺陷不过是对软件缺陷重现状态的一种描述方法,将产生这种“随机”缺陷的所有输入条件筛选出来之后,这种在测试中的“随机”出现的缺陷就会百分之百地重现。

再现与优化缺陷的方法

1.不要想当然的接受任何假设

2.查找时间依赖和竞争条件的问题

3.与压力和负荷相关的边界条件软件缺陷、内存泄漏和数据溢出缺陷的发生有一定的前提条件

4.状态缺陷仅在特定软件状态中显露,状态缺陷的例子是软件缺陷仅在软件第一次运行或者在此第一次运行之后出现

5.考虑资源依赖性和内存、网络、硬件共享的相互作用

6.关注硬件的失效问题,硬件可能不按照预定方式工作

7.关注软件的失效问题,对缺陷的修改可能会引发新的缺陷

8.从阅读缺陷报告入手

怎样有效记录缺陷

1.保证重现缺陷

2.分析故障,使用最少步骤复现故障

3.包含所有重现缺陷的必要步骤

4.方便阅读

5.尽量简单——一个缺陷一个报告

6.注意自己的语气

7.值得注意的经验

第3章识别和描述缺陷实践(略)

第4章编写和管理缺陷报告

缺陷报告的用途

1.记录缺陷

2.缺陷分类

3.缺陷跟踪

缺陷分类

1.按问题引出不同

1)按功能(模块)

2)按缺陷的严重程度

3)影响进度的问题

4)死机

5)功能问题

6)界面问题

7)建议

2.按修复缺陷的优先级

1)应立即修复的问题

2)在产品发布之前必须修复的问题

3)如果时间允许应该修复的问题

4)可以在发布版本中存在的问题

备注:

缺陷的严重程度和优先级各软件公司可根据实际情况自行确定。

缺陷报告的分类

1)按缺陷所处状态分类

待确认的

新提交的

已分配的

问题未解决的

待返测的

待归档的

已归档的

2)按处理意见分类

已修改的

不是问题

无法修改

以后版本解决

保留

重复

无法重现

缺陷报告的处理流程

测试经理或测试人员

测试人员

测试人员

开发人员

测试经理或开发经理

缺陷报告处理流程一

缺陷报告处理流程二

缺陷报告处理流程三

使用Bugzilla缺陷跟踪系统

vBugzilla各项内容含义

⏹硬件平台和操作系统

⏹版本

⏹报告优先级

⏹严重程度

⏹报告人

⏹指定处理人

⏹概述

⏹邮件抄送列表

⏹从属关系

⏹附加描述

vBug报告检索

小结

1.缺陷报告的分类

1)按处理意见分类

2)按处理状态分类

2.缺陷报告处理流程

1)提交缺陷报告

2)处理缺陷报告

3)返测缺陷报告

4)关闭缺陷报告

第5章使用缺陷跟踪系统(略)

第6章编写软件测试计划

软件生命周期

软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。

软件生命周期的瀑布模型

计划、需求分析、软件设计(概要设计和详细设计)、编码、测试、运行和维护。

特点:

1.非常强调产品的定义

2.分立的,没有交叉的

3.无法回溯

4.测试软件是生命周期的一个阶段

软件生命周期的螺旋模型

确定目标、可选方案和限制条件->指出并解决风险->评估方案->本阶段开发和测试->计划下一阶段->确定进入下一阶段的方法。

特点:

1.开始不必详细定义所有细节

2.从小开始,定义重要功能,努力实现

3.接受反馈,进入下一次循环

4.测试活动贯穿于每个循环

⏹首先螺旋模型是遵从瀑布模型的.即需求->架构->设计->开发->测试的路线.螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的.通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险.

⏹螺旋模型的每一次迭代都包含了以下六个步骤:

1.决定目标,替代方案和约束

2.识别和解决项目的风险

3.评估技术方案和替代解决方案

4.开发本次迭代的交付物和验证迭代产出的正确性.

5.计划下一次迭代

6.提交下一次迭代的步骤和方案.

软件测试的生命周期

制定测试计划、测试设计和开发、实施测试、评估测试。

测试计划内容

1.测试目的与项目简介(目的、背景、范围)

2.测试参考文档和提交文档

3.测试策略(功能测试、界面测试、值域测试、压力测试、负载测试、安装测试、安全测试、版本测试、恢复测试、裸机测试等)

4.确认测试

5.资源(角色、系统)

6.测试进度(资源要求与时间安排、项目里程碑)

7.测试人员分配

8.风险分析

风险和问题

⏹市场的压力

⏹测试时间不够,主要是功能冻结后的系统测试的时间可能不够

⏹测试资源是否能及时到位(设备和人员)

⏹测试人员的培训

⏹开发进度的变化,需求或设计的变更

⏹测试人员的基础培训

⏹开发组的版本控制

第7章制定软件测试计划实战(略)

第8章软件测试流程和分类

软件测试流程图(需求阶段)

软件测试流程图(设计编码阶段)

软件测试流程图(集成、系统、验收)

软件测试的过程

软件测试的分类

v按测试策略分类

v黑盒/白盒测试、动态/静态测试、手工/自动测试

v按测试阶段分类

v单元测试、集成测试、(确认测试)、系统测试、验收测试

v按测试方法分类

v功能测试、性能测试、压力测试、负载测试、易用性测试、安装测试、界面测试、配置测试、文档测试、兼容性测试、安全性测试、恢复测试

单元测试:

又称模块测试,是最小单位的测试,单元测试是在系统开发过程中进行的测试活动。

目的是确保每个模块能正常工作。

集成测试:

又称综合测试,是在单元测试的基础上将通过测试的单元模块按照设计要求组装成系统或子系统,再进行测试。

目的在于检验与软件设计相关的程序结构问题。

确认测试:

软件在由集成测试进入系统测试之前,需要对软件是否可以进入系统测试进行评估过程的测试。

系统测试:

是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机的硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际的运行环境下,对计算机系统进行全面的功能覆盖。

验收测试:

是软件产品交付用户正式使用前的最后一头工序,是以用户为主的测试。

目的是向客户和承包人证明产品是可靠的。

黑盒测试:

又称功能测试、数据驱动测试或基于规格说明书的测试。

白盒测试:

又称结构测试、逻辑驱动测试或基于程序本身的测试。

冒烟测试:

对应用程序关键的功能进行的测试。

回归测试:

对某些已经进行过的测试的某些子集再重新进行一遍,已保证上述改变不会传播无法预料的副作用或引发的问题。

Alpha测试:

由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。

Beta测试:

由软件的最终用户们在一个或多个客房场所进行。

手工测试与自动测试的区别:

第9章编写缺陷报告实战(略)

第10章正确理解软件测试

软件测试的原则

1.尽早地进行软件测试,并把软件测试贯穿于整个软件生命周期。

2.软件测试应追溯需求。

3.测试应由第三方来构造。

4.穷举测试是不可能的,要遵循Good-enough原则。

5.必须确定预期输出结果。

6.必须彻底检查每个测试结果。

7.充分注意测试中的群集现象。

8.其他值得注意的规律和经验。

什么是评审

在正式的会议上将软件项目的成果(包括各阶段的文档、产生的代码等)提交给用户、客户或有关部门人员对软件产品进行评审和批准。

其目的是找出可能影响软件产品质量、开发过程、维护工作的适用性和环境方面的设计缺陷,并采取补救措施,以及找出在性能、安全性和经济方面的可能的改进。

软件质量与软件过程的关系

⏹软件质量:

软件产品的特性可以满足用户的功能、性能需求的能力。

⏹软件过程:

软件生命周期中的活动,一般包括软件需求分析、软件设计、软件编码、软件测试、交付、安装和软件维护。

⏹软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。

人员和过程是决定软件质量的关键因素,高质量的人员和好的过程应该得到好的产品。

软件测试与软件过程的关系

⏹在软件过程中注意把握测试的对象

⏹软件测试在软件生存周期中的位置

⏹软件测试在软件生存周期中占有非常重要的位置,是对软件规格说明、设计和编码的最后终审。

软件测试与软件质量的关系

⏹软件系统的开发包括一系列生产活动,其中由人带来的错误因素非常多。

错误可能出现在程序的最初……,其实目标可能是错误的或描述不完整,也可能在后期的设计和开发阶段……,因为人们不能完好无缺地工作和交流,软件开发过程中必须伴有质量保证活动。

⏹软件测试是软件质量保证的重要手段,是规约、设计和编码的最终检查

正确认识软件测试

1.软件的质量不是靠测出来的

2.软件测试真的比开发容易么?

⏹测试人员发现缺陷是测试的初步,还要分析定位缺陷;而且测试人员需要发现潜在的难以被发现的缺陷

⏹测试人员需要开发测试工具和自动测试脚本

⏹测试人员必须精通整个业务

3.软件测试需要开发与测试人员的共同努力

⏹破坏性、建设性

⏹考虑角度不同

4.软件测试不是软件开发过程中的一个阶段(V模型)

计划验收测试

计划系统测试

计划集成测试

计划单元测试

关于处理缺陷

1.注意缺陷报告的处理成本

2.修改缺陷要量力而行

3.关注被推迟修改的缺陷

4.如果决定据理力争就一定要赢

第11章编写缺陷报告实战(略)

第12章软件测试计划

什么是测试计划

软件测试计划就是在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划,保证有效的实施软件测试。

为什么要制定测试计划

1.把知识和经验直接转化为执行任务的具体方法

2.促进团队间关于测试任务和过程的交流

3.为组织、安排和管理测试项目提供一个整体框架

4.对项目执行过程中的风险进行分析,并制定相关的应对策略

什么时候开始制定测试计划

1.软件测试计划应当尽早的制定

2.软件测试计划在测试活动中处于中心位置

3.它设定了测试准备工作和执行测试的必备的条件

4.同时形成了测试过程质量保证的基础

软件测试计划的基本结构

v测试计划的简介

v测试项目说明

v需要测试的项目清单

v测试手段和策略

v项目通过或失败的标准

v暂停和重新启动测试的标准

v测试的可交付性

v测试任务

v环境的需求

v职责

v人员和培训需求

v进度表

v风险及偶然事故的预测

第13章调整测试计划实战(略)

第14章软件与软件测试

软件的特点

v软件是一种逻辑实体

v软件的生产与硬件的生产不同

v软件运行和使用没有机械磨损和老化问题

v开发和运行对计算机系统有一定的依赖

v目前还没有摆脱手工艺的开发方式

v软件是复杂的

v软件成本相当昂贵

v软件的作用越来越突出

v相当多的软件工作涉及到社会因素

软件的分类

按软件的技术特点划分

⏹业务(Business)软件

v管理信息系统(MIS)

v企业资源规划系统(ERP)

v决策支持系统(DSS)

⏹科技计算软件(图形计算)

⏹嵌入式(Embedded)软件

v首先在宿主机(HOST)上用某种语言开发,经交叉编译后成为单片机的机器码程序,“烧入”单片机,称为嵌入式。

⏹实时(Real-time)软件(火灾自动报警系统)

⏹个人计算机软件

⏹人工智能软件

人工智能是相对于人类智能而言的。

它是指用机械和电子装置来模拟和代替人类的某些智能。

人工智能也称“机器智能”或“智能模拟”。

当今人工智能主要是利用电子技术成果和仿生学方法,从大脑的结构方面模拟人脑的活动,即结构模拟。

关于单元测试

v单元测试多采用白盒测试技术

v静态审查代码

v动态单元测试

单元测试的意义

⏹一个好的单元测试将会在产品开发的阶段发现大部分的缺陷,并且修改它们的成本也很低

⏹在软件开发的后期阶段,缺陷的发现并修改将会变得更加困难,并要消耗大量的时间和开发费用

⏹无论什么时候做出修改都要进行回归测试

⏹经过单元测试的系统,系统集成过程将会大大地简化

⏹选择正确的测试策略

桩模块(Stub)和驱动模块(Driver)

桩模块:

集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。

驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块。

关于集成测试

v非增式集成方法

v增式集成方法

⏹自顶向下测试

⏹自底向上测试

第15章处理缺陷报告实战(略)

第16章软件测试经验分析(略)

第17章处理缺陷报告实战(略)

第18章软件测试评估总结文档组织

评估的方法

1.覆盖评测

⏹基于需求的测试覆盖

测试覆盖(已执行的)=Tx/RfT

成功的测试覆盖(已执行的)=Ts/RfT

⏹基于代码的测试覆盖

测试覆盖=Tc/Tiic

2.质量评测

◆缺陷报告

缺陷分布(密度)报告

»缺陷状态与优先级

»缺陷状态与严重性

–缺陷龄期报告

–缺陷趋势报告

◆性能评测

⏹动态监测

⏹响应时间/吞吐量

⏹百分位报告

⏹比较报告

⏹追踪报告

第19章编写测试总结实战(略)

第20章软件测试过程改进

过程改进的步骤

⏹填写附录表格(步骤一)

⏹拟订改进目标(步骤二)

⏹CMM

⏹把过程改进当项目处理(步骤四)

⏹逐步引入变更(步骤六)

软件测试的六个要点

⏹测试过程的质量决定测试工作的成败

⏹使用早期软件生存周期测试技术可避免缺陷转移到后续阶段

⏹测试工具应用(捕获/回放工具、结构覆盖工具)

⏹改进测试过程必须有专人负责

⏹测试是一个专业技术学科,要求富有经验的专门技术人员

⏹培养创新的、积极的合作精神

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1