时间:2022-04-28 11:12:13
导言:作为写作爱好者,不可错过为您精心挑选的10篇软件测试培训总结,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
该书与国内常见的软件测试实践教材重点讲授某个或某几个商用软件测试工具的方法不同,它是以现代IT企业软件测试需求为背景,以主流的软件测试技术和方法为基础,以当前的软件测试应用为实例,全面介绍了支持各种软件测试类型的开源软件测试工具的主要功能、应用流程及实际案例。特别突出了软件测试工具在实际测试项目中的使用能够有效地巩固所学软件测试知识,掌握软件测试方法和技术以及提高软件测试实战能力。
软件质量重于泰山,软件质量是核心竞争力之一。现在和未来软件企业的竞争力不仅体现在产品类型的多样性,产品功能的先进性,更多的体现在产品质量的稳定性和可靠性。软件应用的领域不断深入,设计的复杂程度逐步增加,开发的周期不断缩短,质量的要求水涨船高,软件企业面临着巨大挑战。
用户对软件产品质量的要求不断提高,促使软件企业把提高软件质量作为增强竞争力的策略。提高软件质量要素在哪里?可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法。从提高软件质量的显著程度、投资回报率和可实施性等方面比较,实施有效的软件测试,提高软件测试的效率,是保证软件质量的显著方法。
软件测试是通过技术、流程、工具、人员以及管理手段,检测软件文档、软件中间产品和最终产品,查找和报告软件缺陷、错误以及隐患的专业技术。通过跟踪缺陷、错误及隐患的修正过程,确保软件产品、中间产品和文档符合软件工程过程需求和用户的最终需求。
软件测试创新之道
软件测试在国内仍处于起步阶段,各种软件测试的方法、技术和标准都还在探索阶段。国内软件行业规模普遍偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法,而不是照搬照抄国外成熟软件企业的测试方法。
观念创新
提高软件质量的决定因素不是软件测试技术,而是对软件质量和测试的思想观念。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。长期以来,国内软件行业对软件质量重视程度不足,对于软件测试的作用认识不够,造成项目因质量问题造成进度推迟甚至失败。
为了彻底改变这种被动现象,企业高层管理人员必须从管理思想、资源支持等方面为软件质量和测试部门提供全力支持。软件项目经理必须坚持软件开发和软件测试并行处理并且互相协调。软件开发人员重视和配合软件测试人员。
观念创新不要仅停留在口头上,而要落实在具体行动上,通过软件质量和测试的有效流程进行推动,通过过程改进进行提高。通过有效组织管理,形成“以重视软件质量为荣,以轻视软件质量为耻”的工作氛围。
流程创新
测试流程决定软件质量。软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。
软件测试流程既不是僵化的生搬硬套,也不是随机的增添取舍。软件企业的质量管理部门和项目开发团队需要根据公司技术、资源现状,针对项目的特点和客户需求,从保证软件质量、项目进度和测试成本等方面,进行优化设计并且不断改进流程管理。对于项目周期长、应用领域广、对质量要求高的软件,必须制定和遵守严格的测试流程。
测试流程创新的目标是在公司内部制定和执行完善的项目质量管理体系。优化项目生产方式,跟踪和度量生产过程和产品,使得生产过程和各阶段产品处于可控制和可度量状态,保证产品符合客户的功能和进度需求。
技术创新
软件测试是一项软件工程领域的专业技术,而不是简单的把软件测试认为随便找个人运行几次软件,就可以发现全部的软件问题。前文已经提到,软件测试需求和测试设计是决定软件测试效果的关键因素,因此,加强测试技术创新的重点是在测试需求和设计设计的创新。
在软件测试技术创新方面,要避免陷入过度追求自动化测试技术的误区。自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量,80%左右的软件缺陷是靠测试人员手工测试发现的。
对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。
管理创新
软件测试管理的目标是实现软件质量、进度、成本之间的最佳平衡。有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队通力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试设计,有效执行测试,加强过程跟踪,从而顺利完成质量保证和测试任务。
测试管理创新的核心是软件质量和测试的团队建设,软件质量和测试是技术密集型活动,团队的知识结构、创造力和凝聚力是保证测试流程、测试技术充分实施的基础。质量和测试团队建设的重点是设置和培养各类技术和管理人才,进行有效交流,形成良好的评估和促进机制。
测试管理创新的另一个重点是测试管理平台建设。包括构建测试项目管理的集成系统,实现公司产品和项目数据信息的有效管理和顺序控制,使项目数据透明化,技术知识有效传承,项目质量和进度数据化、图形化。可以根据公司的现状,购买软件测试管理的商业工具,也可以内部开发软件测试管理工具。
软件测试技术路线图
如果把软件测试之道成为测试战略,要发挥测试战略的现实意义,需要把测试战略转化为测试战术。测试的“道”与“术”的无缝集成,才能显著地、持续地、逐步地提高软件产品质量。实施软件测试的战术是一系列过程的组合,涉及测试团队建设、流程设计、测试平台、测试管理等多个方面。
测试团队建设
测试团队可以是测试部,也可以是测试组。公司规模决定了测试团队的大小和组织形式。测试团队建设需要执行两个原则:第一,测试团队必须独立于开发团队,而不是附属于开发团队,实现测试的独立性和公正性;第二,测试团队必须具有明确的工作目标,即发现和报告软件缺陷,推动和确认缺陷修正,协助软件开发的过程改进,提高软件整体质量。
软件测试团队根据规模可以设置多个职位,每个职位具有明确的岗位职责。例如,测试部门经理、测试项目经理、测试组长、测试架构师、高级测试工程师、测试工程师等。对于刚刚成立的测试团队,可以一个人兼任多个职位,完成多项测试任务。测试人员的总数应该与开发人员相适应,最好在1:1到1:2之间。
流程设计
测试流程设计必须与软件设计流程相对应,基本测试流程包括测试需求分析、测试计划设计、测试用例设计、测试执行、测试评价、测试总结等。
根据软件需求和软件设计规格说明进行测试需求分析,测试需求分析的目的是明确需要测试的对象、特征、范围和方法,从而制定测试计划,确定测试策略。
测试计划设计是为了有效配置测试过程、人员和工具,充分利用现有的资源,按照项目计划进度,组织有效的测试。测试计划设计的输出结果是测试计划文档,它是指导软件测试活动的纲领性文档。
测试用例设计是指导具体测试内容和方法的关键内容,如果需要执行自动化测试,还需要依靠测试用例设计生成对应的测试脚本。测试用例设计的输出结果是不同类型的测试用例,这些测试用例必须以标准、一致的形式设计、评审、存储、更新。
测试执行是报告软件缺陷的阶段,根据软件计划的进度,分配测试内容,构建测试环境,依靠测试用例运行测试程序和程序文档。测试执行的输出结果是缺陷报告、测试进度报告等。
测试评价是度量软件测试执行效率和有效性的过程。测试评价的输入是测试用例的执行情况,软件缺陷的报告数据。测试评价的输出包括测试用例的有效性分析,软件缺陷的类型和有效性分析等,测试进度和有效性分析等。
测试总结包括测试过程每天或者每周的过程总结,也包括测试项目结束后的测试项目总结。测试总结的输出是测试总结报告,总体评价软件质量,指出测试存在的问题,提出改进的方法和进程,总计测试的有效经验。
测试平台设计
测试平台设计包括测试技术平台设计和测试管理平台设计。测试技术平台包括设计测试环境,设计或设置测试工具等。测试管理平台设计包括测试文档系统设计、测试版本配置管理、缺陷数据库设计、测试进度和质量分析系统设计。
测试技术平台设计需要根据测试计划的测试内容和测试环境要求,组织软件、硬件、数据库和网络等,这经常是一项较为耗时的工作,同时它影响着测试的正确性,必须尽快在测试开始阶段完成,最好采用有效的方法把搭建的测试环境进行备份保存,以便今后可以快速恢复,重复利用。
测试管理平台设计,影响测试管理的复杂度,好的测试管理平台可以使测试管理人员,方便地跟踪、查询、分析测试进度,评估测试人员的工作绩效,评价测试的总体质量。对于测试技术人员而言,可以方便的寻找测试对象和测试文档,报告和输出测试结果,共享测试数据,提高测试效率。
测试管理
测试管理关注人员、过程、产品三要素的互动与变化,测试管理包含项目计划和组织结构管理,测试阶段管理,时间、资源和质量管理,文档管理和团队管理等。测试部门经理、测试项目经理和测试组长是测试管理的主要执行者,需要与测试团队成员、开发人员、公司管理人员密切配合。
中图分类号:G420 文献标识码:A 文章编号:1009-3044(2012)30-7258-02
近几年来,计算机信息技术发展迅速,我国的IT行业开始向国际化、规范化迈进。以往只重视软件开发而忽视软件测试的情况正在改变,软件测试行业开始迅速发展。
国外小一些的软件企业,软件开发与测试人员之比基本上是1:1,微软公司更是达到了1:2,软测试人员规模远超过开发人员的规模[1]。尽管一些国内大型软件企业开始重视软件人才的合理配置,但有的企业其比例也就只有10:1。软件测试工程师闹人才荒[2],中高级测试员紧缺的现象已十分明显。
据统计,国内软件测试工程师的缺口为20万人左右,这一点从51JOB的招聘信息中可见一斑。近两年,软件测试工程师的需求和待遇都达到了历史新高。
然而与当前软件测试行业如火如荼的现状极不协调的是当前软件测试培训领域的现状[3],从事软件测试工程师培训的专业机构寥寥无几,而且价格昂贵。大学里几乎没有软件测试专业,部分院校开设《软件测试》这门课程面临三方面的问题,一是软件测试教材知识片面。二是内容枯燥,学生不感兴趣。三是教师教学经验严重不足。面对软件测试人才的社会需求紧迫性,人才培养单位应该扩大软件测试人才培养规模,总结软件测试知识点,改革教学方法,培养学生兴趣,提高培养质量。
1 软件测试课程教学方法探讨
针对以上问题,在教学中应采取以下解决方法:
1.1 融合软件测试知识点,分阶段教学
目前,国内的软件测试教材只涉及了部分基本理论知识,不够全面,介绍的软件测试工具也相对落后一些。针对这种情况,任课教师首先要融合多本软件测试书籍内容,总结出软件测试所涵盖的知识点,更新软件测试发展情况。
其次,根据学生学习过程分阶段教学[4]。第一阶段是基础阶段,让学生掌握软件测试基础理论知识和软件测试核心技术,以及常用测试工具的操作。第二阶段是项目综合实训提高阶段,在掌握基础理论的前提下,加强综合测试技术在项目实训中的运用,针对不同的开发阶段,撰写各开发阶段相应的文档,并制定相应的测试计划,设计典型测试用例,使用不同的软件测试技术和测试工具,完成不同的测试目标。最后是培养学生自主学习阶段,介绍软件测试最新的技术与发展方向,引导学生对基本技术向纵深方向思考。同时向学生提供软件测试方面重要的会议、杂志、论坛、网站,引导学生课下查阅学习资料,鼓励学生自我学习。
1.2 改革教学方法,采用案例驱动教学
大部分高职院校学生基础差、学习积极性主动性不强、自制力不高。在课堂教学活动中,如果继续采用传统教学方法,很难激发学生学习兴趣。应该采用案例教学方法[5],将《手机信息管理系统》、《学生图书借阅系统》、《学生信息管理系统》等案例资料发给学生,学生拿到案例后,在教师的引导下,课下先要进行消化,然后查阅各种他认为必要的理论知识,理解知识并思考提出解决问题的方法。课上教师答复学生的问题,并引导学生更深层次的思考。通过这种方法充分调动学生的学习积极性,提高其学习兴趣,使学生既学会理论知识分析又学会用理论知识解决实际工程的问题。
1.3 采用软件测试项目综合实训的实验教学模式
开设综合性的软件测试课程实验,按软件企业项目管理和开发模式,进行软件测试项目实训[6],培养学生的创新意识与实践能力。将班内学生分成若干个测试小组,每小组成员不超过7人,每组分配不同的软件项目,如工资管理系统、图书管理系统、学生信息管理系统、酒店预订系统等。小组成员模拟与体验软件测试工程全过程工作职位和角色,使学生全过程适应工作职位的要求。
各项目小组在测试项目过程中,针对不同的开发阶段,撰写各开发阶段相应的文档,并制定相应的测试计划,设计典型测试用例,使用不同的软件测试技术和测试工具,完成不同的测试目标,并进行回归测试,以实现软件测试各单项专业知识与技能整合运用的目标。在整个测试过程可以体现“学以致用”的思想,实现理论与实践相结合。
各项目小组通过演练项目开发,不仅让同学们切身体会到软件开发的整个过程,还让同学们对软件开发中各个角色有充分的了解,同时也更深刻的体会到团队合作的重要性。
1.4 加强校企合作
坚持“走出去,引进来”的思想,经常邀请企事业、软件公司里一线软件测试人员或软件测试组长和项目经理,来学校为学生做定期讲座,或定期对教师进行培训。也可以利用假期或其他时间,安排教师学生进软件公司,一起跟进项目开发测试。目前本校已经连续两年安排教师学生去齐鲁软件园,进公司一起进行项目开发测试工作。效果不错,参加实训的软件项目综合实训的教师软件开发测试能力有较大提高,并且学到一些最新最实用的软件开发测试技术。
1.5 改革课程考核方法
软件测试这门课程兼具理论与操作,目前大部分院校考核方式与理论考试为主,这种考核方式会促使部分学生考前抱佛脚,考前死记硬背,降低学生学习的积极性。除了理论考核之外,还应注重学生综合知识和应用能力方面的考核。建议课程考核应该包含平时作业、课堂表现(发言与讨论)、实验、综合实训、理论考试这几部分。采用这种考核方式,促使学生加强对知识的理解和运用,课堂踊跃发言,提高学习的主动性和创造性,以及动手操作能力。
1.6 适当加入一些最新的游戏测试
高职院校学生大部分的课余时间都是泡在网吧里玩游戏,有很多同学一有时间就玩手机游戏。学生对最新的游戏内容比较感兴趣,游戏测试也是软件测试的一方面,教师可以在课堂教学中加入一些游戏测试内容,提高学生的学习兴趣。
1.7 采取双证教育
实行“双证教育”模式[7],将学历教育与技能学习无缝对接,学生毕业后不仅能获得国家劳动部高级职业技能认证证书、拥有扎实的操作技能,同时还将获得国家承认大学学历证书。双证教育使学生专业能力更强、职业素养更高、综合素质更好、更符合企业用人标准。
测试工程师有高级测试工程师、中级测试工程师、初级测试工程师。根据高职学生的能力特点,应该把高职学生定位在初级和准中级测试工程师,具有一定的设计方案的编写能力,能利用测试工具完成一定的测试任务,并能够执行功能测试。
2 总结
通过在本校近五六年的软件测试教学实践,发现软件测试教学方法需要不断改进,融合软件测试知识点分阶段教学,采用案例驱动和双证教育模式,加强校企合作和教学实践这些措施能较好地提高学生学习兴趣和动手操作能力,教学质量也有较大提高。软件测试人才培养刚刚起步,很多工作处于摸索阶段,需要学校、教师和学生的共同努力,为社会培养出大批合格的软件测试人才。
参考文献:
[1]程茂,温静,吴玉洁.《软件测试》课程的教学研究[J].河北师范大学学报/教育科学版,2010(4):117-120.
[2] .
[3]赵斌.软件测试技术经典教程[M].北京:科学出版社,2011(3).
[4]葛汉强.高职《软件测试》课程分层教学之实践[J].职业教育研究,2011(8):105-107.
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)17-0226-03
Abstract: Modeling software testing can greatly improve the quality and efficiency of software testing, and CMMI and other popular models, there is no detailed description of the process for software testing, software testing is no level of maturity of the evaluation and measurement, There is a lack of software testing process improvement goals and guidance. Based on this situation, this article Test Maturity Model(TMM) has been proposed by Dr. Burnstein formal description given maturity level structure TMM model elaborated five test level of maturity goals and sub-goals,, TMM and implementation methods are described, as well as the author summarizes and Reflection on the TMM model.
Key words: software testing; Test Maturity Model(TMM); modeling framework; maturity level structure
1 背景
随着信息时代的快速发展,软件产业也逐步进入高速增长态势,软件过程的研究已经发展为软件测试行业的基础工作之一。要加强软件组织的开发能力、提高软件产品的质量,就必须不断地对软件过程的能力进行改进。因此,软件能力成熟度模型即CMM在1987年美国Carnegie Mellon 大学软件工程研究所应运而生CMM逐渐成为了评估软件开发过程的管理以及工程能力的标准。目前,已经形成了以个体软件过程、团队软件过程以及过程成熟度集成模型CMMI等为主导的软件开发过程改进体系[1]。但是,传统CMM的着眼点在于软件组织的开发过程和软件过程能力,并没有关于软件测试成熟度的概念,也没有研究改进软件测试过程的方法,因此,随着软件测试在软件生命周期中的地位越来越突出,软件测试成熟度得到了业内人士的高度重视,并且在传统的软件过程成熟度基础上继续进行模型改进,其中,比较具有代表性的是由Ilene Burnstein博士等人提出的软件测试成熟度模型(TMM),该模型是对CMMI模型的补充,是对CMMI模型的存在问题的修正,同时也对改进软件测试过程及提高软件测试能力做出了思想和方法上的指导。
2 TMM模型框架简介
TMM模型为了改进软件测试与评价过程,对CMM模型进行了较大程度的改进与补充。TMM模型在CMM模型的原有基础将软件测试过程划分为初始级、定义级、集成级、管理与度量级和优化级5个等级[2]`。处于初始级的软件测试,是一个混乱的过程,测试过程在编码之后,与调试未加区分;阶段定义级的测试过程,很大程度上凸显出测试过程与调试的区分,但是其被定义为编码之后进行的的独立阶段,显然不符合软件工程的要求;前两个阶段的存在的问题在集成级得到改善,集成级将软件测试融入到整个软件生命周期中,从需求分析开始,测试人员将伴随这个开发过程制定相应的测试计划、测试目标等;从管理和度量级开始,整个测试过程就已经由定性描述进入可度量化的过程。在此过程中,除进行测试之外,还有对软件生命周期各个环节的管理与审查;优化级是以前四级为基础,优化并预防缺陷、质量控制、监控测试成本与效率,为整个测试过程指引方向。
而每个等级(除等级1)都有自己的成熟度目标、子目标以及活动、任务和职责。TMM的模型框架如图1所示。
由图1可以得出,若要达到某成熟度等级,所必须实现的成熟度目标,即软件测试的改进目标。而成熟度子目标的定义更为具体,定义了该等级的范围、界限和需要完成的事项。通过活动和任务来实现子目标,任务和活动涉及实施和组织调整问题。活动和任务则定义了为了软件组织达到某一等级,进行软件测试改进的行动计划。三组人员各司其职,完成相关任务与活动,达到成熟度子目标[3]。
3 TMM的等级结构
TMM将测试的成熟度分为5个等级,每一级别都是一个测试过程,都有自己的过程域,软件组织要想达到更高的级别,就必须先满足前一个级别的过程域。同时也必须完成所有的被定义的目标。这些目标的定义,需要通过活动、任务和责任进行标记,在进行过程中,需要根据相关人员的特殊需求来不断调整[1]。如图2所示:
在TMM等级描述中,详细阐述了测试过程的特点以及为达到规定级别所需要完成的目标和子目标。
1)第一等级为初始级。软件测试的终极目标是为了查找程序中的错误,在这一阶段,由于相应的编码任务还没有完成,缺乏一定的测试资源,因此软件测试没有相对清晰的目标,测试任务也可有可无。
2)第二等级为定义级。在这一阶段,软件测试的目标是为了验证软件是否符合相应的需求,因此会启动一些相应的软件测试计划过程,并对采用的软件测试方法制度化,在定义级,由于在进行软件测试之前要把所有的编码工作完成,导致的结果就是在需求分析阶段与设计阶段产生的一些软件缺陷会一直遗留到编码阶段才能被发现。
3)第三等级是集成级。在这一阶段,会有相应的、相对独立的测试部门出现,测试工作不需要在完成编码后才能进行,而是在满足用户需求的目标上进行测试工作。并集成到软件生命周期的各个阶段中。在第三等级,需组建一个软件测试组织用于负责测试规划、测试缺陷跟踪等测试技术工作。同时在测试过程中需要有相应的测试工具对测试工作进行辅助。同时,软件测试小组成员要和质量保证专家一起,与客户进行沟通,从软件需求分析阶段制定软件测试计划,并根据需求分析表格制定相应的软件测试目标。该阶段的缺点为没有行之有效的评审制度以及没有一套质量控制与度量的标准等。
4)第四等级为管理与度量级。在这一阶段,软件测试是可以进行度量与质量控制的过程,应保证进行可靠性、可用性与可维护性等方面的测试。软件测试活动既包括程序语言,还把评审与审查作为软件测试活动的补充,用于发现及消除软件产品缺陷。为了测试过程的完备性,建立了缺陷管理系统并将缺陷的等级进行划分。同时测试人员采用数据库记录和管理相应的测试数据以及测试用例。但在管理与度量级,由于没有相应的缺陷预防系统,不能自动的进行收集与分析软件测试中生成的相应数据。
5)第五等级为优化级。在这一阶段,改进了第四等级的缺陷,已经具有相应的缺陷预防能力和软件质量控制能力,能够保证之前发现的缺陷不会在后期继续产生。在这一级,自动化测试工具是整个测试过程的重要组成部分。可以进行自动的收集与分析测试中产生的数据。并建立了测试流程与测试的规章制度。由于优化级的测试活动是可重复性、已定义、已管理和已测量,所以软件组织可以对测试过程进行不断的优化改进和调整。
根据上面描述的TMM的5个等级,给出相应的成熟度等级目标和子目标,如表1所示。
② 为软件测试活动定义相应的目标、任务、活动和工具等\&
启动测试计划过程\&① 制定软件测试计划模版并进行任务分配
② 获取用户需求
③ 准备软件测试活动所需的工具\&将基本的测试技术和方法制度化\&① 在软件组织中实施基本的测试技术与方法,例如黑盒测试、白盒测试策略等。
② 制定相应的管理制度,明确规定基本的测试技术和方法何时、怎样实施,以及基本的测试工具等。\&集成级\&
建立软件测试组织\&① 选择和培训相关人员成立测试小组
② 为每个测试小组成员进行职责分配
③ 与客户进行讨论,获取用户需求\&
制定技术培训计划\&① 为测试人员制定技术培训计划
② 明确具体的培训内容,例如:测试方法、测试标准、测试技术与工具、审查与评审过程等\&将软件测试集成到软件生命周期中\&① 将软件测试计划阶段划分为和生命周期各阶段相关联的各个子阶段
② 将测试策划集成到生命周期的各阶段
③ 打通渠道,提高用户参与度\&控制与监督测试过程\&① 监督和控制过程可视化,为测试过程提供依据
② 随时与测试策划对比,及时调整测试进展
③ 定义和配置测试相关项\&
管理和测量级\&
建立组织范围内的评审程序\&① 拟定正式的评审程序
② 将评审定义为测试活动,在生命周期中实施通行评审
③ 识别、记录、清除软件产品和测试工作的缺陷\&
拟制测试度量程序\&① 拟定一套关于测试过程质量与能力的度量程序
② 准确识别测试数据,对测试数据进行详细处理分析
③ 根据测试结果,不断修正测试计划\&
软件质量评价\&① 根据测试过程充分性,定义可度量的质量属性和目标
② 测试过程完成后,需要保证软件产品可靠、可用、稳定、安全\&
优化级\&
应用过程数据预防缺陷\&① 成立预防缺陷相关小组
② 记录缺陷、分析缺陷,找出缺陷根源
③ 缺陷预防组的相关成员与其他组的成员相互配合制定缺陷预防计划,防止已被识别的缺陷再次产生\&
实施质量控制度量\&① 根据所定义质量属性,进行测试
② 通过统计抽样、等级度量促进测试过程
③ 融入开发团队,减少缺陷,提高软件质量
④ 运用模型工具,加强测试充分性\&
优化测试过程\&① 根据测试进展,量化测试过程,对测试过程不断优化调整
② 建立组织结构标准,支撑成熟度的不断提高\&]
4 TMM实施
为了指导软件工程人员进行正确的软件过程评估,采用TMM等级提供支持。在软件组织中实施TMM时,可遵循以下步骤:
1)准备活动
这个步骤中要建立评估小组,选择与培训小组成员,确定组长,选择测评项目,并制定评估计划,准备参加评估的组织部门。根据客户需求制定评估问题表。
2)实施评估
评估过程中,评估小组成员通过和被评估人员进行沟通,获取相关的评估信息,通过查询相关文档与调查表进行信息补充。为保证信息的准确性与客观性,可将信息记入问题表。评估人员根据记录信息,划分软件组织的TMM等级。
3)分析评估结果
评估人员根据评估输出的TMM等级及相应的记录分析当前软件组织存在的缺陷,并指出该软件组织需要提高的领域以及要达到的下一个目标的优先级。量化的改进目标,制定出相应的行动计划。
4)活动计划
为了使软件组织能够达到TMM的高等级,评估小组应根据高优先级的改进目标开发活动计划,通过该计划描述相应的活动和资源,并改进现有的实践内容和进度。
5 结束语
软件产品的开发过程是一项长期的工程,需要不断研究和实践。本文针对传统软件成熟度模型的不足,将TMM模型进行了详细的阐述。TMM模型补充了CMMI模型的不足,能够充分的覆盖软件测试的一系列问题,并且软件组织可以根据TMM的要求,评估当前软件测试能力的状态,并对测试目标和测试过程进行不断修正,极大提高软件测试人员的工作效率。利用TMM模型不断优化测试过程和目标,将会给软件开发和测试组织带来质量和经济上的双丰收。
参考文献:
[1] 朱少民. 软件测试方法和技术[M]. 北京: 清华大学出版社, 2010: 71-74.
北京工业大学软件学院蔡建平教授长期从事软件工程、软件测试及软件质量保证的研究,在多年讲授软件测试课程经验和体会的基础上,对软件测试课程教学内的知识点进行调整、补充和完善等方面的改革,针对软件质量评价和软件高可靠性的要求,针对国内软件研发和测试外包的本地化要求,以及针对软件测试用于各种应用领域的要求选择授课的知识点,并取得了较好的效果。
目前国内关于软件测试的书籍较多,其中很多书籍是翻译的、为培训用的或介绍软件测试技术和方法,作为教材满足各类测试人员的学习还有一定的距离。本书是在作者长达二十几年软件工程、软件测试和软件质量保证实践经验和教学经验的基础上,借鉴前人成果,参考当前软件测试方法和技术应用实践案例进行编写的。蔡建平教授编写的《软件测试大学教程》一书,以现代软件测试需求为背景,以现代软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,从软件危机及软件缺陷开始,全面介绍软件测试的基本概念,软件测试的技术、方法和工具应用,以及软件测试在当前主流应用中的具体开展和实施。
其特点如下:
(1) 内容全面。突出全生命周期软件测试概念、软件质量分析手段、现代软件测试技术、主流测试工具应用以及典型应用测试方法等,帮助学生了解和掌握现代软件测试的各种原理、方法和技术,并能够选择合适的软件测试工具进行相关测试。为培养学生今后成为高素质、专业化的软件测试人才打下基础。
(2) 针对性强。针对软件开发方法和技术的发展变化,针对我国软件外包服务的蓬勃兴起,针对我国国防工业如航空、航天、船舶、电子、通讯等大量重要软件或关键软件的实际应用情况和测试需求,特别是对软件高可靠性的要求,选择教材的知识点。
(3) 重实践性。该书对支撑现代软件测试技术应用的测试工具进行了全面地介绍,特别是对开源软件测试工具的介绍,这对高校开设软件测试实验课程是非常有意义的。在教材中给出了软件测试在几个典型应用领域具体实施的要点和注意事项,这对缺乏实践经验的培养对象而言具有极好的引领作用,对开阔软件测试人员的眼界、思路和具体实践有很大帮助。
中图分类号:G642.4文献标识码:A
目前我国软件测试人才严重匮乏,人才缺口达到30万,造成这一结果的主要原因是国内软件测试人才教育相对滞后。但实际上,很多学习了软件测试课程的学生却找不到工作,业内专家称之为人才的“结构性过剩”[1],因此,滞后的原因不仅仅是教育机构开设软件测试课程时间的滞后,主要是教学内容和教学效果与实际需要的差距产生的滞后。随着外包开发行业的快速发展,对人才在代码和文档方面的规范性、技能和工具的熟练程度要求越来越高,而这些要求正是软件测试人才教育的薄弱环节。如何顺应市场需求,培养出企业所需的软件测试人员,成为《软件测试》课程改革的目标。
一、《软件测试》课程存在的问题
随着软件测试人员市场需求的不断增加,各大高校、职业技术学校及IT培训机构纷纷开设了《软件测试》课程,各种软件测试的教材也相继出版发行,但教材中技术实现的内容较多,对常用的软件测试文档书写介绍很少,对自动化测试工具基本也是简略介绍其功能。在实验教材方面,目前还没有配套的软件测试实验教材问世,在教学过程中基本是任课教师自行设计实验教学内容。对于实践性较强的课程,如果没有大量的项目开发经验和完整的系统案例作为支撑,就难于用恰当的实例来解释相关理论,更难设计出实用有效的实验内容,导致在校学习的知识与实际工作脱节的现象。
二、《软件测试》课程采用案例教学法的必要性
案例教学法最早起源于美国哈佛大学商学院,自20世纪20年代以来一直被广泛地应用于商业、法律、医学领域培训中,随着案例教学法的推广、成熟,案例教学法受到其他专业领域的重视。案例教学法是根据教学目的和培养目标的要求,教师在教学过程中,以案例为基本素材,把学生带入到特定的事件情景中进行分析问题和解决问题,培养学生运用理论知识并形成技能技巧的一种教学方法。与知识为导向的讲授式课堂教学模式相比,案例教学法更注重学生知识的运用能力,以学生实际能力的提高为最终教学目的。
“软件测试”课程的教学目的是让学生深刻理解软件测试思想和基本理论,熟悉多种软件的测试方法、相关技术和系统的软件测试过程,学会编写测试规格说明书,测试报告,并学会使用几种流行的自动化测试工具,从工程化角度提高和培养学生从事大型软件的测试技术和能力。因此在教学过程中,必须引用系统的工程化的案例作为理论课教学载体和实验课教学的实施对象,这样才能帮助学生深刻理解基本理论,并通过实验掌握测试的技能和技巧。
三、案例教学法在《软件测试》课程中的实施
本课程的培养目标是根据市场需求,结合实际工作中企业对“新人”的培养模式及实际工作的方式方法,通过若干系统案例对学生进行测试技能的训练,让学生以“经验者”的身份进入人才市场参与竞争。
(一)根据学生特点规划教学内容
由于学生缺乏整体项目开发经验,我们主要针对初、中级测试工程师设计教学内容。而针对高级测试工程师和测试管理者担当的工作,比如测试计划的制作、各种设计的验证、测试评估和总结,需要经历初中级测试工程师的实战,积累大量经验才能承担。这一部分内容,我们只在理论教学中简单讲述,不在实验教学中安排实验内容。
(二)根据教学阶段选择案例素材
根据教学进度和学生对知识的掌握程度,采用由简到繁、循序渐进的方式选择如下三个案例进行教学:
(1)选择经典案例设计的“被测软件系统”作为软件测试基本技术的案例进行理论和实践教学。
(2)选择以C/S模式实现的“小区物业管理系统”作为软件测试过程、测试用例设计、测试文档书写相关内容的案例。
(3)选择以B/S模式实现的“图书馆管理系统”作为面向对象测试、网站测试的案例。
在理论课教学中主要以“被测软件系统”、“小区物业管理系统”作为案例进行理论知识的讲解,与网站测试和面向对象测试相关的内容以“图书馆管理系统”作为案例进行讲解。这样,进行完理论教学,学生对案例系统的功能基本了解。在实验教学中,我们提供给学生在测试中需要的代码、开发规范、需求分析、系统设计书、概要设计书、详细设计书,具备了以上资料,便可模拟实际工作模式,将理论教学中讲述的测试技术和测试文档的书写方法运用到案例的测试实验中。
(三)模拟实际项目完善案例系统
现有的软件测试教材,通常会在最后章节给出一个案例,对该案例利用教材上介绍的各种测试方法针对性地进行测试用例设计。但是,教材对案例的描述基本只限于项目背景介绍、子系统介绍、子系统性能及可用性要求方面的内容,基本没有提供可运行案例系统的代码,同时也缺乏必要的供测试使用的文档。大量的案例参考书中,有可运行的系统代码却没有测试必须的较完备的文档。实际工作中,软件测试过程与软件设计周期有相互对应的关系,软件测试过程中的单元测试、集成测试、系统测试、验收测试分别对应软件设计中的详细设计、概要设计、系统设计和需求分析。因此,要完成一个系统的较完整的测试过程,不仅要提供被测系统的完整代码及数据,还必须提供全套的设计文档。
针对以上三个案例系统,我们首先补充完成需求分析、系统设计书、部分模块(单元)的概要设计和详细设计书,力争陆续完成整个系统的完整设计资料,以供学生测试使用。
(四)针对测试技能训练设计缺陷案例
为了检验学生的测试技能,在不同的实验中,人为地在案例中设计针对性的缺陷,锻炼学生检测故障的能力、故障描述能力以及跟踪定位缺陷的能力。在测试技术实验中我们人为制造各种缺陷,让学生通过白盒及黑盒测试技术去发现缺陷,并学会根据不同的软件设计选择最佳的测试技术进行有效、高效的测试。在软件测试过程实验中,人为拆散系统,让学生自行设计桩模块及驱动模块,搭建单元测试环境;提供给学生零散的单元模块及概要设计书,让学生利用集成测试策略实施集成测试。
(五)选择适当测试工具进行案例测试
教材上简略介绍了十几种测试工具的功能,但实际使用方法缺乏资料。在教学中,我们选择代表性的CodeReview、Nunit、QTP三种工具进行代码检查、面向对象测试、录制测试过程及编写测试脚本,帮助学生掌握常用工具使用方法。
在教学过程中,引导学生分析测试工具的实现原理,启发学生从不同的侧重点去思考测试自动化工具的设计及实现方法。
四、后续教学改革构想
(一)教学进度的调整
计算机课程的实验教学,通常和理论课同步或迟后几周进行。对于“软件测试”这门课程的实验教学,如果与理论课同步进行,前期的实验内容安排就缺乏理论支持,如果比理论课迟后几次,即在讲述白盒测试和黑盒测试后开始实验教学,就可以将各种测试方法融入实验中进行。但由于软件测试过程及技术、测试文档书写相关内容还未讲述,实验内容的安排显得孤立,没有整体感。为了让学生体验软件测试在实际工作环境中的实施过程,将理论课讲述的知识有机地融入到完整的案例中进行实验,就需要系统地学习完理论知识后,再结合实际案例系统地进行实验。
以后的教学中,拟打破传统的周4学时,即理论2+实验2的排课模式,将一个学期分为理论上半学期,实验下半学期,上半学期周4学时用于结合案例进行理论教学,下半学期周4学时针对理论课讲述的案例进行实验教学,以便学生能够模拟实际工作环境进行系统的软件测试实验。
(二)相关课程连贯教学
软件测试课程是伴随软件行业的迅猛发展而诞生的,在此之前,软件测试隶属于软件工程课程进行教学。由于软件测试伴随软件的整个生命周期,因此,软件测试课程的理论教学和实验教学,必须贯穿于软件开发的全过程。在以后的教学中,对软件工程专业的学生,拟采用课程连贯教学法,通过编程语言课程、软件工程、编程实训课程、软件测试课程相结合的方式,采用同案例、跨学期的方法进行连贯教学,即在某一编程语言教学中引入案例,进行案例片段程序的讲解,在软件工程课程中进行系统设计,在实训课程中实现案例,在软件测试课程中进行测试的一系列训练。这样,便于学生将所学知识关联起来,了解课程之间的联系和软件项目开发的流程,让学生通过两至三学期的时间去消化几门课程的同时,体会一个项目开发的全过程。
五、结束语
各高校、职业技术学校和职业培训机构都相继开设了软件测试课程,在这门课的教学过程中,教师们不断摸索新的教学方法和教学手段,取得了一定的成果。但由于计算机行业日新月异的发展,也给软件的测试带来了挑战。因此,在教学过程中,教师必须关注行业发展的前沿,提出软件测试过程中亟待解决的问题,启发学生去思考并寻求解决的方法。同时,教师应尽可能参与实际项目开发,为理论及实验教学积累实用真实的案例资源。
参考文献
[1]刘德宝.软件测试工程师培训教材[M] .北京:科学出版社,2009.
中图分类号: TP311.1 文献标识码:A 文章编号:1009-3044(2013)24-5462-02
软件测试是软件开发中的一个重要环节,国内软件开发与测试人员的比例严重失调,市场对软件测试人员的需求量很大。同时,软件测试作为新兴行业,发展前景好、空间大,薪酬待遇好;工作地点以北京、上海、广州等IT产业发达、环境好的一线城市为主。目前市场上急缺的就是初、中级软件测试工程师,这正是高职院校的人才培养目标。
兰州石化职业技术学院于2011年开办软件测试专业,目前第一批毕业生已经走向社会,进行顶岗实习,接受社会的检验。在专业建设的不断实践和探索中,如何做好、做强软件测试专业是我们一直思考的问题。
1 专业建设依托区域经济发展
高职院校每个专业的建设都应充分依托区域经济发展,体现行业特色。甘肃省“十二五”规划明确指出:“十二五”期间,将以兰州、天水、平凉为核心,聚集优势资源,进一步扩大集成电路、新型元器件、软件等电子信息产品和产业规模,建设天水电子科技产业园、兰州软件产业园、西北云计算中心等园区,支持兰州市创建国家级软件和信息技术服务业示范基地,争创中国软件名城[1]。面临巨大的市场机遇和挑战,软件测试专业如何进一步把握市场需求,明确专业定位,确定人才培养模式,细化人才培养方案,构建专业课程体系,进一步开发课程资源,落实教学团队和实训基地建设,是我们重点要解决的问题。
2 专业建设内容
1)专业定位更加准确,人才培养目标具体化。进一步加强专业建设与社会需求的紧密接轨,深入企业调研,加强市场分析,按照软件测试工作过程所需的典型工作岗位提炼专业人才培养目标,将学生知识学习、技能提升、能力培养和素养形成融入整个教学过程,实现从学习者到工作者的角色转换,努力培养适应软件测试岗位的职业技能强、综合素质高、具有可持续发展能力的高素质技能型人才。
2)课程体系与岗位及岗位群紧密对接。加强对软件测试企业的岗位调研,紧密跟踪市场对本专业人才结构、规模和质量的需求变化,及时将本专业领域的新知识、新方法、新技术和新思想融入专业人才培养方案,对现有课程体系进行持续改进和优化整合。加大理论实践一体化课程、任务引领型课程在专业学习领域课程中的比重;根据课程特点,整合教学内容,构建“公共学习领域”、“专业学习领域”和“拓展学习领域”三大模块;进一步优化顶岗实习课程的设计,完善相关管理制度和实施办法;加强职业素质课程的针对性与应用性,加强所学知识与生活的联系,提高为专业服务的能力[2]。
3)充分开发课程资源。在建立完备的课程体系基础上,根据具体情况开发校本教材,丰富教材形态(包括课程标准、教材、教案、电子课件、在线学习课件、企事业案例、毕业实习案例、习题集、参考书等),建立具有明显职业教育特色的课程和教材体系。要打破传统的按照技术学科进行教材编写的模式,开发和推广与软件测试行业密切联系的综合性和案例式课程和教材。
4)加强软件测试专业实训基地建设。在充分发挥现有实训基地效能的基础上,深入其他同类院校和软件企业内部考察,了解市场用量最广的软件测试方法和新型的测试工具软件,学习其先进、高效的实训基地管理办法,与企业专家共同讨论符合高职学生特点的典型测试案例,探索校企互惠双赢、长效合作共建校内外实训基地的新思路。
5)优化软件测试专业人才培养方案。邀请企业专家、校内专家、项目组成员和学生代表共同讨论现有人才培养方案中存在的问题和不足,将前期的调研工作结果汇总、分析、提炼、筛选,结合新形式下的人才培养思路和学生特点,进一步优化专业人才培养方案中的各个环节,重新制定课程标准,探讨项目案例,细化教学过程,保证每一门课程开设的有效性和针对性。
3 专业建设思路
1)突出专业建设的开放性。软件测试专业本着“高职教育、源于岗位、工学结合、融入企业”的理念,按照“专业知识+岗位技能+资格证书+职业素质”的培养标准,积极开展“产学结合”的办学模式,注重行业、企业参与专业人才培养方案的研讨和修订。把企业搬进校区,把课堂搬上工作岗位,把教和练更加紧密的结合在一起,变学生被动学习为主动学习,将专业知识理论教学和实践教学有机融合,将专业知识学习,岗位技能学习,资格证书培训,职业素质教育连成一体,形成 “工学交替,双螺旋上升”的人才培养模式[3]。
2)注重课程体系的完整性。通过与行业企业合作,针对毕业生可能面向的不同的潜在的就业岗位,如软件测试员、缺陷分析员、测试组长等,按照“分解岗位工作任务确定工作能力设置课程体系开发教学资源”的专业建设思路,构建“基于软件测试工作过程”的专业课程体系。
3)凸显课程设置的针对性。根据“倒推”理论,据岗设课,按照“岗位决定能力,能力决定课程”的主导思想,首先筛选软件测试行业的岗位和岗位群,以及社会认可度较高的职业资格证书;接下来获取每个职业岗位的能力要求、专业知识结构要求和职业素养要求;然后根据获取的岗位能力要求,设置岗位能力课程;根据专业知识结构要求,设置专业知识课程;根据职业素质要求,设置职业素质课程;根据职业技能取证要求,对应取证课程;最后,根据高技能测试人才的成长规律组合课程,并考虑各课程之间的衔接关系及专业教学资源的配置与均衡,我们对同一阶段的课程进行排序,形成软件测试专业课程体系的“倒推”链,即确定岗位及岗位群获取岗位能力据岗设课组合和序化课程形成专业课程体系[4]。
4 思考与总结
兰州石化职业技术学院地处西部欠发达地区,通过不断与沿海发达地区的软件企业深度合作,不断交流专业技术,聘请IT培训机构名师亲临指导,目前学院的软件测试专业已经成功探索出了一条适合自己发展的专业建设之路。但在IT市场新技术不断更新、飞速发展的严峻形势下,我们还需进一步解放思想,开拓创新,迎接新的挑战。
参考文献:
[1] 甘肃新闻网[EB/OL].http://.
中图分类号:G64文献标识码:A文章编号:1009-3044(2012)14-3353-02
Course System Research of Software Testing Technology Based on Demand of Talent Market
ZHENG Hao, LIU Jian-fang
(Pingdingshan University, Pingdingshan 467000, China)
Abstract: This paper analyze the actual needs of talent market at first, and then set up the Curriculum system based on the software testing theory and technology. Paying more attention on the application, we want to construct course system to meet the market, which has deep foundation and strong skills. All of these promote the quality of the professional course.
Key words: Market requirement; software testing; Curriculum system
最近的年度软件测试行业专项调查报告显示,社会对软件测试人才的需求越来越大,可人才市场提供的人力资源、实际能力却不能满足这种需求。目前国内对测试人才职业化培养体系还不够充分,现行的传统教育体制重学历教育,轻职业技能培训,导致了软件测试人才告急。如何结合人才市场的实际需求,构建适合的课程培养体系,成为软件测试课程改革迫在眉睫的问题。
1中国软件测试行业的市场需求分析
在我国,软件产业的兴起和发展也就是这短短十几年。在前面的兴起和发展壮大阶段,一般的软件公司都是重开发轻测试,甚至存在把测试工作都放在用户那里去做的错误思想;追求眼前功能的实现,开发软件追求“短”、“平”、“快”。不太考虑性能和功能的优化。软件测试以往一直被中小IT企业所忽视,只有一些知名企业才有专门的软件测试人员。
现在,更多的国内企业认识到测试的重要性,但是由于国内测试人才的储备相对较少,据国家权威部门统计,中国软件人才缺口超过100万人,其中很大一部分为软件测试人才,缺口达到30~40万。但由于软件测试的重要性是近几年才被充分认识到的,高校教育和企业培养都还没有跟上,致使软件测试需求严重供不应求。
分析年度软件测试行业专项调查报告,目前对测试人员的素质和要求逐步提高,测试人员不仅应掌握相关计算机知识背景、软件工程基本知识、熟悉项目编程语言、熟悉项目技术架构及需求内容,而且要求工作有责任感、独立分析能力及团队精神等方面。其中“动手能力”和“实际经验”是软件企业在招聘软件测试人员时最为看重的,而这也恰恰是很多求职者的“软肋”。
2现有软件测试课程体系存在的问题
2007年,我校软件学院认证管理中心被授予计算机软件测试人才培养基地。软件学院软件工程专业以及软件技术专业均开设有软件测试相关课程。由于软件测试是一门实践性很强的课程,应采用精讲多练的原则开展教学,即学生通过大量的上机实践,循序渐进地提高自身的软件测试用例设计、开发、执行能力以及软件测试的管理能力。但在具体实践教学组织中,教师普遍感觉有许多不如意的地方,具体存在的问题有:
1)对实践课程的认识程度和重视程度不够,软件测试开展的不够彻底,测试过程中存在大量的不规范性;
2)缺乏合适的教材,同时教师缺乏相应的实战经验,导致教学上知识结构不合理,教学内容与具体应用脱节,尽管教师都能很好的讲解软件测试理论知识,但却由于缺乏合适的测试案例,没有将理论教学内容和最新相关技术结合,使得学生思维局限性大,并没有真正提高学生自主思考的能力和创造性思维。
3)教学方法和手段因循守旧,学生对软件测试职业存在一些片面的,甚至是错误的理解。
3基于人才市场需求的《软件测试技术》课程体系研究
基于人才市场需求的软件测试技术课程体系研究主要是分析目前人才市场对软件测试行业人才的岗位需求,掌握软件测试人才需要具备的职业素质,同时调查研究在学生对前续课程的掌握情况,以及目前所具备的相关职业素养的程度,计划从技术、沟通协调能力、经验和技能、综合素质能力等方面分别对岗位需求和学生水平展开调研。
3.1课程体系目标定位
我校软件工程专业的培养目标是培养适应社会发展需求,具有扎实的计算机知识基础,掌握软件工程领域的前沿技术和软件开发方法,具有较强的软件实践能力和创新精神,具备较强的软件项目的分析、设计、开发和维护能力,能够按照工程化的原则和方法从事软件开发和管理的应用型人才。
作为该专业的一门专业必修课,为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。将以软件技术为基础,测试理论与技术为核心,进行课程体系设置。理论教学目的是让学生深刻理解软件测试思想和基本理论;熟悉多种软件的测试方法、相关技术和系统地软件测试过程;会熟练编写测试计划,测试用例,测试报告,并熟悉几种自动化测试工具,从而从工程化角度提高和培养学生从事大型软件的测试技术和能力。
同时在实践环节,要求学生通过实验学习,培养与提高项目测试过程中采用的主要技术、设计测试用例、编写测试总结报告等能力,激发学生创新精神和创新能力,具体应达到下列基本要求。1)使学生掌握分析问题和解决问题的技巧,通过具体实验使学生掌握常用的黑盒测试技术、白盒测试技术、自动化测试工具。2)让学生了解测试流程,掌握测试总结报告的编写。通过实验使学生理解软件缺陷的描述,并能结合项目设计出较完善的测试用例。
3)了解Web系统的测试范围,使学生能在应用场景下联系实际和所学知识分析和解决问题,缩短理论和实践的距离。
3.2课程教学内容选取
结合课程体系目标定位,该课程在教学内容选取上主要是基于人才市场需求,厚基础、强技能、注重技术应用。总学时共72学时,其中理论和实践各36学时。结合课堂教学和实践教学,软件测试技术课程包括以下几部分:
1)软件测试基本理论及方法:包括软件测试的概念、测试的原则、用例的设计、各种测试方法及技巧,测试策略。同时通过实验掌握软件测试的步骤、方法及常见问题的处理。
2)测试流程及文档写作:软件测试流程、各阶段的文档编写;书写测试计、测试用例、测试报告、产品安装手册、产品使用手册。在实践环节,通过SATM系统让学生掌握软件测试流程各个阶段的相关技术、测试相关文档的写作技巧。
3)系统学习软件测试的各种工具,包括:自动测试工具WinRunner;压力测试工具LoadRunner;测试管理工具Testdirector;流程管理工具CVS;JAVA单元测试工具Junit。要求学生掌握自动化测试理论与方法,熟练使用常见测试工具。
4)软件过程控制与质量保证:软件质量的概念及软件质量管理的基本方法;测试项目的范围管理、人员组织结构、理解测试的配置管理、风险管理、成本管理等。
5)项目实训:引入具有真实企业背景的软件测试案例,充分考虑人才市场的需求,突出强调工学结合的重要性。通过实际项目掌握实际工作中开发和测试的流程,使用相关工具,完成各种测试目标,实现软件测试实践环节单项专业知识与整体技能综合运用的目标,提高测试能力和积累相关经验。
3.3课程教学方法设计
为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系,在教学过程中,需要把技能训练和职业素质培养有机结合起来,注重学生综合能力的培养与提高,突出强调职业岗位针对性。提高学生综合运用所学知识发现问题、分析问题、解决问题的能力,进而培养学生的技术应用和技术创新能力。在教学方法设计上做了一下改进:
1)突出工学结合:在讲解基本理论知识的基础上,引入具有真实背景的软件测试案例,并结合理论知识讲解将案例进行改造,使案例的分析应用与理论知识相呼应。目前市场上IT公司在招聘测试人员时按照所需技能的不同,将测试人员分为三个等级,分别为初级测试工程师、中级测试工程师和高级测试工程师。分析不同等级的要求,在教学过程中,主要针对初级和中级的技能要求循序渐近的展开教学。使通过此教学改进,既弥补了教师缺乏实战经验带来的不足,也使学生能较真实的接触到实际应用,从一定程度上实现了人才培养与市场需求的接轨。
2)强调团队合作:在教学过程中实施“1-7”模式,即在实验课教学中,采用团队合作的方式,分组完成各项任务。在实验初期由教师合理分配各团队成员间的任务,培养学生的基本岗位技能。经过两个实验任务的完成,每个团队挑出一名同学为项目组长,模拟公司招聘的形式,招聘4~6个组员组建自己的团队。后期实验任务的分工由团队组长负责项目进展、分工协作、制定测试计划等工作,其他小组成员则按要求完成自己的工作,如编写测试策略、设计测试用例、撰写测试报告等,教师主要起引导作用,充分发挥以学生为主体。为了全面培养学生,在不同的任务中,组员通过角色互换,充分发挥其沟通能力及综合技术能力。在学期末,通过团队评比,以提高平时成绩的形式对表现优秀的团队进行奖励。通过此教学手段,可以培养加强学生面试技巧、沟通能力、团队意识、竞争意识等职业素质的培养。
4结束语
基于人才市场需求的《软件测试技术》课程体系研究定位在对人才市场的实际需求分析之上,针对软件测试人才的特点要求,把行业、企业对人才的要求转化为教学中的具体目标。构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。
参考文献:
[1]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2010.
[2]古乐.软件测试案例与实践教程[M].北京:清华大学出版社,2007.
[3]马民生,马友忠,任刚.以就业为导向的软件测试实践课课程改革[J].电脑知识与技术,2010(4):241-242.
关键词: 软件第三方测试;质量评测;开发成本;规范;验收
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)28-7982-03
Problem Analysis and Suggestions for Third-Party Software Testing
ZHOU Ping,WU Wei-wei
(Tongji university, Shanghai 201804, China)
Abstract: This paper analyzed the development situation of software testing in foreign and domestic,and then arrived at the third-party software testing. It next introduced the present application situation of third-party software testing in domestic. Then, it focused on the problems existing in the executing process of third-party software testing. Based on the problems those were discussed, it proposed some suggestions for the long-term development of third-party software testing and prospected the future of it.
Key words: third-party software testing; quality evaluation; development cost; specification; acceptance
随着社会对信息化依赖程度的不断加深,软件的种类和数量也越来越多,软件行业也因此由“卖方市场”转变为“买方市场”。在供过于求的情况下,软件用户必然会对软件质量提出更高的要求。国家应用软件产品质量监督检验中心总工程师鞠琳博士在《提升软件质量,推进行业信息化》主题演讲中提到美国国家标准和技术机构(NIST)近期的一项研究发现:软件的自身缺陷使美国经济每年要付出近600亿美元的代价,其中80%的资金被开发人员用于确定和纠正软件缺陷。据调查,国际上软件开发人员与测试人员的比例大都在1:1,软件测试收入占软件总产值的20%,而国内软件产业尚未形成这种状态。
1 国内外软件测试工程发展现状
软件测试是许多软件交付用户前的最后一个环节,是保证软件质量的主要手段[1]。国外的软件厂商极为重视软件测试工作,软件开发成本中的30%-50%用于软件测试。为打造Windows 2000,微软用了250多个项目经理、1700多个开发人员,而测试人员则用了3200人,测试人员几乎是开发人员的两倍[2]。每修改一个错误,都要花费大量时间和精力确保没有新错误产生。目前,国外软件测试工作已经演变为一门独立的学科,囊括了配置方案、测试机制、跨平台策略和产品性能、稳定性等独立的知识模块。
虽然国内许多大中型软件企业已经开始意识到软件质量的重要性,很多软件企业也已经配备了质量保证体系以及企业内部的测试队伍,但在软件项目面临时间压力、必须加快研制速度的情况下,通常测试会成为换取项目进度的牺牲品[3]。除此之外,由于许多企业软件工程过程管理不力,甚至缺乏管理,致使软件产品文档和资料不齐全,缺乏统一标准,消化理解困难,特别严重的是,有时小的需求错误,经过多次开发放大,到后来牵一发动全身以至于不可收拾。
令人欣喜的是,随着软件产业的发展,国内越来越多的第三方测试机构应运而生。第三方测试作为独立的测试服务机构,其相对于软件开发企业的内部测试及用户测试具有很多优势。首先,第三方测试以合同的形式制约了测试方,使得它与开发方之间存在某种“对立”的关系,所以它不会刻意维护开发方的利益,能够保证测试的客观性;其次,独立测试在长期的工作过程中势必能够积累大量的实践经验,形成自己的专业优势。并且软件工程测试也是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。长期的实践积累加持续深入地学习,使得第三方测试具有难以比拟的优越性。再次,第三方测试机构的主要任务就是进行独立测试工作,这使得测试工作在经费、人力和计划方面更有保证。不会因为开发的压力而减少对测试的投人,降低测试的充分性,可以避免目前开发单位普遍存在的重开发、轻测试的现象。最后,开发人员由于对软件产品的设计、编码等过程都比较熟悉,容易养成思维定势[4],以至于在测试过程中思路比较有限,采用第三方测试能有效地避免这一问题。
伴随着软件生产规模的扩大和用户对软件质量要求的提高,第三方测试的优势也将日益明显,在今后的发展中软件第三方测试必然会得到更多软件用户和软件企业的认可。
2 软件第三方测试的应用现状
从国外的经验来看,软件测试工作已逐渐由专业的第三方来承担。第三方测试工程主要包括需求分析审查、设计审查、代码审查、单元测试、功能测试、性能测试、可恢复性测试、资源消耗测试、并发测试、健壮性测试、安全测试、安装配置测试、可移植性测试、文档测试以及最终的验收测试等十余项。测试并不仅仅是为了要找出错误,测试方还需要对错误进行归类和总结[5]。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进,从而更好地帮助用户。
软件第三方测试是软件开发方和用户出于不同目的共同选择。随着软件全球化竞争的日益加剧,用户对软件质量的要求也随之提高。为了提高软件质量,降低软件开发成本,许多软件开发方已经逐步将部分测试业务交给第三方负责。与此同时,对于应用软件、甚至系统软件,大多数用户都不是很熟悉其特性,质量评测基本难以进行,迫切需要专业的机构对开发方提供的软件给予客观的测试。正是由于采用第三方测试可以保证测试的独立性、客观性及第三方具有的测试的专业性使得第三方测试越来越成为用户的首选。
目前在国内,虽然软件第三方测试的发展还处于起步阶段,但已经有许多软件企业开始认识到软件质量的重要性,选择第三方测试的软件企业和用户都越来越多。在一些重要计算机软件应用领域,如金融、安全、航空、航天以及军事等方面,已经有不少用户开始颁布测试规定,要求第三方测试,并在逐步将软件测试通过合同关系委托第三方承担[6]。在通信领域,手机等产品的软件需要第三方测试后才可交付使用。在已经进行的一些工程项目当中,软件测试都取得了确保软件产品质量的预期效果,逐步被软件用户和软件企业所认可。
3 软件第三方测试在实施中遇到的问题
目前,软件第三方测试在国内已经兴起,随着社会信息化程度的提高、软件大生产的发展,软件第三方测试必将在国内盛行。但由于软件第三方测试在国内还处于起步阶段,在具体的实施中不可避免地遇到了如下一些困难和问题。
1)软件企业对测试仍不够重视,重开发、轻测试的现象在国内许多软件企业中仍普遍存在。由于对软件测试的不重视,常常导致软件产品的售后服务费用大大增加,从而使得软件产品的成本大幅度提高。成本的增加又导致软件公司考虑到资金问题不愿意增加投入为软件做第三方测试,即使做,给第三方软件测试公司的报价也是极低的。软件企业陷入了这样的死循环,作为软件测试的第三方,面临的问题是回报低但工作量又十分庞大,使得软件测试公司没有盈利的空间,这就成为制约第三方测试公司发展的一个瓶颈。
2)用户和测试机构都还不够成熟,对第三方的认识还比较粗浅,工程实施过程比较随意,项目水平不尽如人意。
3)用户、开发方和第三方的责任与权利常常划分不明确。在实际的第三方测试实施过程中,有些用户甚至软件开发商,容易将软件质量的高低完全寄托于第三方评测服务商,一旦软件达不到系统设计的质量效果,就归罪于第三方。这种认识很打击测试人员的积极性,软件中的错误可能发生在软件项目的各个环节,软件测试只能确认软件存在错误,不能保证软件没有错误,软件测试不可能发现全部的错误。
4)三方关系的协调问题。软件第三方测试的形式一般是第三方评测服务商与软件用户之间签订合同,但实际工作中往往需要软件开发方的密切配合,因此能否处理好用户、开发商与第三方之间的关系,在很大程度上影响第三方测试的效率和质量。
5)许多国家机构也发现软件第三方测试市场,他们对企业软件进行测试,发放国家认可的证书。这就给民间的第三方软件测试公司的成立带来了很大的压力,这些企业的创办者经过测试很难给企业发放这些证书。所以许多软件企业纷纷停止这项业务,而转入更容易赚钱的其他项目,比如软件测试培训。而需要第三方软件测试的企业也找国家直属的企业进行产品认证。
6)软件大企业测试的竞争。许多产品往往都需要进行第三方测试,比如软件本地化测试。微软的产品,生产一个就要产生世界各地的本地化版本,如果这些工作都让微软来做,得不偿失。而国内许多大企业,他们一直与这些大的国际企业有着长年的友好关系。他们往往可以接下这种测试任务,在社会上招聘测试工程师,宣称赴某大公司工作,然而项目一旦完毕,就将这些人员解散。
总之,由于没有建立起一套正规的游戏规则,给软件第三方软件测试的发展带来了许多不利因素。虽然业界已经认识到了第三方测试的重要性,但是在目前条件下第三方测试发展的道路仍旧十分艰难。
4 软件第三方测试发展的一些建议
软件第三方测试是测试工程未来的发展趋势,但由于第三方测试在国内尚处于起步阶段,其在具体的实施过程中不可避免地遇到了种种困难和问题。针对目前第三方测试在实际项目实施中遇到的问题,笔者给出以下几点建议。
1)切实提高软件企业及软件用户的产品质量意识。不论是对于软件企业还是软件用户,质量管理的薄弱都会为其带来不可估量的损失。对软件企业而言,如果因软件质量的不过关,导致用户蒙受损失,其必将失去客户的信任,从而影响自身的发展。对软件用户而言,严格的软件质量控制关系到自身的切身利益。软件质量缺陷问题为软件使用方带来诸多不便、甚至让软件用户蒙受巨额损失的例子比比皆是[7]。因此,作为专业测试的第三方,必须加大软件质量意识方面的宣传,只有软件企业和软件用户的质量意识提高了,软件第三方测试才会有更大的发展空间。
2)规范软件第三方测试市场。面对日益增大的市场需求,不少软件第三方测评中心纷纷建立,甚至有些企业购买一两套自动化测试工具就成立了软件测试中心。其结果可想而知,测试过的软件质量不过关,用户不满意,导致用户失去了对第三方测试的信任,制约了第三方测试的发展。笔者建议不要盲目建立测试机构,搞重复建设。要规范软件测试市场,对测试结构进行整合,建立较大规模的权威测评机构,做到测试不是走过场,真正达到提高软件质量的目的。
3)制定合理的项目验收标准。项目验收的技术标准是第三方合同中必须重点解决的关键问题。合理、明确、符合软件测试技术特点的验收标准,能够明确测试方的责任,无论是对测试方还是用户都有好处。验收标准应面向测试的整个过程并具有可操作性,这样便于测试完成后用户的验收[8]。对大型系统的第三方测试建议重点面向有效性指标制定验收标准。
4)加大软件测试人才建设。在国外,有三年以上开发经验的人员才可以转做软件测试工作。而国内恰恰相反,往往是刚刚参加工作的新人被安排在测试的岗位上,导致测试人员的业务素质普遍较低。2004年原国家信息产业部联合五部委颁布124号文件,强调要“加快培养软件测试人才,开展软件评测技术的研究”为软件测试人才的培养提供了政策支持。虽然近年来,国内众多的高校、职业培训机构都在加强专门的软件测试人才的培养并且取得了一些成绩,但软件测试人才缺乏问题仍未解决。只有加大软件测试人才建设,实现我国软件测试人才供需平衡的良性发展结构,才能有力促进我国软件产业蓬勃发展。
5)用户参与。用户方的充分参与既可以让测试中的许多具体问题得到迅速的解决,又可以对测试起到监督的作用,保证测试全面细致地进行。此外,测试方采用的测试思路及其制定的验收标准等都需要得到用户的认可,所以测试过程中应尽量调动用户积极参与,这样既能让用户更好地理解和接受测试方的测试思路及验收标准等,又能让用户起到协调第三方与开发方关系的作用,从而提高测试的效率。
5 总结
虽然目前第三方测试还刚刚兴起,但第三方测试服务相对于软件企业内部测试及用户测试,拥有不可比拟的优势。随着软件企业和软件用户的质量意识不断提高,以及用户对软件测试服务的需求增大,软件第三方测试服务必将在国内得到蓬勃发展。
参考文献:
[1] 王峰,郑彦兴,包阳.软件第三方测评[J].计算机研究与发展,2008(45):345-350.
[2] 陈宏刚,熊明华,林斌等.软件开发过程与案例[M].北京:清华大学出版社,2003.
[3] 苏正泉.软件测试的10个认识误区[J].电脑知识与技术,2006,(14):149.
[4] 郭树端.软件第三方测试的意义及可行性分析[J].电子产品可靠性与环境试验,2003,(02):47-49.
[5] 王萍.软件测试的重要性[J].软件导刊,2009,(04):20-21.
【基金项目】2015年中央高校基本科研业务费专项资金项目“C程序代码级内存缺陷的充分性检测技术研究”(15CX02050A)。
【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2015)09-0229-01
一、引言
随着软件产业的迅猛发展,软件的复杂性也日益增加,导致对软件的质量提出了更高的要求,这也使得软件测试工程师成为每个软件企业都不可或缺的技术人才。“软件测试”就是一门培养软件测试工程师的专业课[1],本课程较为系统的介绍了软件测试的基本理论、测试方法、测试过程以及常用测试工具等内容。本课程知识的掌握将为学生系统的掌握软件工程知识体系以及毕业后从事软件测试、软件开发等职位打下良好的基础。
如何扎实有效的培养软件工程学生在软件测试领域既具有理论基础、又具有工程实战能力,目前许多软件工程专业教育者进行了积极的探索 [2-4]。我校软件工程专业已入选山东省卓越工程师培养计划[5],为了执行国家对软件工程专业卓越工程师培养的精神,融合学校的“三三三”培养体系[6]的顶层设计,以贯彻培养理论扎实、具备工程实践能力、创新能力强、适应经济社会发展需要的高质量软件工程师为目标,我们也在软件测试课程的培养方案、课程结构、教学方法和考评体系等方面进行了一系列的改革和探索[7,8]。其中最为重要的改革是借鉴CDIO(Conceive-Design-Implement-Operate)工程教育理念,落实了“基于项目的教学”方法,增开了大量的课程设计和综合实践环节,在理论教学的同时注重了工程实践能力得培养。
二、“软件测试”教学面临的问题
“软件测试”课程的已有的教学改革改善了教学效果,但是由于传统的教学方法依然影响着教学,所以目前的软件测试课程教学过程中依然面临一系列问题。
(一)教学内容抽象,学生学习兴趣不高
软件测试是软件工程知识体系的九个知识域中理论性最强的一个知识域,必然造成软件测试教材与教学内容较抽象。目前,软件测试课程教学中普遍存在着理论教学偏重的特点,扎实的理论素养是卓越工程师的必备基础,但是即便对于软件工程专业的本科学生,也欠缺软件项目的实际开发经验,所以课程内容的抽象性增加了学生对课程内容的理解难度。为促进学生对理论知识的理解与应用,必须结合软件测试的课程特点,将抽象的内容分化到软件测试过程的不同阶段中,并采用相应的测试工具体现测试的方法,再应用于教学案例,才能促进学生对抽象的测试理论知识的理解与应用。
(二)教学内容碎片化,学生没有完善的测试知识体系
按照软件开发过程的要求,软件测试是贯穿于整个开发过程的一项活动。而在教学中,软件测试的理论出现了割裂,各知识点呈现碎片化,理论内容与实际的软件测试流程不同步。将不同的测试理论与方法进行了分割,这样利于教材内容的安排以及教学内容的组织,但这也必然造成教学内容碎片化,学生形成不了一个统一的测试理论框架,难以把握所学的理论与方法在软件开发与测试的过程中如何应用。为促进教学效果,有必要基于软件测试过程,定位软件测试的介入点,在不同的介入点进行理论知识的分配,形成一个以软件测试过程为主线、各理论知识在介入点进行分配的鱼骨图式的软件测试理论知识体系。
(三)轻视测试工具应用,培养的学生与企业需求难以衔接
因为软件测试方法众多,这也造成有大量可选的软件测试工具。虽然工具的培训是培养卓越工程师的一个必备环节,然而卓越工程师的培养毕竟不等同于职业教育,不能只是简单的掌握一个测试工具,而应该了解测试工具所体现的测试理论、所适用的测试阶段以及所应用的场景。在进行测试工具培训锻炼的同时,必须结合所讲授的测试理论,以及该工具适用的测试过程与测试场景。为了全面的掌握各种具有代表性的测试工具,需要搭建一个测试工具箱。
(四)教学案例简单,学生没有完整的测试思路
因为理论知识碎片化的讲授,也造成目前教学中只能采用简单的案例,简单的案例虽然有助于学生对具体测试方法的理解,但是难以融会贯通的掌握对一个完整项目的测试。为此,需要基于鱼骨图的软件测试理论知识体系,精心设计能够贯穿整个测试流程的案例,并有必要设计不同类型的案例,形成一个分层次、分类别的测试案例库,以保证对各种测试方法的掌握。
(五)学生对软件测试存在认识偏差,缺乏从事软件测试职业的意愿
目前国内软件行业依然蔓延着“重开发、轻测试”的观点,这种观点也延伸到软件工程专业的教学中,导致部分学生对软件测试这个职业存在认识偏差。这就要求软件测试课程需要从原来偏重理论讲解、学生欠缺软件测试训练的教学中摆脱出来,应该与软件测试工程师要求的能力培养集合起来,注重理论培养的同时,加强与软件测试职业的衔接,增设对软件测试工具的训练,加大基于案例与项目的实战训练,通过工程能力的培养以加深学生对软件测试的正确认识。
三、总结
为了执行我校软件工程专业的卓越工程师培养计划,解决“软件测试”教学中存在的上述问题,我们计划在已有的教学改革基础上,提出“方法为基、过程引导、工具跟进、案例贯穿”的“方法-过程-工具-案例”四位一体的教学方法,以解决目前“软件测试”课程中存在的诸多问题。
本文分析了“软件测试”这门课程随着卓越工程师培养、研究型教学的要求下在理论培养与工程能力训练等方面逐渐显露出的各种亟待解决问题,只有充分认识到这些问题,才有可能针对问题进行教学改革,进而培养理论与功能能力具备的软件测试人才。
参考文献:
[1]吴春雷, 刚旭, 张俊三. 基于“卓越计划”的软件测试类课程改革[J]. 计算机教育, 2014,11:88-91.
[2]李月龙. 高校软件测试课程教学改革研究[J]. 计算机教育, 2014,7:16-18.
[3]邓松. 递进式软件测试创新人才培养模式研究[J]. 计算机教育, 2014,7:5-7.
[4]周雪妍, 林泽鸿, 罗秋滨, 路雯靖, 刘玉利. 软件测试技术四面体培养模式的探索与研究[J]. 教学研究, 2013,5:56-58.
[5]张国平等. 软件工程卓越培养计划的研究与设计[C].软件工程2011年会,2011,10.
[6]刘华东. 构建“三三三”培养体系 推进本科教育迈向更高目标[J]. 中国高等教育, 2012,18:34-36.
[7]吴春雷. 面向应用型软件人才教学模式的探索与实践[J].中国成人教育, 2014.04:124-126.