您好,欢迎访问三七文档
2019年12月15日1软件测试基础天高任你飞2019年12月15日2Confidential内容提要软件测试基础软件测试内容软件测试技术软件测试实施天高任你飞2019年12月15日3Confidential我们真的懂测试吗没有错误的程序世间难求。我们在学校里学过测试吗?临时抱佛脚行吗?有文档模板就会测试了吗?如果不懂得有效地进行测试,我们不仅得不到功劳,也没人欣赏我们的苦劳,我们拥有最多的将只是疲劳。什么是软件测试在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤软件测试是对软件建立信心的过程测试是评估软件或系统的品质或能力的一种积极的行为测试是证明软件正确的方法测试是为了发现软件中的错误测试是为了减小软件不工作的风险测试是检验软件是否满足规定的需求软件测试基础(1)天高任你飞2019年12月15日4Confidential总结:软件是设计出来的,测试是保证软件质量必要的手段。软件测试要解决的问题是:软件的行为是否符合“规定的”要求,它有两个方面的含义:Doesitdoeverythingitisspecifiedtodo?软件是否做了被规定做的任何事情?(按照规定判定缺陷PR)Doesitdoanythingitisnotspecifiedtodo?软件是否做了没有规定要做的某些事情?(没有规定的事情,如果做了需要提交项目组讨论是否应该保留;没有规定的事情,从顾客利益出发需要,但没有做需要提交变更请求CR)软件测试基础(2)天高任你飞2019年12月15日5Confidential一些常识和经验之谈测试能提高软件的质量,但是提高质量不能依赖测试。测试只能证明缺陷存在,不能证明缺陷不存在。“彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。每个开发人员应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据,所以项目需要独立测试人员。80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会经常出错测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”。软件测试基础(3)天高任你飞2019年12月15日6Confidential软件测试基础(4)软件测试是一项工程,是软件工程必不可少的组成部分测试是一个非常复杂的过程,不仅要掌握相应的技术和方法,而且还要懂得在什么时候、什么情况下使用什么方法,这就是软件测试的策略问题。另外,软件测试的实施需要有效的管理,仅靠简单地组建测试队伍或购买一两件测试工具是不够的。软件测试工程的三大要素技术(行业专业技术、企业相关技术等)策略(案例选择策略、测试时机选择、测试方法的合理运用等)管理(现场管理、测试过程管理、信息流管理、可追溯性管理等)天高任你飞2019年12月15日7Confidential测试设计测试是需要设计的。因此测试是一项具有很大创造性的工作,其工作量一点也不比软件设计小。软件测试的创造性主要表现在:测试方案选择测试计划制定测试用例设计测试结果的分析测试过程的管理测试信息流的传递软件测试基础(5)天高任你飞2019年12月15日8Confidential测试信息流所谓测试信息流是指在软件测试过程中所需要的和所产生的各种信息。软件测试基础(6)天高任你飞2019年12月15日9Confidential软件测试基础(7)测试与调试的关系测试是检查软件发现问题,调试是分析软件解决问题测试贯穿于整个软件生存期,调试主要是在软件开发过程中调试具有随意性、不明确性,而测试是明确的、可重复的测试是全方位的,而调试是代码级的测试与调试不能相互替代,但相互支持,相辅相成CODETESTDEBUGSpec,testplanIntegrationtestWriteitGetittoworkDoesitwork?YESNO天高任你飞2019年12月15日10Confidential测试用例所谓测试用例,是一份关于具体测试步骤的文档,用于指导测试的实际操作。测试用例可以是纯文本的说明文档,也可以是编写的一段代码。测试用例应当包括:测试用例名称及标识测试目的测试条件及设置输入数据要求预期的输出结果操作步骤软件测试基础(8)天高任你飞2019年12月15日11Confidential测试用例的设计方法若被测程序与特定的功能相联系,我们可以针对功能设计测试,以证实各功能完全可执行,同时在功能中寻找错误—黑盒法(用户级测试)若被测程序与特定的结构相联系,我们可以针对结构设计测试,以确保内部的“所有齿轮相吻合”,即软件的内部过程是合理的,是遵照规定执行的—白盒法(程序员级测试)系统认证主要采用黑盒法,单元和集成测试主要采用白盒法。软件测试基础(9)天高任你飞2019年12月15日12Confidential软件测试基础(10)测试心理准备开发人员的注意事项不要敌视测试人员。要理解测试的目的就是发现缺陷,是测试人员的工作职责。不要以为测试人员吃饱了没事干,存心找茬。不要轻视测试人员,别说人家技术水平差,不配搞开发只好搞测试。测试人员的注意事项发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是Bug。在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大声嚷嚷。请留意另一种极端如果测试人员与开发人员的关系非常好,可能会导致在测试的时候“手下留情”,这对项目也是一种伤害。测试应该“对事不对人”。建立内部客户服务意识从软件产品而言,测试部门是软件开发部门的客户,从Bug而言,软件开发部门是测试部门的客户。客户至上,为客户提供良好周到服务是上游部门的职责。保证各部门的输出资料齐全和清晰是服务的基本要求。天高任你飞2019年12月15日13Confidential软件系统的主要测试内容——概要(1)接口与路径测试功能测试健壮性测试性能测试用户界面测试信息安全测试压力测试可靠性测试安装/反安装测试天高任你飞2019年12月15日14Confidential软件系统的主要测试内容——接口与路径测试(2)数据一般通过接口输入和输出,所以接口测试是白盒测试的第一步。每个接口可能有多个输入参数,每个参数有“典型值”、“边界值”、“异常值”之分,所以输入的组合数可能并不少。根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果实际输出与期望的输出不一致,那么说明程序有错误。白盒方式的接口测试和黑盒方式的功能测试,其方法十分相似。一个函数体内的语句可能只有十几条,但逻辑路径可能有成千上万条。想遍历测试几乎是不可能的,不测试或者胡乱找几条路径测试却又不行。对于非严格系统而言,在分析路径方面花费很多精力是不值得的。我认为在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生唯一的输出,输入与输出之间的路径也是唯一的。由于接口测试中的输入是有代表性的,因此相应的路径也具有代表性,不用得着费煞苦心地去找测试路径。路径测试的检查表数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理由于接口测试是枚举的,有可能漏掉某些状况,导致一些重要的路径没有被测试。预防措施有:观察是否有程序语句从来没有被执行过。如果发生在这种情况,要么是程序有错误,存在无用的代码;要么是接口测试不充分,漏掉了一些路径。要特别留意函数体内的错误处理程序块(如果存在的话),这是最易被人疏忽的路径,隐患最多。天高任你飞2019年12月15日15Confidential软件系统的主要测试内容——功能测试(3)功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望的相同。如果两者不一致,即表明功能有误。也有例外的情况,如《需求规格说明书》中的某个功能写错了,而实际上软件的功能却是正确的,这时要更改的是《需求规格说明书》。功能测试看起来比较简单,只要看得懂《需求规格说明书》,谁都会做。难点在于如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。那么随便输入一些东西,碰运气行不行?功能测试有两种比较好的测试方法:等价划分法和边界值分析法。例如测试函数f(x)=根号(x)。凭直觉,等价区间应是(0,1)和(1,+∞)。可取典型值x=0.5以及x=2.0进行“等价划分”测试。再取x=0以及x=1进行“边界值”测试。天高任你飞2019年12月15日16Confidential软件系统的主要测试内容——健壮性测试(4)健壮性是指在异常情况下,软件还能正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。容错性测试通常构造一些不合理的输入来引诱软件出错,例如:(1)输入、接收错误的数据类型。如“猴”年“马”月。(2)输入、接收定义域之外的数值。如在不支持EMS的情况下接收EMS。粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬外,什么招术都可以使出来。例如在在通话或者数据传输过程中拔电池造成通信异常中断,模拟用户无聊状态反复插拔耳机数据线等。恢复测试重点考察以下几项:(1)系统能否重新运行(2)有无重要的数据丢失(3)是否毁坏了其它相关的软件硬件天高任你飞2019年12月15日17Confidential软件系统的主要测试内容及技术——性能测试(5)性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考(例如用于宣传)。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如Memory的状态,多任务并发。性能测试的一些注意事项:不要试图让人拿着钟表去测时间,最好编写一段程序用于计算时间以及相关数据。应当测试软件在标准配置和最低配置下的性能。为了排除干扰,应当关闭那些消耗内存、占用CPU的其它应用程序。不同的输入情况会得到不同的性能数据,应当分档记录。例如传输文件的容量从100K到1M可以分成若干等级。由于环境的波动,同一种输入情况在不同的时间可能得到不同的性能数据,可以取其平均值。天高任你飞2019年12月15日18Confidential软件系统的主要测试内容及技术——用户界面测试(6)绝大多数软件拥有图形用户界面。用户界面包括用户能看到、能摸到、能听到、能被感知的一切。图形用户界面的测试重点是正确性、易用性、友好性和视听效果。在评价易用性和视听效果时,主观性非常强,应当考虑多个人的观点。天高任你飞2019年12月15日19Confidential软件系统的主要测试内容及技术——信息安全测试(7)信息安全性(security)是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。在手机软件中Telecom数据以及SIMLock信息需要的安全性较高。信息安全性测试有如下步骤:(1)为非法入侵设立目标,例如“盗窃某个文件”或“更改数据库记录”等。(2)邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”。(3)如果有人成功了,请他详述入侵的过程,并给予奖励。天高任你飞2019年12月15日20Confidential软件系统的主要测试内容及技术——压力测试(8)压力测试也叫负荷测试或者是极限测试,即获取系统能正常运行的极限状态。了解“极限”是很有价值的,例如潜艇下潜极限深度,在手机软件中的短信息存储数量,MP3能扫描的音乐文件数等,支持并发任务的最大值。压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。压力测试的一个变种是敏感测试。在某种情况下,微小的输入变动会导致系统的表现(如性能)发生急剧的变化。敏感测试目的
本文标题:软件测试基础.
链接地址:https://www.777doc.com/doc-1991437 .html