关于软件测试的浅谈--------宋立伟1关于软件测试的浅谈目录摘要…………………………………………………………………2关键词………………………………………………………2绪论.……………………………………………………………………2一.软件测试的概念……………………………………………………31.1什么是软件测试…………………………………………………21.2.软件测试的目的…………………………………………………21.3.软件测试的分类…………………………………………………21.4软件测试的原则……………………………………………21.5软件测试停止的标准…………………………………………3二.软件测试的流程与策略……………………………………………42.1单元测试……………………………………………………………………42.2集成测试……………………………………………………………………52.3确认测试………………………………………………………………52.4系统测试…………………………………………………………………52.5验收测试…………………………………………………………………7三.简要解析软件测试的认识误区…………………………………8结束语…………………………………………………………………9参考文献……………………………………………………………9关于软件测试的浅谈--------宋立伟2摘要本文从介绍软件测试的概念入手,简单的阐述了软件测试的目的,方法及其重要性,然后简单分析了软件测试的过程,以及软件测试的几大误区。关键词软件测试,测试过程绪论软件测试在全球的发展是不平衡的,在发达国家和地区,软件测试已经成了一个产业,而在中国,可能还算不上一个真正的产业,这与中国整体软件的发展水平是一致的,因为我国整体的软件产业水平和软件发达国家水平相比有较大的差距,而作为软件产业重要一环的软件测试,必然有不小的差距。不过,目前正在快速发展阶段。中国软件企业在软件测试方面与国际水准仍存在较大差距,主要体现在测试意识以及测试理论的研究、大型测试工具软件的开发以及从业人员数量等方面。首先,在认识上重开发、轻测试,没有认识到:软件项目的如期完成不仅取决于开发人员,更取决于测试人员;其次,测试理论和测试方法并没有全面的掌握没有将测试同公司目前的开发流程紧密的绑定起来,大部分的软件测试工作没有明确的目标和可量化的质量要求,对质量的控制基本上靠测试人员自己的经验和责任;另外,缺少自动化工具的支持,软件测试基本停留在手工进行的功能性测试上,大部分是在软件开发的后期介入。在技术支持过程中将会给相同的问题做几百次或上千次更有甚者要做上万次技术支持。也就是说测试人员和开发人员多用一份力量和多用份心思去做产品,至少给公司减少了几个或几十个技术支持人员,只是这项就会带来巨大的利润,这就说明了软件测试在软件行业的重要性。团队一直强调“软件测试人员一定要低调做事”,尤其是软件测试是永远发现不完所有潜在的问题,所以测试的重点必须放在基本功能,但也不能不去发现逻辑问题和界面等方面的问题。尤其做软件测试这项对人员的素质要求特别高,在有限的时间里尽最大努力地发现最多问题并促进和协助开发人员解决问题。软件测试工作不但对软件质量起了一定的保证作用,也是降低产品成本和缩短软件开发周期的重要措施。首先对测试人员的职业素质和职业道德要求都非常高,因为每一个测试人员掌握公司的产品的致命是最多的。尤其是测试报告的一些内容,他要比任何开发人员要知道多,所以非常需要每个测试人员的职业道德。除了对测试人员的职业技能要求外,还要对测试人员的职业素质的要求。不能因为这几天心情好,工作情况就非常好,发现的问题就多;或因为这几天心情非常差,发现的问题就少。这样就会严重影响产品的质量,带来的后果是严重的。测试工作一定要保持一种平常的心态,与开发人员沟通的时一定要掌握技巧。人是软件企业的立足之本。了解参与项目开发人员的心理活动,对于项目管理者来说,可以顺势利导,消除不良的人为因素,提高团队的凝聚力和工作能力,从而提高开发效率。关于软件测试的浅谈--------宋立伟3一.软件测试的概念测试涉及我们生活的各个方面,它是个非常广泛的概念。测试是随着现代化发展而产生的。软件测试,它是软件工程的一部分。测试活动是一项工程性的活动,而不是一项简单的、孤立的活动。1.1什么是软件测试软件测试的典型说法一个好的测试是指很可能找到尚未发现的错误的测试;一个成功的测试是指发现了至今未发现的错误的测试。这种说法明确指出“寻找错误”是软件测试的目的。IEEE对软件测试的定义(1983)使用人工和自动的手段来运行过测试某个系统的过程,其目的在于它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。这种定义提出了软件测试是以是否满足需求为目标。1.2.软件测试的目的测试的目的是最大限度地找出最多的错误。软件测试的目的是查找程序中的故障,并力求设计出最能暴露故障的测试方案,从而合理地设计测试用例。证明、检测和预防已经成为一个良好测试的目标。1.3.软件测试的分类从实际用户使用的角度考虑,软件测试一般采用黑盒测试;从程序内部的设计结构出发,软件测试一般采用白盒测试。从是否运行被测程序的角度考虑,软件测试一般分为静态测试和动态测试。1.3.1静态与动态静态测试是指被测程序的程序不在机器上运行,而是采用人工检测呵计算机辅助静态分析的手段对程序进行检测,静态测试是对被测程序进行特性分析方法的总称。动态测试的主要特征是计算机必须真正运行被测程序,通过输入测试用例对其运行情况(即输入与输出的对应关系)进行分析,达到检测的目的。1.3.2黑盒与白盒黑盒测试的基本观点是:任何程序都可以看做是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒子的内容(实现过程)完全不知道,只是明确要做到什么。白盒测试即逻辑测试,它依赖与对程序细节的严密检验,针对特定条件和循环设计测试用例,对软件的逻辑路径进行测试。白盒测试将被测程序看作一个打开的盒子,测试者可以看到被测源程序。1.4软件测试的原则软件测试从不同的角度会有不同的测试原则。从用户角度:用户希望软件测试能充分暴露软件中存在的问题呵缺陷,从而考虑是否可以接受盖该产品。从开发者角度:开发者希望测试能表明软件产品不存在缺陷,已经正确地实现了用户的需求,确立人们对软件质量的信心。中国软件测评中心的测试原则就是从用户呵开发者的角度出发进行软件产品测试的,通过测试,可以为用户提供放心的产品,并对优秀产品进行认证。1.5软件测试停止的标准测试时间超过了预定的期限。关于软件测试的浅谈--------宋立伟4执行了所有的测试用例,但是没有发生故障。使用特定的测试用例设计方案作为判断测试停止的基础。正面指出了停止测试的具体要求。根据单位时间内查出的缺陷的数量判断是否停止测试。二.软件测试的流程与策略在软件测试过程模型中,从软件需求分析开始,经过概要设计、详细设计,最终实现编码工作,这是一个对现实世界抽象逐渐降低的过程,每个阶段都是对上一阶段的解释,又是下一阶段的定义。所以软件测试也应该与此过程相对应,针对每个阶段有相应的测试策略。软件测试方法按照测试的先后次序可分为单元测试、集成测试、(验证)确认测试、系统测试和验收测试共5个步骤。2.1单元测试单元测试完成对最小软件设计单元——模块的验证工作。使用详细设计为指南,对重要的控制路径进行测试以发现模块内的错误。单元测试通常由编码人员来完成,在通常情况下是面向白盒的,在编码阶段执行。2.1.1单元测试的主要任务(1)模块接口测试这是对模块接口进行的测试,检查进出程序单元的数据流是否正确。对模块接口数据流的测试必须在任何其他测试之前进行,因为如果不能确保数据正确地输入和输出,则所有的测试都是没有意义的。(2)局部数据结构测试在模块的工作过程中,必须测试起内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。除局部数据结构外,在单元测试中还应弄清全程数据对模块的影响。(3)边界条件测试这项测试的目的是检测在数据边界处模块能否正常工作,边界测试是单元测试的一个关键任务。边界测试通常是单元测试的最后一步,它十分重要,必须采用边界分析方法来设计测试用例,应认真仔细地测试为限制数据处理而设置的边界处,看模块是否能够正常工作。(4)路径测试路径测试也称为覆盖测试,在单元测试中,最主要的测试是针对路径的测试。测试是用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。(5)出错处理测试这项测试处理的重点是模块在工作中若发生了错误,出错处理是否有效。2.1.2单元测试的策略在选择单元测试的策略时,可考虑3种方式:由顶向下的单元测试策略,由底向上的单元测试策略和孤立的单元测试策略。(1)由顶向下的单元测试策略方法:先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。其次对第二层进行测试,使用上面已测试的单元作为驱动模块。以此类推,直到测试完成所有模块。(2)由底向上的单元测试策略方法:先对模块调用层次图上最底层的模块进行单元测试,模拟调用该模块作为关于软件测试的浅谈--------宋立伟5驱动模块。然后再对上面一层做单元测试,用下面已被测试过的模块作为桩模块。依此类推,直到测试完所有模块。(3)孤立测试方法:不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块呵驱动模块。每个模块需进行独立的单元测试。2.2集成测试当所有的模块都已经完成单元测试之后,还需要对模块之间的接口和关系做进一步的综合测试,这就是集成测试。那么如何组织综合测试呢?一种方法是先独立地测试每个模块,然后再将它们组合成一个整体进行测试;另一种方法是先把下一个待测试模块组合到已经测试过的模块上,再进行测试,逐步完成综合测试。由此产生了两种综合测试的方法:非增量式综合测试呵增量式综合测试。2.2.1非增量式综合测试非增量综合测试方法是采用一步到位的方法来改造测试的,即对所有的模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序看做一个整体进行测试。2.2.2增量式综合测试增量式综合测试方法是与非增量综合测试方法不同。他的综合是逐步实现的,综合测试也是逐步完成的,可以说它是把单元测试与综合测试两种方法结合起来进行的。增量式综合测试可以按照不同的次序实施,因此也有两种不同的方法,即自顶向下结合的方式与自底向上结合的方式。(1)自顶向下增量式综合测试自顶向下增量式综合测试表示逐步综合呵逐步测试是按照自上而下进行的,即模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行综合,将从属于主控模块的深度优先方式(纵向)或者广度优先方式(横向)综合到结构中。深度优先的综合首先是综合结构中的一个主控路径下的所有模块,主控模块的选择是任意的,如先选择最左边的,然后是最中间的,直到最右边的。广度优先的综合首先是水平方向,把每一层中所有直接隶属于上一层的模块集中起来,直到最底层。(2)自底向上增量式综合测试自底向上增量式综合测试表示逐步综合和逐步测试的工作是按照结构图自下而上进行的,由于是从最底层开始集成,因此也就不再需要使用桩模块进行辅助测试了。2.3确认测试简单的说,确认测试就是检验所开发的软件是否能按顾客提出的要求运行。若能达到这一要求,则认为开发的软件是合格的。因而有时又将确认测试称为合格性测试。果味顾客要求指的是软件规格说明书中确定的软件功能呵技术指标,或是专门为测试所规定的确认准则。在确认测试中除考虑功能,性能以外,还需要检验其他方面,如可移植性、兼容性、人机接口及开发的文件资料是否符合要求。2.3.1确认测试的原则经过确认测试,应该为已开发的软件给出结论性的评价。经过检验的软件的功能、性能及其他要求均已满足需求说明书的规定,可被接受。经过检验,明显与需求说明书有偏差,得到一个各项缺陷清单。对于这种情况,往往很难在交付期之前吧发现的问题纠正过来,这就需要开发部门与用户进行协商,找出解决的办法。2.3.2软件配置确认审查软件配置审查的任务是检查软