资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件测试,概述,个人介绍,姓名:李鹤林,Email:,软件测试背景,软件是人编的所以不完美,软件缺陷的例子,迪斯尼的狮子王,英特尔奔腾浮点错误,千年虫,美国航天局火星极地登陆事故,爱国者导弹防御系统,描述软件失败的术语,缺点(defect),谬误(fault),问题(problem),错误(error),毛病(incident),异常(anomaly),偏差(variance),失败(failure),矛盾(inconsistency),特殊(feature),缺陷(bug),软件缺陷,软件未达到产品说明书标明的功能,软件出现了产品说明书指明不会出现的错误,软件功能超出产品说明书指明范围,软件未达到产品说明书虽未指出但应达到的目标,软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好,为什么会出现软件缺陷,软件缺陷的修复成本,软件测试员究竟做什么,软件测试员的目标是找出软件缺陷,尽可能早一些,并确保其得以修复。,怎样成为优秀的软件测试员,软件测试员应具备的素质:,探索精神,故障排除能手,不懈努力,创造性,追求完美,判断准确,老练稳重,说服力,软件产品的组成部分,客户需求-Customer Requirements,市场需求文档-MRD(Marketing Requirement Document),软件规格说明书-Specifications,技术设计文档 Technical Design Docs,测试文档 Test Documents,在线帮助-Online help,产品发布注释-Release Notes/Read Me,产品软件包-Release packages,软件产品的其他内容,帮助文件 Help files,示例 Samples and examples to illustrate points,产品支持文档 Product support information,错误信息 Error messages,安装手册 Setup and installation instructions,用户手册 User manual(s),产品标签 Label and stickers,产品广告或宣传材料 Ads and marketing material,软件的生存周期,制定计划(Planning),需求分析和定义(Requirement Analysis and Definition),软件设计(Software Design),程序编写(Coding,Programming),软件测试(Testing),运行/维护(Running/Maintenance),软件开发过程,需求分析:,根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。,设计:,根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。,编程:,将设计转换成计算机可读的形式。,测试:,对设计、编程进行验证和用户需求确认的过程,维护:,维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。,软件开发过程模型,瀑布开发模型,原型开发模型,快速应用开发(RAD)模型,RUP开发模型,迭代开发模型,增量开发模型,组件开发模型,并发开发模型,XP开发模型,瀑布模型,快速原型模型,增量开发,1,1,2,1,2,3,4,1,2,3,迭代开发,1,1,2,1,2,3,4,1,2,3,软件的质量问题,已交付的软件频繁的出现故障,系统运行失败所带来的后果令人无法接受,如经济损失甚至威胁生命安全。,系统经常不能实现预期的目的。,系统升级的成本很高。,发现并排除缺陷的成本过高。,软件测试历史,软件测试分类,开发阶段与测试类型,测试方法,黑盒子和白盒子,静态的和动态的,文档、代码审查,数据输入边界条件法,等价划分、数据流程图,状态变换图,逻辑路径法,黑盒测试与白盒测试,黑盒测试,在黑盒测试中,软件测试员只需知道软件要做什么即可而无法看到盒子是如何运作的。只要进行一些输入,就能得到某种输出结果。,白盒测试,在白盒测试中,软件测试员可以访问程序员的代码,并通过检查代码来协助测试可以看到盒子里面。根据代码检查结果判断多大的数据可能出错,并椐此调整测试程序。,静态测试与动态测试,静态测试,静态测试是指测试不运行的部分只是检查和审阅,动态测试,动态测试是指通常意义上的测试运行和使用软件。,一个测试的生命周期,测试过程,测试过程可以分为如下步骤:,测试计划,测试用例开发,运行测试用例,评估测试结果,测试用例,软件测试的本质是针对要测试的内容确定一组测试用例,在测试中占据中心地位。,测试用例包含的信息,输入:前提(在测试用例执行之前已经存在的环境)和由某种测试方法所标识的实际输入),输出:后果和实际输出,测试用例的重要性,制作测试用例是软件测试员最 重要的一项任务。不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。,测试员能准确评估风险,把不可穷尽的可能性减少到可以控制的范围是成功的诀窍。,测试人员的数学背景,测试本身要进行数学描述和分析,通过这些数学工具,测试人员会变得严格、精确和高效。,离散数学:包括集合论、函数、关系、命题逻辑和概率论,图论:无向图和有向图,离散数学更适用于功能性测试。,图论更适合结构性测试,测试原则,完全测试程序是不可能的,软件测试是有风险的行为,测试无法显示潜伏的软件缺陷,找到的软件缺陷越多,说明软件缺陷越多,杀虫剂怪事,并非所有软件缺陷都能修复,难以说清的软件缺陷,需求说明书不断变化,软件测试人员在项目组中不受欢迎,软件测试是一项讲究条理的技术专业,小结,软件缺陷,软件测试的重要性,软件开发过程,软件测试方法,软件测试原则,
展开阅读全文