软件测试技术探究
2014-02-20黄永强
黄永强
(济宁学院,273100)
软件测试技术探究
黄永强
(济宁学院,273100)
软件测试在软件开发中起到至关重要的作用,为了发现程序中的错误而执行程序的过程,它是帮助识别开发完成,中间或最终的版本的计算机软件,整体或部分的正确度、完全度、质量的软件过程;是SQA(software quality assurance)的重要子域。
软件测试;技术;研究
0 引言
软件测试是伴随这软件开发而产生的,软件测试包括白盒测试与黑盒测试,由于软件危机的频频出现,促使了软件测试地位的大幅提升,当前,软件测试已经贯穿了整个软件开发的过程,是检测软件质量和安全的重要手段之一。随着软件开发的需求和质量的保证,软件测试在软件开发中越来越重要,地位也在不断的上升。项目软件编制质量的高低关键取决于软件测试工作的严密。软件测试工作不但保证了软件质量,而且降低了日后维护成本,也提高了企业信誉和实力。软件测试主要是根据项目制定测试计划,确定测试用例和测试方法,记录测试数据,分析测试结果,完成测试报告,以便软件开发人员进一步调试。
1 软件测试的概述
软件测试工程师,目前IT行业极端短缺的金贵人才,在未来5年里IT行业最炙手可热的高薪职位。中国软件业每年新增约20万测试岗位就业机会,而企业、学校培养出的测试人才却不足需求量的1/10,这种测试人才需求与供给间的差距仍在拉大。由于软件企业要求测试人才有较高的专业水准,导致大量无测试经验、无测试技能的高学历应聘者遭受冷遇。而且目前从业者大部分是从其他岗位转型过来的,水平不一,不具备专业能力,导致企业“有活没人干”的尴尬境况。
随着软件市场的成熟,软件对社会运转的巨大贡献已经得到了广泛认可,但是,人们对软件作用期望值也越来越高,更多人将关注点转移到软件的质量和功能可靠性上,而中国软件产业在产品性能测试领域存在着严重不足,软件测试水平的高低可以说是决定了中国软件产业的前途命运。
2 软件测试的内容
软件测试主要工作内容是验证(verification)和确认( validation ),验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认( validation )是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件。静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
对于软件测试来说所要掌握的知识是比较多的,基于Window/Unix/Linux系统,具有一定的编程能力和脚本写作能力;熟练掌握各类数据库应用,比如SQL,Oracle,DB2;熟练掌握各类测试技术,包括黑盒,白盒测试技术;熟悉软件测试流程并能很好完成个阶段测试工作机相关文档写作,比如测试需求,测试计划,测试用例,测试总结等文档;熟练使用各类配置管理工具,比如SVN;精于自动化测试机各类测试工具,比如QTP,Load Runner,TD。
3 软件测试的种类
软件测试的种类可以分为以下几类:1、从软件内部结构和具体实现的角度可以分为:白盒测试、黑盒测试、灰盒测试;2、从执行程序的角度可以分为:静态测试和动态测试;从软件开发的过程阶段来发可以分为:单元测试、集成测试、确认测试、验收测试、系统测试。
4 软件测试的优点
4.1 产品质量的保证
软件产品的质量管理已成为企业生存与发展的核心。中国软件公司已开始认识到,软件测试并非产品交付前单一的“找错”过程,而是贯穿于软件生产过程的始终,是一套完善的质量管理体系。国外的大多数软件公司,1个软件开发工程师便需要辅有1-2个软件测试工程师。而国内软件公司中,测试人才寥寥无几。随着行业对产品质量的关注,软件测试工程师的需求量在急剧增加。
4.2 控制成本的关键
科学控制成本,提升利润水平是软件企业关注的焦点。中国软件产业长期受技术与市场因素制约,粗放型生产模式带来的分工不明、项目进程缺乏控制的状况亟待改观。企业重新认识到,软件测试越早参与项目,越能避免项目出现大的缺陷,大大降低了后期弥补缺陷及维护成本。软件测试人才也因此炙手可热。
4.3 软件可靠性确认
随着软件市场的日益成熟,产品交付标准、性能实现成为用户关注的主题。过去软件交付使用时输入几组典型数据试运行即可,而现在用户要求的是对软件全方位的性能检测。软件测试工程师是承担产品性能测试以及交付标准制定的专业岗位,软件的可靠性在测试工程师手里得到确认,由他们来保证公司的信誉。
4.4 让企业具备国际竞争的实力
中国软件公司的规模和产品开发层次在不断提升,许多公司开始谋求国际软件定单,外包业务成为软件行业新的增长点。但国内的软件测试水平与国外用户的要求相差很远,人力、组织、管理、技术都需要大幅度提升,重视软件测试,与世界先进软件公司测试标准接轨,是中国软件迈出国门的重要前提。
5 软件测试的模型
5.1 软件测试中的V模型
V模型是软件开发中中瀑布模型,主要是反应设计与分析的关系,主要是描述了开发和测试的行为。V模型的优点在于它明确了测试过程中存在的不同级别,清楚的描述了测试与开发的对应关系。如图1.
图1 V模型
5.2 软件测试中的W模型
W模型补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计。的测试。如图2.
图2 W模型
5.3 软件测试中的X模型
X模型同样是对V模型的改进,X模型针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。如图3.
5.4 软件测试中的H模型
H模型是软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程一起进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。如图4.
图3 X模型
图4 H模型
6 结束语
软件测试是目前正在发展中的行业,从进入计算机时代,人类就没有放弃过对正确性和安全性的追求,软件测是是可以帮助人们提高软件的质量。同时,软件又是测试又是一项繁琐复杂的工作,不管是从软件测试的花销还是耗费耗时上,都占据了整个项目的一半以上。因此,提高软件测试的性能和效率,对软件开发起到了至关重要的作用。
由于国内测试行业还处于起步阶段,所以大家对测试工程师这个职业的发展前景还不明确。其实,开发有什么样的岗位,测试也有就相对应的岗位,比如开发有架构师,测试也有测试架构师,也需要从整体架构考虑怎么做测试。国内公司一般会有初级、中级、高级测试工程师、项目经理、部门经理。当然也有一些公司已经有比较完善的体系,比如性能测试领域,除了初级、中级、高级测试人员之外,还有测试专家,性能测试分析师,架构师。近几年国内的测试行业也在逐步规范,分工越来越细,相信测试行业发展也会越来越好。
[1] 李丽.航天相机主控软件测试用例自动生成技术的研究[D].中国科学院研究生院(长春光学精密机械与物理研究所).2010,(11):16-17.
[2] 王立新.软件测试数据的高效生成及测试方法研究[D].东华大学.2011,(21):5-11.
[3] 夏启明.软件测试及评价的复用策略研究及其实现[D].武汉大学.2010,(06):96-97.
Research on Software Testing Technology
Huang Yongqiang
(Institute of Jining,273100)
The software testing in software development plays a crucial role,in order to discover an error in the program implementation process,it is to help identify development completed,intermediate or final version of thesoftware,in whole or in part the accuracy,completeness,quality of software process;SQA (software qualityassurance an important subfield).
software testing;technology;research