还剩2页未读,继续阅读
文本内容:
软件测试及程序调试1软件测试是软件测试人员和程序员都参与的一项工作,是贯穿整个生命周期的,只需要发现软件的错误,而程序调试主要是程序员自己参与,对程序(设计、编码)进行修改、排除错误,主要是在开发阶段软件测试的投入,包括人员和资金投入是巨大的,通常其工作量、成本占软件开发总工作量、总成本的以上,而且具有很高的组织管理和技术难度40%软件测试的目的和准则
1.1软件测试的目的使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是否弄清预期的结果与实际结果之间的差别软件测试的准则包括令软件开发人员即程序员应当避免测试自己的程序不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块令应尽早地和不断地进行软件测试令对测试用例要有正确的态度第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷令人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是原则:不要以为发现几个错误并且解决这些问题之后,就不需要测“80-20试了反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益令严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作令应当对每一个测试结果进行全面检查一定要全面地、仔细地检查测试结果,但常常被人们忽略,导致许多错误被遗漏妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用软件测试技术与方法概述
1.2软件测试的方法和技术是多种多样的对于软件测试的技术和方法,可以从不同的角度加以分类如果从是否需要执行测试软件的角度,可以分为静态测试和动态测试方法如果按照功能划分,可以分为白盒测试和黑盒测试方法)静态测试与动态测试1静态测试所谓静态测试()就是不实际运行被测软件,而只是静态地检查程序代码、界static testing面或文档中可能存在的错误的过程从概念中我们可以知道,其包括对代码测试、界面测试和文档测试三个方面对于代码测试,主要测试代码是否符合相应的标准和规范这项工作可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容对于界面测试,主要测试软件的实际界面与需求中的说明是否相符对于文档测试,主要测试用户手册和需求说明是否符合用户的实际需求动态测试动态测试是基于计算机的测试,根据软件需求设计测试用例,利用这些用例去运行程序,以发现程序错误的过程设计高效、合理的的测试用例是动态测试的关键下面重点介绍动态的白盒和黑盒测试方法)白盒测试方法与测试用例设计2白盒测试也称结构测试或逻辑驱动测试白盒测试的原则保证所有的测试模块中每一条独立路径至少执行一次;保证所有的判断分支至少执行一次;保证所有的模块中每一个循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性主要的方法有逻辑覆盖(包括语句覆盖、路径覆盖、判定覆盖、条件覆盖和判断一条件覆盖)、基本路径测试等)黑盒测试方法与测试用例设计3黑盒测试方法也称功能测试或数据驱动测试,是对软件已经实现的功能是否满足需求进行测试和验证黑盒测试主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错黑盒测试方法主要有等价类划分法(包括有效等价类和无效等价类)、边界值分析法、错误推测法、因果图等,主要用于软件确认测试软件测试的实施
1.3软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化软件测试过程一般包括个步骤单元测试、集成测试、验收测试(确认测试)和系统测4试通过这些步骤的实施来验证软件是否合格,能否交付用户使用)单元测试1单元测试是对软件的最小单位模块(程序单元)进行正确性校验的测试单元测试的B的是方向各模块内部可能存在的各种错误单元测试的依据是详细设计说明书和源程序单元测试的技术可以采用静态分析和动态测试对动态测试通常以白盒动态测试为主,黑盒测试为辅单元测试任务包括令模块接口测试模块接口测试是单元测试的基础只有在数据能正确流入、流出模块的前提下,其他测试才有意义令模块局部数据结构测试:检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确局部数据结构往往是错误的根源,应仔细设计测试用例令模块中所有独立执行通路测试在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误此时基本路径测试和循环测试是最常用且最有效的测试技术令模块的各条错误处理通路测试一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试令模块边界条件测试边界条件测试是单元测试中最后,也是最重要的一项任务众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误)集成测试2集成测试是测试和组装软件的过程,主要用于发现与接口有关的错误集成测试包括的内容软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等集成测试分为增量方式组装(包括自顶而下、自底而上、自顶向下和自底向上相结合的混合增量方式)与非增量方式组装()自顶向下的增量方式1自顶向下集成()方式是一个递增的组装软件结构的方法从主控模Top-Down Integration块(主程序)开始沿控制层向下移动,把模块一一组合起来分两种方法第一先深度按照结构,用一条主控制路径将所有模块组合起来;第二先宽度逐层组合所有下属模块,在每一层水平地沿着移动组装过程分以下五个步骤步骤一用主控模块作为测试驱动程序,其直接下属模块用承接模块来代替;步骤二根据所选择的集成测试法(先深度或先宽度),每次用实际模块代替下属的承接模块;步骤三在组合每个实际模块时都要进行测试;步骤四完成一组测试后再用一个实际模块代替另一个承接模块;步骤五可以进行回归测试(即重新再做所有的或者部分已做过的测试),以保证不引入新的错误()自底向上的增量方式2自底向上的集成()方式是最常使用的方法其他集成方法都或多Bottom-Up Integration或少地继承、吸收了这种集成方式的思想自底向上集成方式从程序模块结构中最底层的模块开始组装和测试因为模块是自底向上进行组装的,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实模块,给待测模块提供调用接口或数据的测试用软件模块)自底向上集成测试的步骤大致如下步骤一按照概要设计规格说明,明确有哪些被测模块在熟悉被测模块性质的基础上对被测模块进行分层,在同一层次上的测试可以并行进行,然后排出测试活动的先后关系,制定测试进度计划利用图论的相关知识,可以排出各活动之间的时间序列关系,处于同一层次的测试活动可以同时进行,而不会相互影响步骤二在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块步骤三将各软件模块集成为子系统(或分系统)检测各自子系统是否能正常工作同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统步骤四将各子系统集成为最终用户系统,测试是否存在各分系统能否在最终用户系统中正常工作方案点评自底向上的集成测试方案是工程实践中最常用的测试方法相关技术也较为成熟它的优点很明显管理方便、测试人员能较好地锁定软件故障所在位置但它对于某些开发模式不适用,如使用(极限编程)开发方法,它会要求测试人员在XP eXtremeProgramming,全部软件单元实现之前完成核心软件部件的集成测试尽管如此,自底向上的集成测试方法仍不失为一个可供参考的集成测试方案()混合增量方式3自顶向下增量方式和自底向上增量方式各有优缺点,一种方式的优点是另一种方式的缺点自顶向下测试的主要优点是能较早显示出整个程序的轮廓,主要缺点是,当测试上层模块时使用桩模块较多,很难模拟出真实模块的全部功能,使部分测试内容被迫推迟,直到换上真实模块后再补充测试自底向上测试从下层模块开始,设计测试用例比较容易,但是在测试的早期不能显示出程序的轮廓针对自顶向下、自底向上方法各自的优点和不足,人们提出了自顶向下和自底向上相结合、从头向中间逼近的混合式组装方法,被形象称为“三明治”方法这种方式,结合考虑软件总体结构的良好设计原则,在程序的最高层使用自顶向下方式,在程序结构的低层使用自底向上方式)验收测试(确认测试)3确认测试又称有效性测试有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础确认测试的目的是向未来的用户表明系统能够像预定要求那样工作经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样目前广泛使用的两种确认测试方式是测试和测试8测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为版本)a a进行测试,试图发现错误并修正测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用B3户报告异常情况、提出批评意见)系统测试4系统测试,是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等系统测试的目的是验证最终软件系统是否满足用户规定的需求系统测试的具体实施一般包括功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。
个人认证
优秀文档
获得点赞 0