关闭

保障软件质量的关键性关口

发表于:2007-12-06 14:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王冬    来源:王冬的博客

        在软件项目开发周期中,软件测试环节是保障软件质量的最后一道关键性关口。随着软件开发规模的加大,其分工渐趋专业化。测试作为与开发独立并行的领域已得到业内的高度重视。测试人员的比例不断扩大,逐渐形成一个专门的行业,并拥有其专业化的工具和理论。
        中国工商银行软件开发中心已有十年的发展历史,早在创建之初就设立了测试部门。后来随着人员的扩充,测试部分拆为测试一部和测试二部两个一级部,并在各研发部、研发分行建立了隶属于一级部的测试队伍。他们在项目开发过程中积累了大量的实践经验,并摸索总结出了实用性很强的理论知识。为了较深入地了解软件测试技术的现状和发展,测试人才队伍的培养和管理,测试新技术的实际应用等问题,记者走访了中国工商银行软件开发中心北京研发部总经理伊劲松、测试工作负责人李兵。
软件测试已逐渐成为一个行业。
        “测试这个行业,说新也不新,但是受到重视,确实是近两三年的事。”李兵与记者交流的第一句话就说出了软件测试已成为一个行业。他接下来向记者介绍了测试技术在国内发展的若干阶段。上世纪70年代以前,测试的目的是找问题,找到Bug就算测试有效。但随之而来的问题是,如果在软件投产之前的测试中发现了大量问题,投产之后又发现了大量问题,那么项目的测试和开发的质量应如何评估;相反地,投产前后都没有发现问题,究竟是因为开发工作做到了完美,还是因为测试工作质量很高测出了所有问题,在此情况下开发与测试工作又该如何评价。
        到了上世纪90年代,测试理论发展为,要么发现问题,要么证明程序是对的。到了2000年以后,基本观点变为测试不再是能否发现问题,而是一系列模型中所描述的、从需求分析到开发全过程中的脚本维护和案例管理等。“从这一发展脉络来看,测试已逐渐变成一个行业,并且注重整个过程,还提出了软件测试过程改进等理论。”李兵总结说。
        工商银行软件开发中心的测试部门从建立到发展壮大,再到逐步专业化,折射了中国软件测试的发展历程。时至今日,“测试在整个软件开发中已经成为了一个专业的行业或领域,与开发处在两条线上,这是非常重要的。”伊劲松总经理说。她接着向记者介绍了软件开发中心北京研发部的项目开发和测试工作是如何分工合作的。
        北京研发部负责软件开发中心的一部分应用开发工作,从环节设置来看,包括了前期的需求设计、整体设计、系统设计、编码、自测、集成测试、系统测试等软件项目开发生命周期中的全部环节。拿到一个项目首先进行需求分析,然后根据项目的技术特点和需求制作总体方案,在方案通过评审以后进行系统设计,并细化为详细设计,直至可以编程的状态,然后进行编码。编码过程中开发人员需自测,运用代码检查等方法进行白盒测试,此过程标志开发工作初告结束,程序上已可以调通。接下来需将项目的所有环节进行集成,产生界面、业务处理过程和主机账务处理等环节,这个阶段保证功能运行通畅,但测试工作仍比较粗糙。下一步则需进行比较全面的系统测试,遍历项目的所有案例及案例的各种情况,包括边界值的测试和优化需求、解决生产问题的回归测试等。此阶段结束表示系统测试结束,并形成具有完整功能的软件版本。
        就上述流程来讲,测试人员从项目开始即开始了工作,他要了解并参与需求的评审,以开始测试设计与系统设计工作,这一过程是与开发人员的工作同步进行的。测试设计包括使用何种策略和案例,是否使用自动测试脚本等。设计结束即要开始准备测试环境和相关测试所需数据,此时开发人员在进行编码和自测。在这些前期工作中,开发与测试是背靠背的,直到集成测试阶段彼此工作内容才进行沟通和合并。
        我们在工作中一直是很重视测试工作的。从人员构成上,目前北京研发部的测试与开发人员比例为1:2。在手段上,我们有专业化的测试工具,形成了一套测试的理论和方法。分工上,我们有专人做测试设计,有专门的测试经理,有专门的测试环境准备的方法,还有自动化测试的手段,包括自动化工具产品的支撑。这些都是软件质量的重要保证。”伊劲松说。
人才队伍建设是测试成功的关键
        据李兵介绍,北京研发部的测试人员配置,最早是十几个人,现在已有80~90人。从调研结果和一些数据模型来看,测试人员的数量在组织架构管理上是有具体要求的:运行中的测试人员所占比例应达到总人数的33%。软件行业的人才流动性强,而对测试工作的入门要求又相对较低,所以北京研发部的测试人员以工作经验一两年的新员工居多,要做好测试工作,对这批人才的培养就显得尤为重要。
        伊劲松向记者介绍了北京研发部新员工入门培训到上手项目的全过程。新员工要参加一个月的岗前培训,之后再对员工进行测试理论、测试规范、测试方法的具体培训,形成对于测试的基本概念。员工到岗位上后先去做一些案例的执行,记录案例测试出的问题。伊劲松介绍说:“我们现在安排一些新员工做模拟客户的体验性测试,因为我们开发的自助渠道上的应用比较多,使用网上银行和电话银行的客户本身不具备一定的金融知识,也不了解系统的了解,所以他们完全可以以普通客户的身份做测试,发现软件中的问题。我们的员工一报到都必须开立网上银行的账户,让他们先熟悉应用的功能再参与到项目中去。我们拿以往积累的案例和脚本让他们进行更有针对性的学习,这样他们就会在具体的项目中成长。”
        问起什么样的人适合做测试工作时,李兵打了个有趣的比方:“测试人员有时候要像个侦探。”他同时强调,测试人员一定要懂开发。他说:“在IBM海外公司中,如果老员工去做测试必须做过开发,新员工做了一两年测试以后也要调去做开发,然后再调回来做测试。对测试人员的培养是一个漫长的过程,入门也许很简单,但是要想做好,其要求是非常高的。”
自动化测试技术的应用和误区
        自动化测试技术被认为可大量节省测试的人力投入,但作为软件开发业内专家,伊劲松和李兵认为这是一个认识误区,这一结论至少目前仍处于探讨阶段。自动化测试能够节省人力,但是这与测试对象有关。“重复性很高的动作才需要自动化,如果每次都是新的,就没有办法在项目中积累,根据我们现在的项目情况,开发周期是很短的,如果是新项目,采用自动化测试手段是不现实的,一定会很慢的。”伊劲松说。
        自动化测试要求软件版本比较稳定、功能不变,并且由于目前的自动测试基于界面,没有界面就没有办法进行自动化测试。如果界面隔一段时间变化一次,很难进行自动化测试。自动化测试是需要写自动化测试脚本的,相当于用程序去测试程序。“这就成了一个悖论,对脚本的验证还是人在起主导作用,拿这部分来节省人力,实际上是把这部分人力搬了家。”李兵形象地解说道。
        伊劲松向记者介绍,在北京研发部,自动化测试主要应用在压力测试上,用来模拟系统压力和并发环境。编写自动化测试脚本的人员都是测试经验丰富的老员工,因为自动化测试需建立在对系统的了解上,要了解到最后会出现什么样的结果,而测试人员要把这些结果全部用程序写出来。此外还要考虑工具、手段及平台的支持,在这个基础上才能够谈到自动化测试。伊劲松表示:“自动化测试我们在搞,但是应用的比例并不是很大。”

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号