软件测试项目总结范文
时间:2023-03-23 01:45:26
导语:如何才能写好一篇软件测试项目总结,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
关键词:项目驱动法;软件测试;教学方法
作者简介:赵晓君(1979-),女,河南南阳人,郑州轻工业学院软件学院,讲师;黄艳(1976-),女,河南信阳人,郑州轻工业学院软件学院,副教授。(河南 郑州 450002)
基金项目:本文系郑州轻工业学院校级青年教师教学改革项目的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)07-0101-02
随着软件产业的快速发展,软件系统的规模越来越大,功能实现也越来越复杂,导致软件中存在的缺陷数量大大增加,这些缺陷将会带来各种损失,甚至出现灾难性的后果。因此,如何保证软件质量已成为所有使用软件和开发软件的人们关注的焦点。软件测试作为软件工程的一个重要组成部分,是目前用来验证软件是否能够满足用户需求功能的唯一有效方法,是保证和提高软件质量的重要环节。为适应软件产业的发展趋势和满足软件测试人才的大量需求,目前已经有许多大学在软件工程专业添加软件测试课程或者添加软件测试专业方向。
软件测试专业包含多门专业课程,有“软件测试理论”、“软件测试技术”和“软件缺陷管理”等,其中,“软件测试理论”课程重点为初学测试的同学讲解测试的基础理论知识,主要包括软件测试基本理论、软件测试方法和技术等,在多门专业课程中占有举足轻重的地位。
一、“软件测试理论”教学现状
“软件测试理论”课程重点介绍软件测试的基本理论,因此整个课程主要以教师讲授为主,在教学的过程中存在以下问题:
1.教学内容理论性较强,难以调动学生学习的主动性
对于初学软件测试的学生,首先要向其讲授相关测试理论,使其建立系统的测试理念。
但是学测试的学生大都是理科生,喜欢操作性强的课程,“软件测试理论”课程的理论性太强,需要背诵很多概念性的知识,这对于他们来说是比较困难,不能激发学习的主动性,教学效果不理想。
2.测试方法和技术案例实际应用价值不足,学生很迷茫
测试方法和技术是“软件测试理论”课程学习的重点和难点,这部分内容仅靠老师的讲解和书本上的案例很难让学生深入理解掌握测试技术的内涵,学生在学习这部分知识时会产生迷茫:学习这些知识有什么用处,在具体的项目测试中,应该怎样应用这些知识?没有实际的项目案例做支撑,学生会失去继续学习下去的兴趣。
针对上面的问题,本文提出将项目驱动法应用于“软件测试理论”课程的教学中,学生在进行项目实践的同时,根据需要学习软件测试相关理论知识,这样有助于提高学生的学习主动性,有助于理论知识的牢固掌握,有助于提高学生的实践技术能力,改善该课程的教学效果。
二、项目驱动法
项目驱动法是目前中国教育领域中一种比较新的教育教学方法。
所谓项目驱动法,是师生通过共同实施一个完整的项目工作而进行的教学活动,它既是一种课程模式,又是一种教学方法。[1]这里的项目根据课程教学内容的不同所包含的涵义也不同。在“软件测试理论”课程教学中,项目即指一个已经开发完成的软件测试工作。通常,项目教学都是实践导向的和任务驱动式的教学。
在项目驱动模式的教学活动中,教师根据学生现有的知识水平和项目经验选择一个合适的项目,以项目实施为主线展开教学活动,把课程相关的知识点的讲解融入项目操作的每个步骤中。在项目实施的过程中,以学生为中心,教师主要做组织和指导工作,学生在整个项目的实施过程中处于探索知识的情景中,充分发挥主动性、积极性和创新精神,综合运用所学的知识和技能解决实际问题,最终达到有效地将所学知识系统化深入化的目的。
这种模式从根本上将传统课堂中老师满堂灌转变为“学生为主体,教师为主导”的教学模式。同时,学生通过一个具体项目的实践,感受到了真实项目管理的思想和团队协作的必要性,提高了学生的创新能力和项目实践能力。拥有真实项目的实践经验使得学生在择业时拥有很大竞争优势。
将项目驱动法应用于“软件测试理论”课程教学中,在课程理论教学中加入一个完整的项目测试实践环节,通过项目实践能够很好地激发学生的学习主动性,使学生经历了一个“先做,遇到问题,再学,解决问题,再做,获得经验”的学习过程,最终完成一个完整的软件测试实践,同时也学到了“软件测试理论”课程应该掌握的理论知识。这样,既解决了软件测试理论课程理论性太强的问题,又解决了测试方法和技术案例实际应用价值不足的问题;而且丰富了学生的实践经验,提高了软件测试理论课程的教学效果。
三、“软件测试理论”课程教学目标和教学内容
1.教学目标
通过本门课程的学习和实践,理解软件测试理论与原则;掌握主流测试技术和方法,熟悉测试用例的编制、熟悉软件测试的基本流程,熟悉软件测试过程中各类技术文档的编制规范,并能灵活运用测试技术解决实际问题。
对于一个具体项目软件,每一个学生都能够顺利完成如下手工测试流程:根据软件需求规格说明书撰写测试计划,设计测试用例、进行测试环境配置和测试数据准备工作、执行各种测试,撰写缺陷报告、跟踪并修复缺陷、进行测试评测,最后提交测试总结报告,达到软件企业对测试专业人才的要求。
2.教学内容
“软件测试理论”课程的教学内容主要包括软件测试基本理论、软件测试基本技术、软件测试过程和软件测试工具。[2]
软件测试基本理论包括软件测试、软件缺陷和测试用例的基本概念,测试的目的、测试模型、测试分类和测试流程。
软件测试基本技术包括白盒测试和黑盒测试;其中白盒测试包括静态测试和动态测试,动态测试又包括程序插桩、逻辑覆盖、基本路径测试等;黑盒测试包括等价类划分、边界值分析、因果图法、判定表法、场景法等。这些基本技术都是在进行测试用例设计时使用的。
软件测试过程是指执行测试的过程,通常分为四个阶段:单元测试、集成测试、系统测试和验收测试。
软件测试工具有多种:功能测试工具、性能测试工具和测试管理工具等。
四、项目驱动法的应用方案
1.项目的设计
实施项目驱动法,首先需要设计项目。项目的设计与选取直接影响到该教学模式的教学效果及学生的学习兴趣。“软件测试理论”课程项目的选取与其他课程又有所不同,学生要进行的操作是对现有的或者已经开发完成的软件的测试工作,因此在设计项目时应遵循以下几条原则:
第一,项目是现有的软件或已经开发完成的软件,软件中有部分明显错误,有部分隐藏错误;明显错误有助于提高学生的测试积极性,隐藏错误有助于启发学生进行更深入的测试。
第二,项目具有典型性,代表大部分软件的共性。通过该项目的测试,学生可以掌握大多数软件的测试流程和测试方法。
第三,项目中有多种情景元素,符合使用多种测试技术和方法,有助于学生在进行项目测试的同时,学习使用多种测试技术设计测试用例的方法。
第四,项目大小和难易适中。每个项目组的人数控制在3~5个人,设计的项目能使学生通过努力在一定的时间内完成。
根据以上原则,本课程目前选择的项目是《企业薪酬管理系统》。
2.项目驱动法的实施
本课程通过让学生进行企业薪酬管理系统完整的测试流程实践的同时,讲解测试需求编写、测试计划编写、测试用例设计、测试环境配置、测试执行、缺陷跟踪和管理、测试报告撰写等内容。课程授课方式主要是分阶段讲解测试过程和测试要求,每一个阶段开始,老师先讲原理,选择部分内容做例子进行讲解,然后学生比照例子跟着做;阶段内容完成时,学生提交完成的文档,老师选择典型的问题进行讲评,然后进行下一个阶段的内容,如此类推直至测试结束。
企业薪酬管理系统测试流程设计如图1所示。
本课程课时为60学时,根据图1系统测试流程图安排,基于项目驱动法的“软件测试理论”课程安排如表1所示。
在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。
测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。
五、结束语
本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。
参考文献:
篇2
关键词:软件测试;测试工具;测试管理;企业需求
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)32-7664-02
Abstract: In order to reverse the misunderstanding in College of Software Testing Talents Training, through explains the intension of software testing,proposes the teaching was in the software testing course necessary and feasible, as long as the change of thoughts, simulation test case of enterprises in the process of teaching, students' comprehensive quality training, can cultivatecomprehensive talent of software testing by enterprise love.
Key words: Software testing; test tool; test management; enterprise demand
自上世纪80年代,伴随着软件行业的发展需要,软件测试的基础理论和实用技术开始形成,经过三十多年的发展,软件测试在软件开发行业中的角色越来越重要,我们目前评价软件测试,它即需要工具和技术的支持,更需要有科学的管理体制,它既要保证软件能够健壮运行,又要保证软件的功能完全符合客户的需求,一个好的测试队伍,是软件开发必不可少的依靠,尤其是复杂的软件项目,开发和测试要亲如手足,才能保证项目的顺利进行。
目前高校的软件相关专业的毕业生,大约有1/5的人在5年之内从事过或最终从事软件测试相关的职业,这是一个相当大的比重,同时也反应出社会上对软件测试职业的缺口很大,众所周知,高等教育往往落后于企业的实际发展,这种“厚基础,宽口径”的办学宗旨已经盛行了很多年,当然,在许多专业领域,这种以不变应万变的培养体系是最明智的选择,但在计算机软件教学领域,因为这个学科的发展速度几乎超乎人类的想象,因此我们必须让学生在校园里感受到计算机企业中对计算机技术的需求方向,这样才不至于在学生走出校园时无所适从。软件测试职业的职位待遇稳步提升,而且其职业寿命要远远长于软件开发,从学生的职业规划角度来看,在高校进行软件测试中高级人才的培养是一条可行之路。
1 高校开设软件测试课程的必要性
事实上,在高校计算机教学体系中开设软件测试课程,并不单单是为了迎合企业的需求,软件测试是软件工程课程的延伸,是软件开发课程的补充,是软件管理课程的实践。
软件测试课程的基础学科涉及数学、计算机导论、软件工程、计算机组成、管理学和信息技术等,如果没有这些学科的支撑,软件测试无法深入学习。
软件测试课程的开设,对高校计算机软件专业的学生来讲,是有着非常大的意义的,目前很多大型的软件企业并不担心开发人员的招聘,而对熟练掌握软件测试技术和管理方法的高级测试人员求贤若渴,这一方向的职业缺口确实非常之大,究其原因就是目前几乎所有高校的软件相关专业都开设了软件开发从技术到管理的全套课程,而软件测试的相关课程几乎为零,这样的学生走出去,很难迅速掌握测试的理念,也无力制定宏观测试计划,不得不从测试行业最低端的测试员开始做起,这对于高校毕业生来讲这是一种人才的浪费,在高校的计算机课程体系加入软件测试内容已经迫在眉睫。
在任何一个行业,从业人员对行业的成熟度区分,是企业招聘首先要考虑的问题,我们经常在招聘信息中看到“有工作经验”这样的条款,在软件测试行业也是如此,一般给出5种分级:1级我们称之为用户级测试人员,这一级别的测试人员直接扮演客户的角色来使用软件,看是否能发现问题;2级是软件测试操作员,这类人群受过一定程度软件测试的专门训练,可以执行上级下达的具体测试任务;3级是软件测试技术员,这一职位人群有很多软件测试的经验,能够非常熟练的使用某些软件测试专门技术,能够设计测试用例;4级是软件测试系统工程师,他们具有相当广泛的计算机相关专业知识,熟悉软件开发,熟练掌握所有软件测试技术,并具有项目管理经验;5级是软件测试总工程师,总工程师负责管理整个软件测试项目,具有掌控全局的能力和技术。
高校软件测试人才的培养,其目标要向3级人才靠近,并且这些人才有向4级或5级成长的持续发展能力。
2 软件测试教学中需要重视的两个问题
2.1扭转重开发,轻测试的偏见思想
很多人轻视软件测试,认为软件测试无需具备很高的技能,是没有前途的工作,缺乏创造性,很多高校也存在重开发,轻测试的思想,学生在这种观点的熏陶下,也对测试工作存在偏见,其中对软件测试工作有三个认识误区尤为突出:首先,软件测试是软件开发完成之后才进行的,只是软件编码的最后一个阶段,其地位可有可无。其次,软件测试不需要具备很高的专业技能,工作乏味枯燥,不具创造性,最后,软件投入使用后一旦出现BUG,测试人员要负主要责任。
事实上,首先,一个好的软件测试团队,在软件需求分析阶段就已经开始测试了,开发人员理解的客户需求是否正确,要由测试人员监控和保证,测试工作和开发工作是并行的,尤其在软件项目开始的时候,监控和防范一个微小的问题或隐患,是为了防止软件成型后出现无法挽回的缺陷。其次,软件测试是一项综合技能能强的工作,运用测试工具的能力,与人沟通的能力,有效管理的能力,书写文案的能力等等,做好软件测试工作绝对不是想象的那么简单,而且一旦具备了综合测试的素质,将是受用终身的资本。最后,软件测试规范实施后,软件仍然可能出现BUG,这是开发和测试人员应该共同面对的现实问题,测试人员只能保证BUG越来越少,越来越不影响系统的健壮运行。
2.2强调管理与技术并重
软件测试的规范实施需要测试技术和管理方法两方面的支撑,如果不具备专业的测试技术,只能做一些简单的功能测试,如果不具备宏观管理计划的能力,只能处于被指挥状态进行片面测试的实施,现在软件测试真正缺少的是技术和管理兼备的人才,高校的学生素质非常适合软件测试高端人才的培养。高校的培养中,要让学生深刻理解,我们培养的学生不是只能低头做测试任务,而是要能指挥测试工作,这绝对不是件简单的工作,需要全面的技能和完善的人格,只有这样的人才,才能带领出出色的测试队伍。
教学中,增加实训环节,给学生安排丰富的实例和习题,最好采用实际软件项目的测试案例,让学生在学校感受到企业中一样的工作环境,并安排和企业中一样的测试岗位,让学生体会沟通和管理的必要,在独立处理问题的过程中激发学生的学习兴趣,促进理论和实践教学的结合,把对学生的应用能力的培养融汇于教学中。
3 软件测试专业课程设计的目标和原则
软件测试专业要全方位的培养和提高学生的基础理论、实践能力、设计能力、实践训练等综合素质。重视管理、人文、经济等知识的学习。
3.1软件测试专业课程设计的目标
高校软件测试培养目标要以市场为导向,培养具有一定的设计测试计划方案的、具有管理能力,能平衡整个测试项目各方面因素的软件人才,这些人才要具备软件开发的整体认识,能制定和执行测试,能利用测试工具完成一定测试任务。
本专业课程的重点包括:软件缺陷生命周期管理;软件测试基本概念的内涵;主流测试工具的应用;进行全面的系统测试的方法;注课程以实训为主,重动手能力的培养等。 具体课程要涵盖:熟练掌握至少一种数据库应用技术及一门软件开发语言;了解软件开发过程中软件测试的重要性;掌握主流的自动化测试工具;科学管理测试队伍。
3.2软件测试专业课程设计的原则
课程的设计要体现与时俱进的精神,以企业的实际项目为依托,主要原则包括:
1)开展项目教学,项目教学具有针对性、研究性、启发性和实践性等。项目的选择要知识涵盖全面,要能够激起学生的学习兴趣。
2)制定专业课程计划、课程大纲和教学方案等,课程计划提倡电子化、网络化和课堂教学并用,建设校企合作的专兼结合的教学团队,开设以项目为载体的教育大纲,用以指导课程教学工作的开展。
3)建立测试工程内容的课程结构模式,把真正的测试项目开展到课堂上来,或者让学生在学习期间进入企业进行岗前培训,充分安排工程实践,引进软件测试的工程师资格认证,同时逐步建立科学的工程教育检验和质量评估体系。
理论与实践并重,课程需要涵盖单元测试、集成测试、性能测试、功能测试与系统测试。注重设计和管理的执行过程。为学生创造可自由而主动的学习氛围。以学生为出发点,在软件测试中融会贯通大学里学习的软件相关课程,在项目驱使下培养主动学习的能力。采用分组讨论学习方式,结合实际项目,把学生组织为若干小组,在教师指导下完成工作。不断提升学校教师的专能,提供系统学习和阶段性培训机制。
4 总结
软件测试课程在高校的教学中,没有现成的经验和模式,需要我们根据行业的发展随时调整,以社会需求为导向,以培养行业
中高级人才为目标,以项目实训教学为依托,边进行边思考,逐步发展,逐步稳定,所以我们要以发展的眼光,灵活的策略来微调教学过程的细节,测试无处不在,高校进行软件测试的教学改革也是一种测试,只要我们采用严谨的工程控制策略,科学管理,总结规律,必然能取得高校进行软件测试课程探索的胜利。
参考文献:
[1] Ron Patton.软件测试[M].北京:机械工业出版社,2002.
[2] Myers G J.软件测试的艺术(中文版)[M].王峰,陈杰,译.北京:机械工业出版社,2006.
篇3
关键词:软件测试,质量管理,软件工程
中图分类号:O213.1 文献标识码:A 文章编号:
1 软件测试类别及作用简介
软件测试按作用分类,主要可以分为功能测试,性能测试,安全测试等,按测试阶段划分则可分为单元测试,集成测试,系统测试,验收测试,回归测试等。按是否涉及源代码测试又可分为黑盒测试,白盒测试。
下面按作用介绍几类常见的测试:
功能测试:主要按照系统功能说明书软件设计书等资料,验证软件每个功能的正确性,易用性。主要目的是保证软件功能可用,用户使用过程中有一个良好的使用体验。
性能测试:是一种非功能性测试,主要测试软件产品运行的各项性能指标是否达标。如系统反应速度,系统负载能力,系统使用过程中对计算机各类资源的占用情况等,主要是测试系统的健壮程度。最常见的是测试软件功能的反应速度。同样对保障用户使用体验有重要作用。通常使用自动化工具得到测试系统的性能指标,笔者使用的工具为Loadrunner(LR)。
安全性测试:这是经常被忽视的测试方式。很多用户软件使用安全意识淡薄,在用户未提出安全测试的情况下,有些软件开发公司为节约成本也会刻意回避这个问题。软件安全与否并不直接影响用户的使用体验。软件安全测试主要从数据访问,权限管理,防攻击能力,破坏性测试等几个方面测试软件系统的安全。政府部门所使用的软件系统通常,这样的项目进行安全测试很有必要。
2 软件测试与质量管理关系
任何项目实施都需要有质量管理,否则工程产品将无法使用。软件工程更是如此,在软件工程中软件测试是软件质量管理的重要手段也是质量管理流程的重要一环。其实不管软件测试怎样分类,具体的流程怎样操作,软件测试的目的就是为了保障软件的质量。从公司组织层面项目质量管理从制度上对测试流程的完整性加以保障,从项目实施层面,项目内部的质量管理应为软件产品即将的测试做出准备提供便利。
在多种软件工程管理模型中,都将软件测试做为单独的过程纳入到管理体中来,比如CMMI软件成熟度模型,是将软件测试放在产品验证过程域中的,同产评审一起,强调软件测试对产品验证作用。
3 测试组织的建立
人们经常有开发做的较弱的人做测试的印象。这是错误的,主要是由很多软件公司不愿意调拨开发水平高的人在测试上造成的。其实测试人员作为公司于客户之间软件质量最后的守门员,不仅要保证产品功能正确,还要从用户角度对软件产品提出使用建议,根据经验预测用户可能的使用方式以及评价,同时还需同项目经理,开发人员沟通。因此不仅要具备测试理论知识,还需要具备项目经验,熟悉产品业务,了解项目各环节工作,同时具备编码,操作系统,数据库,计算机硬件等方面的有关知识,恰是要求知识构成最全面的岗位。
通常建议测试组应包括至少一名经验丰富的人员。测试组的人数根据公司开发人员总数,公司产品的成熟度确定。如果公司产品已经较为成熟,有固定框架的话,测试人员数量可维持在开发人员总数的十分之一,否则应大于这个数量。
测试组可由测试组长,或者叫测试经理带领几名测试人员组成。测试经理负责测试计划,测试过程监控,测试产品验证等工作。测试人员按要求开展测试工作。
4 测试流程简介
(1)测试工作启动阶段,项目经理提交需求规格说明书和项目计划。测试经理根据提交文档编写测试计划。需求内应包括用户方确认的系统使用环境。
(2)工程管理部对测试计划进行评审。评审通过进入测试流程。不通过则将文档返回项目经理根据项目情况重新计划,直至通过。
(3)系统经过项目经理检查,满足送测要求时,项目经理填写测试申请单,提交概要设计说明书、详细设计说明书和系统demo,澄清测试需求,明确测试环境。其中demo非必须提交。
(4)项目经理指派人员同测试组建立专门的信息交流接口,协调测试过程中的有关事宜。
(5)测试人员执行测试。
(6)记录测试过程中出现的系统缺陷和问题。填写问题跟踪记录表,并交由项目经理确认。
(7)工程管理部根据测试结果决定系统是否系统具备条件。如果不具备条件,则将督促开发人员完善系统并重新执行测试流程。
(8)测试经理编写测试报告并总结。测试活动结束。
流程如图:
以上测试流程主要按瀑布开发模型内的测试流程描述,如果选用别的开发方法,则可以根据情况将流程简化后加入开发中的每次迭代内。
5 结束语
测试工作是保障软件产品质量的重要手段,本文大多内容来自笔者工作经验的总结,仅供参考,有失偏驳之处,还请多加指正。
参考资料
[1] 佩腾 软件测试 机械工业出版社
篇4
关键词:软件测试;案例教学;教学内容
中图分类号:TP311 文献标识码:A文章编号:1009-3044(2010)09-2275-02
Teaching Methods of Software Testing Technology
GAO Zhi-sheng
(School of Mathematic and Computer, Xihua University, Chengdu 610039, China)
Abstract: Software testing is a course that teaches the software testing methods and means. Case teaching methods that runs through the whole software testing process with a single case is proposed. The corresponding teaching contents and experiment requirements are also introduced. Through the teaching methods, the studying interesting, the initiative and the capability of finishing the practical software testing projects are really improved.
Key words: software testing; case teaching; teaching contents
软件开发过程中的质量问题是关系到软件和软件组织生存的重大问题,得到了越来越多的重视。目前在高校的软件工程专业普遍开设有软件测试相关课程。但是在具体教学实践中,教师普遍感觉到有许多不如意的地方[1],具体表现在教学内容与具体应用脱节,学生对软件测试认识有误区,学生学习积极性不强、认为软件测试是文字性课程,软件测试过程如何展开,如何选择测试工具,如何在教学中贯彻软件测试管理思想等。
近年来关于怎样进行软件测试教学,引起了相关专家的重视和讨论[1-4]。本文在总结前人的经验基础上,结合作者近几年在软件测试技术课程教学中的实践提出了以一个具体项目案例贯穿整个教学过程,理论与实践紧密结合的教学方法。
1 教学的目的和教学方法
软件测试技术课程是本校软件工程专业的一门专业必修课程,通过软件知识体系的学习,使学生了解软件测试的发展现状,认识软件测试的重要性,掌握软件测试的方法和技术,熟悉软件测试过程管理,从而具有独立承担软件测试项目的实施能力,具有测试计划、管理、实现和软件质量保障的能力[3]。
针对以上教学目的,我们在软件测试技术教学过程中引入一个具体测试项目案例贯穿整个教学过程的教学方法。第一课时,我们组织学生自由进行分组,每组5个人左右,每组确定一个名称。要求每个小组在课程的前几周完成同一个模拟题目“大学图书馆管理系统”的软件开发。系统完成后,然后各个小组交叉进行测试对方开发的软件系统。随着课程的进度,主要要求学生完成软件系统的单元测试,集成测试,功能测试和系统测试。单一的案例贯穿整个软件项目测试过程的案例教学方法的优点是:
1)软件测试的前期课程有“Java EE编程技术”,同时我们选择图书馆管理系统作为开发对象,学生从技术上和业务需求上都具备快速完成该系统的能力。
2)相同的开发对象,互相测试对方开发的系统,有利于形成竞争,有利于调动学生的学习积极性。同时也有利于教师对学生完成的结果进行点评和组织课堂讨论。
3)整个软件测试课程,学生能够完成对一个具体项目的全部测试过程,有利于促进学生系统地掌握软件测试的技术方法,组织和过程。
2 教学过程
我们的教学过程主要包括以下5个阶段,最初的几周主要讲解软件测试原理,同时这个阶段学生主要完成指定项目,然后是4个主要的软件测试技术:单元测试,集成测试,功能测试和性能测试。软件测试课程也会讲解其他如回归,压力等其它测试技术,下面是我们课程重点讲授的内容和要求。
2.1 软件测试原理
本阶段主要讲授软件测试技术的基本概念,使学生掌握基本的软件测试原理。包括软件测试的重要性,软件评测师的职业规划,软件质量的概念等基本概念,重点讲授的内容是白盒测试及用例的设计和黑盒测试及用例的设计两个章节。白盒测试主要包括逻辑覆盖和基本路径覆盖两种用例设计方法,逻辑覆盖又分为语句、判定、条件、判定/条件、组合、路径覆盖等。黑盒测试的重点内容是等价类划分,边界值分析,因果图,决策表和场景法。
本阶段对学生的实践要求是开发“大学图书馆管理系统”,由上课老师为学生统一提供系统的需求规格说明书,该系统的主要功能如图1所示。要求学生结合对本校图书借阅系统的使用和需求规格说明书,采用Java EE技术进行开发,系统采用典型的4层结构进行设计,如图2所示,即运行在客户端计算机上的客户层组件、运行在Java EE服务器上的Web层组件、业务层组件和运行在EIS服务器上的企业信息系统(EIS)层软件[4]。系统开发采用JSF+EJB3.0的架构,Glassfish为应用服务器,MySql提供数据库服务。
2.2 单元测试
单元测试是对软件最小组成单元的测试,是软件开发过程中进行的最基本的测试。单元测试主要按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。单元测试主要考虑各个模块接口的输入和输出,模块内部的数据结构,模块的边界条件,模块的基本路径和模块的出错处理。单元测试阶段还讲授代码规范性检查,代码覆盖率的检查,代码复杂度的计算和内存泄漏的检查等。
完成单元测试的基本原理的学习后,要求学生交叉完成图书馆管理系统的单元测试,主要抽取系统中的核心函数进行测试。完成测试后要求每个小组提供单元测试计划,单元测试用例和单元测试报告3个报告文档。得到所有报告后,组织一次课堂讨论,展示优秀小组的成果,分析原因总结经验。单元测试工具要求采用JUnit,代码规范和代码质量分析采用Logitscope, Pruify用于分析代码的内存问题。
2.3 集成测试
软件各个单元通过单元测试之后,需要检查各个单元之间的相互接口是否正确,就是集成测试。软件集成测试主要考虑的问题是模块间的数据传递是否正确,一个模块的功能是否会对另一个模块的功能产生错误的影响,全局数据结构是否有问题,块组合起来的功能是否能满足要求,集成后累积误差是否被放大等[5]。关于软件集成测试的原则、策略和用例设计等相关原理可参考其它相关文献。
教授完集成测试相关原理后,我们要求每个小组负责人组织完成系统的集成测试。集成测试以一个EJB、Servlet或者JSF为基本单元,工具选择Cactus和HttpUnit。完成集成测试后要求每个小组提交集成测试计划、集成测试设计文档和集成测试分析报告。收齐所有小组成果,组织学生进行讨论。
2.4 功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。主要考虑系统的各个功能,一般从软件产品的界面、架构出发,按照需求编写测试用例,测试产品时是否达到用户使用的需求。本阶段主要让学生采用WinRunner完成系统的功能测试,进行功能测试之前首先完成测试计划和测试用例的设计。然后完成WinRunner的6个步骤:识别程序的GUI,建立测试脚本,完善测试脚本,在新版应用程序执行测试脚本,分析测试结果和回报缺陷。
2.5 性能测试
典型的性能测试主要是从系统的响应时间、吞吐量、系统资源利用率、并发用户数、HTTP事务处理数/秒、会话数/秒和连接建立时间等方面衡量系统的性能。性能测试主要有压力测试,容量测试和强度测试等。针对图书馆管理系统的特点,我们要求学生理解性能测试的重要性和困难性,掌握性能测试的基本概念和技术。在此技术上,我们要求学生使用LoadRunner完成系统的压力测试。主要步骤是测试需求分析,制定测试策略和方案(重点是设计测试场景),使用VuGen创建脚本,在Controller中创建场景,运行场景,分析结果。完成后提交测试策略和方案报告,脚本和图书馆管理系统压力测试报告。
3 结论
一个合格的软件评测师要求具有编程能力、开发能力、沟通能力、管理能力、逆向思维能力等多种能力。怎样在大学软件测试技术教学中培养既有理论又能实践的软件测试从业人员是本文研究的动机。我们提出的基于同一案例贯穿整个软件测试技术教学过程的教学方法,通过学生互测对方开发的软件系统,相互对比,相互促进同时组织课堂讨论,有效营造了主动学习的气氛,增强了学生的学习积极性,培养了学生主动思考问题的能力。该方法是一个值得借鉴的软件测试技术教学方法。
参考文献:
[1] 李绘卓,唐峻,范勇.基于案例的软件测试实验教学[J].电脑知识与技术,2009,27(5):7820-7821.
[2] 屠红蕾.软件测试教学的点滴体会[J].计算机教育,2008(10):124-125.
[3] 李亚.“软件测试”教学探索与实践[J].计算机教育,2008(6):14-15.
篇5
关键词 软件测试 教学改革 能力培养 教学过程 课程置换
中图分类号:G424 文献标识码:A
Exploring about the Reform of Software Testing Course
in the Application-oriented Institutions
PANG Haibo, LI Zhanbo
(Software Technology School of Zhengzhou University, Zhengzhou, He'nan 450002)
Abstract This paper analyzes the software testing industry, and a number of issues that exist in teaching, summed up the software companies for software testing requirements and industry demand conditions talent for talent, summed up the software testing professionals should have the basic knowledge and quality requirements, focusing on the improve student software testing theory, technical capacity, a new model of software testing from the curriculum reform, teaching, engineering practice, school-enterprise cooperation and replacement programs, etc., to stimulate students' enthusiasm and motivation to learn and improve training quality of software testers.
Key words software testing; teaching reform; ability training; teaching process; course change
近年来,中国软件产业保持了飞速发展的趋势,软件产品的质量备受所有用户特别是IT行业用户的关注。软件测试作为软件开发过程中重要的一环,对保证软件质量具有至关重要的意义,同时也是控制软件质量的重要手段之一。目前,国内许多软件开发企业对软件开发仍然存在“重开发、轻测试”的思想,因此,尽快建立完善软件测试人才的系统培养环境、提高软件测试人才的培养质量,为软件产业的健康发展提供智力支持已成为软件测试专业课程和教学改革的主要目标之一。
本文首先分析了我国软件测试行业和教学存在的若干问题以及IT企业对软件测试人才的素质要求,接着讨论了软件测试专业课程的设置和定位问题,结合笔者的工作实际以及校企联合开展大学生软件测试技能竞赛的效果,对软件测试教学过程提出了一些建议。
1 软件测试行业和教学现状
软件生产方式已经越来越趋向于大规模集成化生产,这一生产方式确立了软件产品的质量控制与质量管理在软件生产中至关重要的地位。调查显示,我国软件开发企业普遍缺少测试人员,而专职软件测试人员与开发人员的比率更是偏低,远远达不到国外1:1甚至2:1的比例,整个软件行业从业人员比例结构很不合理。主要由于企业认知和软件测试人员的培养过程存在以下一些问题和不足而导致:
1.1 重开发,轻测试
很多企业和学生认为,软件开发比软件测试重要,软件测试相关工作职位待遇不如软件开发。他们认为软件测试从业人员不需要深入的专业知识,只要会写程序就能够胜任软件测试工作,从事软件测试类的工作没有前途,所以大部分倾向于做开发人员,而不喜欢做测试。同样,绝大多数学生认为软件测试比软件开发容易,没有较高的技术含量,只是能够找出软件中的错误就可以了。甚至有相当一部分软件测试人员认为软件的质量的好坏是开发人员的事情,与软件测试人员没有关系。
1.2 底子薄、基础差
大部分开设计算机课程的学校,学生都是到大学二年级后半学期才开始接触软件测试课程,缺少对软件测试课程的系统学习,甚至很多学生只学习软件工程课程,根本接触不到软件测试课程。
对离散数学、程序设计、软件工程等软件测试基础课程的学习效果差。例如,软件测试中黑盒测试用例的设计方法大都以数学知识为依据的,决策表驱动分析法与因果图法对应命题逻辑知识。尽管学生之前已经学习这些课程了,但是由于受行业认知的限制,学生经常忽略一些重要的知识,导致在后续测试课程学习中感到力不从心,最终还是不能够稳固掌握软件测试的相关知识和技能。
软件测试贯穿软件开发的全部过程,软件测试的大部分阶段都要求测试人员能够编写代码并且进行调试,比如,在单元测试阶段和进行白盒测试的时候都需要检查和测试代码,这就对软件测试学院提出了更高的要求,要求学生不但要了解软件测试技术,还要能够熟练对代码进行分析和调试,甚至更多的时候要求测试人员能够自己编写代码进行专项测试。但是,由于先导课程的课程设计、实践和考查的脱节,导致学生写代码能力较弱,不能灵活运用软件测试中的技术和方法。
1.3 重技术、轻理论
现代社会快节奏的影响和急功近利心情的驱使,学生通常希望学习一些能够马上使用的技术,而不愿意去学习复杂和理论性较强的工程管理内容。软件测试计划、软件测试管理等工程管理课程抽象和教条,并且理论性较强,教师如果单纯通过课堂教学,学生很难真正掌握这些内容,他们不能将所学知识马上转换为应用,或者不能立刻看到成效,会慢慢地失去对这些课程的兴趣和热情。同时,考虑到软件测试需要与具体的开发模式和行业背景相结合,在学习阶段容易受授课模式和知识结构的限制,学生觉得学无所用,将来也很难结合具体场合恰当使用测试手段。
1.4 重个人,轻团队
软件的大规模集成化生产意味着个人独立劳动已经不能胜任大型软件的开发,并且对团体软件开发中的协作和沟通提出了更高的要求。软件测试作为软件开发过程中一个不可或缺的环节,也需要测试团队分工合作。目前教学更多地采用教师讲、学生听这一学习模式,没有实现双向互动学习,老师总是面面俱到地传授测试专业知识和技术,希望学生能够学得更全面。然而,当代学生普遍以自我为中心,缺少基本的沟通和团队协作能力,单独的个体又不能独当一面,最终导致软件测试工作不能顺利进行。
2 软件测试人员素质要求及课程设置定位
软件测试人员的工作职责是理解软件产品的功能和性能需求,在软件开发中担任“质量管理”角色,这种职责对软件测试人员在技术、管理能力和个人综合素质等方面提出了更高的要求。主要包括以下方面:(1)全面技术能力。测试人员必须站在工程技术的角度对需要开发的产品进行理解,以工程技术产品应用为目的构造合适的测试用例进行测试。这就要求测试人员必须掌握软件生命周期、开发流程、软件质量管理知识,熟悉离散数学、工程经济等基础知识,熟悉各种系统平台、数据库、常用软件和网络等软硬件,掌握主流测试工具与测试管理工具,还有具备编程能力和相关行业的法规和外语等知识。(2)责任心。做测试工作,需要思维严密,具有怀疑与破坏的精神,测试人员要打破常规思路进行软件测试,能够设计一些非常规测试用例对软件进行破坏性测试。(3)细心与耐心。软件测试工作中发现缺陷的环节除了依仗测试人员的专业技术知识之外,还与测试人员的细心及耐心程度有很大关系。软件测试工作相比较软件开发工作而言,更加繁琐和枯燥,如果没有足够的细心和耐心,就会留下很多潜伏的缺陷。(4)良好的沟通与组织协调能力。软件测试不仅仅是测试人员和测试团队内部的事情,软件测试人员要能够与项目经理、开发人员、客户、市场人员等不同角色人员进行良好沟通,保持密切配合。这就要求测试人员具备良好的沟通技巧,当发现问题的时候,能够积极有效组织协调开发人员、客户等各方面来解决问题,并且能够精准表达自己的观点。
软件测试人员的素质培养,需要从构建合理的软件课程着手。课程体系构建根据测试内涵来分析相应的知识、技能、素质要求,以软件测试这一职业所需的知识和技能为先导,强调当前及未来就业岗位所需基础知识和基本技能的掌握运用,体现知识、能力、素质培养的统一。精选教学内容进行整合与优化,使课程模块化,明确每个模块化课程对知识和技能的培养要求,构建以掌握技术理论和技术应用为培养目的的课程体系,实现知识和技能同步培养和提高。
3 软件测试教学过程的改进
教学过程是对软件测试人员技能和素质培养的关键环节,教学方法起着至关重要的作用。教师在教学过程中应注意几方面:
3.1 正确认识开发和测试的关系,激发学生学习动力
针对学生认为软件测试不如软件开发重要,或者认为软件测试类岗位不如软件开发类岗位有前途等片面认识,教师应注意正确引导。通常在第一节课上教师应该结合功能测试、性能测试等具体案例介绍软件测试的重要性,让学生了解该课程的重要性、必要性和当前的行业动态。另外,要让学生认识到测试工作的丰富层次和内涵,了解测试人员应该具备的知识和技能更加多样,做测试工作比做开发更有挑战性。最后,要给学生介绍行业对测试人员的需求,让学生更清楚了解软件测试工作的待遇和发展前景,树立从事软件测试工作的决心和信心,激发他们学习软件测试的主观能动性。
3.2 案例法教学贯穿全过程
针对软件测试课程中测试计划、管理等理论性较强的工程化管理知识部分,需要结合实际案例进行教学,因为单纯课堂教条式的教学很难让学生深刻掌握这些知识的精髓并应用于实际工作,更甚至会让学生失去学习软件测试的兴趣。因此,应在教学过程中引领学生由易入难自己动手实践,激发学生的学习主动性与热情。通过课堂讨论或分组讨论的方式活跃课堂气氛,在讨论的过程中,让学生担任不同角色,模拟实际管理过程,切身感受管理知识的应用价值,同时,不同角色的轮换担任还可以锻炼学生的沟通能力,树立团队意识。教师要适时进行引导与总结,指导学生按照工程化的文档模板规范将思考分析的结果进行记录,在锻炼学生分析、解决问题能力的同时养成良好的学习工作习惯。
对于技术性较强的知识,也要注意实际案例的引入。加大实际案例实验学时的的分配,引入规模适中的工程实例,让学生利用所学的测试技术对实例设计测试计划,测试用例,执行测试,分析和讨论测试结果,发现测试存在的问题,通过这样的实践教学活动,更容易让学生产生成就感,激发学生兴趣。
3.3 注重工程实践课程和参与竞赛
根据软件测试行业对人才素质需求定位测试专业方向人才培养目标。由于软件测试课程与软件开发课程的不同,软件测试实验教学应该设立实验、实训和实习等多层次的工程实践课程,通过让学生参与实际工程项目,提高学生专业技术应用、分析问题和解决问题的能力。同样,教师需要设计和引入规模适中的工程实践项目,要求学生现学现卖,完成制定测试计划、设计测试用例、执行测试和评估测试的全过程。通过项目的锻炼,学生分析问题和解决问题的能力会逐渐得到提高。
鼓励学生多参加软件测试技能竞赛等实战性的实践活动,提高学生的观察、思考、交流、实践和协作能力。本团队组织学生参加河南省计算机学会主办的首届大学生软件测试技能大赛,成绩斐然:三个代表队分别获得了特等奖、一等奖和二等奖。事实证明,竞赛类的实践活动,能够极大激发学生自己动手进行软件测试的兴趣,同时在动手操作的过程中培养了学生的创新能力,促进了学生思维的纵深发展;学生对软件测试课程的学习热情和积极性空前高涨,学习的自觉性极大提高。
3.4 开展校企合作和课程置换
校企合作的目的就是通过学校与软件企业进行多方面的合作,建立企业实习基地,让学生能够亲身参与企业软件的开发和测试过程,校企合作是软件测试人才培养最有效的办法。在计算机行业,校企合作有着至关重要的作用,学生通过参与企业实际产品的开发和测试,可以更好更快地融入到软件开发过程中。学生不但能够将所学的综合知识进行实际应用,还能对软件开发有一个更加深刻的认识。与企业交流不只是学生的事情,教师参与其中也是十分必要,教师到企业实习,参与软件项目的测试,紧跟技术发展步伐,才能把握授课方向,才能以自身参与的项目为实例进行授课。
课程置换是将企业成熟的软件测试培训课程和教学体系替换掉学校的部分软件测试课程,将企业以应用为目的的教学方式、科学、系统和实用的课程内容引入学校教学。“他山之石,可以攻玉”,课程置换就是要结合学校教学和企业培训的优势方法和资源,弥补传统学校教学方式存在的不足,紧紧结合市场需求,提高学生各个方面的能力。 同时,课程置换将学历教育和职业教育相结合,学生在获得学历证书的同时,还能获得相关企业行业证书和一线实践经验,从而为学生毕业后服务于企业奠定良好的基础。
4 结束语
软件测试的重要性得到越来越广泛的认可,创造一种课程内容改革的引导机制,探索一套切实有效的大学生学习和实践相结合的学习模式,转变教师对传统软件测试课程的教育教学观念,推动软件测试教学改革,才是提高软件测试学生的专业技能和创新能力,最终提高学生的核心竞争力的根本途径。
参考文献
[1] 钟素芬,叶明芷.软件测试应用性人才培养模式的探索与实践[J].北京联合大学学报,2007(9):90-91.
[2] 孙金华.软件测试人才培养与课程构建的探索[J].计算机时代,2009(6):68-71.
[3] 柳永坡.软件测试大学教程:软件测试课程专业教材[J].计算机教育,2010(12):158.
篇6
【关键词】软件测试;应用型人才;培养模式;课程群
据前程无忧网数据显示,去年国内软件测试人才缺口高达20万,今年有望突破30万人。目前国内软件测试和开发人员比例大约在1:4-1:5,而国外测试和开发人员比例为1:1,微软测试人员和开发人员的比例已达到2:1。软件测试人才正在成为我国软件行业目前最紧缺的人才之一。随着我国软件产业的迅速发展,软件测试人才的地位正在逐年提升,这种供需矛盾将变得越发突出。
目前,国内软件测试人才的培训[1]主要有三种机构:企业、高等院校和IT培训机构。企业培养的人才大多是通过参与项目自己摸索的软件开发人员,由于缺乏对软件测试全面的认识,在测试思想、技能、思维方式、沟通能力等方面都需要进一步提高。高校培养出来的人才具备一定理论知识,但动手能力较差,进入企业后需要再培养,不能立即到岗。培训机构则能弥补前两种方式的不足,但价格昂贵。
一、软件测试课程教学现状
(一)学生学习枯燥,兴趣低
软件测试是计算机专业课,课程内容理论性和操作性都很强,并且需要学习了解的自动化测试工具种类繁多。目前各个高校在开设这门课程时,大多数还停留在理论教学阶段。教师准备好课件,学生拿着课本,首先给出书上官方的定义和自己的解释,然后结合一些课本上或自己参与的项目,给出实例证明这些理论。学生容易感到内容空洞、枯燥乏味,学习时就缺少主动性,难对这门课程产生兴趣。
(二)软件测试实验开展不充分,学生实践能力弱
软件测试知识点众多,理论内容的授课量占绝大部分[2],实验课时数仅占到四分之一左右。由于实验时间、实践环境有限,日常实验教学都是验证性的小实验。由于没有一个实际的面向企业的项目支撑,很多测试过程难以进行,比如集成测试、性能测试、验收测试等等。通过对从事软件测试方向工作的毕业生就业情况调查发现,软件企业认为软件测试课程理论丰富,但还存在学生实践能力不足、测试工程师职业素质有待进一步提高等诸多问题。
(三)教师缺乏实际软件测试经验
软件测试行业发展迅速,软件测试工具种类多,更新快。软件测试这门课程实践性较强,高校计算机教师大多数软件项目开发测试经验不足[3],对软件公司软件项目研发测试过程没有切身的体会。教师在讲授这门课程时没有实际的软件项目案例可以操作,实践教学显得吃力,很难给学生软件测试方面的经验知识。
面对软件测试人才的社会需求紧迫性和软件测试教学现状,人才培养单位应该扩大软件测试人才培养规模,总结软件测试知识点,改革教学方法,培养学生兴趣,提高教学质量。
二、软件测试工程师职业能力需求
为更好地培养学生的软件测试工程师职业素质[4][5] [6],提高学生的就业率和用人单位的满意度,充分分析软件测试工程师的职业能力要求。
(一)素质要求[4][5]
1、具有团队合作精神。
2、有较强的责任感及进取精神。
3、细心、耐心,具备逆向思维。
4、技术方面的基本素质,熟悉系统的应用,熟悉办公软件的应用,熟悉基本的测试流程;熟悉测试管理工具的应用。
5、具有测试人员的学习能力、领悟能力。
6、对行业具有信心,对测试的信心,相信软件一直存在BUG。
7、良好的英语阅读和写作。
8、良好的语言及文字表达。
9、较好的沟通技巧。
10、怀疑精神具有测试人员必须保持的怀疑态度。
11、捕获用户观点的能力,强烈的质量追求,对细节的关注。
(二)专业能力要求[6]
1、对Windows、Linux、Unix等大型主流操作系统的熟练掌握能力。
2、具备快速进行应用系统部署和测试环境搭建的能力。
3、测试人员必须掌握目前主流的程序设计语言,比如C、C++、JAVA、C#、VB等多种平台下的一种或者多种语言,具备进行简单应用开发的能力。
4、熟练掌握SQL Server、Oracle、DB2等一种或多种数据库系统的使用,熟悉使用SQL语言。
5、对信息安全知识的基本掌握。
6、必须深刻理解和熟练掌握软件测试基础理论与技术。
7、精通各种测试技术,能够手工或利用相关工具进行单元测试。
8、能够进行测试用例设计、测试执行、编写缺陷报告。
9、熟悉软件测试流程和测试过程管理,能够编写测试计划,具备组织测试工作的能力。
10、掌握测试管理相关知识和软件。
11、掌握和熟练使用当前主流的功能、性能自动化测试工具以及测试管理工具,具备编写测试脚本、进行功能和性能测试自动化测试的能力。
(三)知识结构要求
1、软件知识:数据结构、操作系统、面向对象程序设计、数据库原理、C程序设计语言、WEB技术、数据仓库与数据挖掘、软件工程。
2、硬件知识:数字逻辑、微机原理与接口、计算机组成原理、计算机系统结构。
3、网络知识:计算机网络技术、计算机网络安全。
4、人文、社会学基础:原理、道德与法律、中华民族历史、大学语文、大学英语。
5、数学基础:高等数学、线性代数、概率统计。
三、软件测试课程设计理念和思路
根据软件测试工程的职业能力要求,对软件测试课程我们重新把握课程的设计理念和思路。
(一)课程设计理念
1、与企业共建基于工作过程的课程体系
根据专业办学的定位及特色,《软件测试》课程的设计理念是以软件测试员/测试工程师岗位需求为依据,以培养学生使用自动化测试技术进行软件测试的职业能力为主要目标,以测试工作的典型工作任务为导向,坚持以能力为本位的设计原则,制定突出企业应用能力和素养的课程标准,构建基于工作过程的系统化课程体系。课程组通过开展课程标准研讨会和技术培训会等形式,听取企业专家的建议,修订软件测试课程的内容,保证课程内容与企业用人需求同步;在课程功能上注重学生应用能力的培养,构建以掌握软件测试应用能力为特征的理实一体化的教学内容,做到强化技能、提升业务素质,提高学生的就业竞争力和实际工作能力。
2、和相关课程构成课程群,实现企业应用项目开发过程的案例教学环境
立足于培养满足企业应用的软件项目开发需要的应用型人才,本课程以真实的软件实例项目测试任务和过程为依据,以现代教学理念为指导,精心进行教学设计。
在构建课程体系[7]时,由专业建设及教学指导委员会,充分调查分析不断变化的市场,以企业应用软件项目开发为切入点,构建基于软件项目开发过程平台。将《Java面向对象程序设计》、《数据库原理及应用》、《软件工程》、《软件测试》、《软件项目综合实训》这5门课程,按照专业培养目标,掌握计算机软件技术所必需的理论知识和专业技能,具有较强实践能力,能在软件项目研发测试一线从事软件项目需求分析、设计、编程、测试和软件产品等工作的高素质应用型专业人才的要求,对应“软件工程师”、“软件测试师”“数据库工程师”等行业职业特征,以项目为载体,形成一个有机整体,整合成“基于企业应用软件项目开发过程”,组建了课程群。其中《Java面向对象程序设计》、《数据库原理及应用》是专业核心基础课程,《软件工程》、《软件测试》、《软件项目综合实训》是专业核心必修课。通过“软件项目的需求分析、设计、编程和测试技术”这个链将这五门课程紧紧联系在一起,并能带动软件技术、网络工程、计算机信息管理、计算机应用技术等几个专业的协调发展。
(二)设计思路
1、以软件测试工程师对软件测试的能力要求为主线,设计课程体系,强化“工程属性”,突出“项目色彩”。
在课程体系设计中,课程组以软件测试工程师对软件测试的能力要求为主线,整合“JAVA面向对象程序设计”、“数据库原理及应用”、“软件工程”并融合到以多种实际企业项目作为案例的“软件项目综合实训”实践课程中,经过优化,强化课程的“工程属性”和“企业项目开发色彩”,将原来在传统课堂教学中仅仅通过简单实验无法实现的“集成测试”、“性能测试”、“系统测试”、“验收测试”等环节在实际工程项目实训中得到实现,并努力培养学生岗位职业能力。在课程教学中,坚持以实际项目案例中的工作任务为目标,融理论教学与实践教学为一体,以案例教学为导向,结合学生考取软件测试工程师资格证书的实际需要,加强学生职业能力和综合素质的培养,提高学生就业竞争力。
2、以企业工程能力培养为重点,实行分阶段培养模式
根据企业工程能力的形成过程,课程组将教学内容划分为基础理论阶段、技术应用阶段、职业发展阶段三个阶段。其中,基础理论阶段包括测试基础理论模块,主要介绍软件测试的基本理论与技术,测试用例设计和软件测试流程,侧重培养学生的测试思维,了解并掌握软件产品质量保证的基本思想和基本测试流程,以及软件测试的方法、技术,使学生能够设计出测试案例并通过手动测试实现测试案例,为全面掌握软件测试技术,后续实施测试和测试项目管理打下坚实的基础。技术应用阶段包括测试技术应用模块,主要介绍主流的自动化测试工具,包括IBM系列测试工具、HP QTP、HP LoadRunner,企业级项目的测试实施,培养学生将测试知识和技术应用于自动化测试实施的能力。职业发展阶段包括测试项目管理和职业素质教育两个模块,主要介绍软件测试项目管理的相关技术和方法、运用工程项目方式管理软件测试过程、测试企业工作模式和软件测试人员必备素质,培养学生的项目管理能力、团队协作能力和求职应聘能力。
适当加入游戏测试、手机测试、笔记本测试等学生感兴趣的内容。我们了解到学生对游戏测试这部分内容很感兴趣,那些平时听课不太认真的学生在这个问题上都举手要说上几句,跃跃欲试,也都能说出一二。所以,课程组在软件测试这门课程中经常讨论一些游戏测试这部分内容,以引起学生的学习兴趣。
四、改革教学模式和教学方法
(一)教学模式
本着“教师为主导,学生为主体”的思想,采用双证培养、分阶段培养和教学做评一体化教学模式[8]。
1、双证培养教学模式
实行“双证培养”教学模式,将学历教育与技能学习无缝对接,学生毕业后不仅能获得国家承认大学学历证书,同时还将获得国家劳动部高级职业技能认证证书。根据学生的能力特点,推荐学生考取软件测试助理工程师、软件测试工程师、软件质量管理工程师、注册软件质量保证师(国际认证)等资格证书。双证教育使学生专业能力更强、职业素养更高、综合素质更好、更符合企业用人标准。
2、教学做评一体化教学模式
将教学场所直接设在实训实验室,师生双方边教边学边做,理论和实践交替进行,把课堂教学转向工作情境,课堂由教师为主转向以学生为中心,突出学生动手能力和专业技能的培养,充分调动和激发学生学习兴趣。学生真正变成了学习的主人,而老师只是一个引导者或答疑解惑者,可以培养学生的终生学习能力,对加强学生的计算机动手操作能力和解决实际问题的能力也有很大好处。
最后教师跟大家一起对实验结果进行讲评,并对表现优秀的学生给予鼓励,同学们情绪高涨,学习积极性高。
(二)教学方法
根据学生的实际情况,综合采用多种教学方法[9][10]。
1、项目导向教学法
以从企业精选的项目为载体,在授课过程中对项目进行分解,根据学生的个性和他们的意愿分配不同的角色,并引导学生练习操作,体验项目流程,从而形成规范的开发意识和良好的IT职业素质。学生在校内所学习到的软件开发中的各类案例,在实际工作中能够及早地进行规划。
本课程以物流信息网这个项目为主线,把整个课程的教学演变成一系列的教学情境。按照实际工作中项目开发流程的顺序,依次展开,将“显性”的知识灌输,变为“隐性”的能力培养。通过具体项目的实施,引导学生在完成项目的过程中,掌握知识,培养能力。
2、任务驱动教学法
在课堂教学活动中,如果采用传统教学方法,很难激发学生学习兴趣。应该采用任务驱动教学方法,把一个项目分解为若干个大任务,每一个大任务,又分解为若干个小任务,将任务资料发给学生。学生在教师的引导下,课下先要进行消化,然后查阅各种必要的资料,理解知识并思考提出解决问题的方法。课上教师答复学生的问题,并引导学生更深层次的思考。通过这种方法充分调动学生的学习积极性,提高学习兴趣,使学生既学会理论知识又学会用理论知识解决实际工程中的问题。
3、启发式教学法
教师根据课程教学目的、内容、学生的知识水平和认知规律,采用启发诱导方法传授知识。该方法能够充分调动学生学习的积极性、主动性,促使学生独立思考、判断、归纳解答。能较好的培养学生学习能力,达到触类旁通的教学效果。
4、小组教学法
将班内学生分成若干个测试小组,每小组成员不超过7人,每组分配不同的软件项目任务。小组成员模拟与体验软件测试全过程工作职位和角色,使学生全过程适应工作职位的要求。
各项目小组在测试项目过程中,针对不同的开发阶段,撰写各开发阶段相应的文档,并制定相应的测试计划,设计典型测试用例,使用不同的软件测试技术和测试工具,完成不同的测试目标,并进行回归测试,以实现软件测试各单项专业知识与技能整合运用的目标。在整个测试过程可以体现“学以致用”的思想,实现理论与实践相结合。
通过演练项目开发测试,不仅让同学们切身体会到软件开发的整个过程,还让同学们对软件开发中各个角色有充分的了解,同时也更深刻的体会到团队合作的重要性。
五、教师队伍建设
加强双师队伍[11]建设,坚持“引进来,走出去”原则,积极引进具有企业开发经验的高素质人才进行课程教学和实验指导,同时注重本课题组青年教师队伍的培养。采用分批次选派青年教师参加山东大学齐鲁软件学院暑期实训和定期组织青年教师去软件公司实习等方式,将企业的软件测试经验直接带到教学中,提高教师的教学水平。
我们定期引进一些软件公司的软件测试人员或者聘请这方面的专业人士为教师、学生做定期讲座,以弥补我们在教学实践方面的缺陷。
六、实验实训条件建设
为培养应用型人才,本课程注重从不同侧面提高学生的实践能力。一方面,强化课内实验教学,在校内建有多个实训实验室,另一方面,与校外多家企业建立合作关系,为学生提供实训实习平台,开展产学研合作,构建校企合作培养人才的新模式。
本课程组注重密切与行业和企业的联系,与多家软件公司进行长期合作,建立了校外实习实训基地[12],为学生提供了生产性实训和顶岗实习的场所,在真实的职业环境中完成真实软件产品的开发,体验企业文化,培养职业态度和习惯。学生毕业后可成为这些公司的正式员工,真正实现了学校、企业、学生三方受益。
七、改革考核方式
大胆改革课程考核方式[13],采用30%平时成绩+30%实验成绩+10%项目考核成绩+30%期末考试成绩方式。平时成绩主要考核学生的课堂讨论情况、课后作业完成情况及课后自学情况。实验成绩根据学生在实验中的测试用例设计和操作情况,以及测试小组的分工合作情况给以评分。项目考核主要采用项目答辩的形式考核学生对基础知识的理解和掌握情况,由教师、行业专家、学生代表组成专家组给予评分。这种考核方式更注重的是对学生学习过程和实践操作水平的考核,避免学生为考试而学习,死记硬背现象。
八、小结
通过对基于工作过程的软件测试应用型人才培养模式的探索研究,学院已取得了实质性进展,建立了软件测试课程教学团队和软件测试实验实训基地。学生的软件测试综合应用能力有明显的提升,得到用人单位的好评,提高了学生的就业率。
参考文献:
[1]龚宇辉.软件测试课程教学改革研究[J].教育与职业,2010(24):130-131.
[2]温艳冬,石冬凌.软件测试课程三级项目教学实践[J].计算机教育,2010(22):77-79.
[3]胡宏银.软件测试课程教学方法探讨与实践[J].计算机教育,2007(03):11-13.
[4]http:///link?url=5xO-IodKMsEhsyUjQhIeqybDGR-8AypYffsnAnZdMWpLRpgEhLehfzGEROxq9fIC.
[5]孙金华.软件测试人才培养与课程构建的探索[J].计算机时代,2009(6):68-71.
[6]钟素芬,叶明芷.软件测试应用性人才培养模式的探索与实践[J].北京联合大学学报(自然科学版),2007(03) :89-92.
[7]田小霞.软件测试人才培养的探索[J].福建电脑,2013(02):181-182.
[8]刘育熙,耿雪春.面向应用的软件测试人才综合能力培养模式研究[J].教育与职业,2009(11):111-112.
[9]范洪辉,朱洪锦,朱广萍.“软件测试技术与软件质量”课程教学改革探索[J].江苏技术师范学院学报,2012(12):151-153.
[10]周改云,马丽.行动导向教学在软件测试技术课程中的应用[J].电子测试,2013(04):192-194.
[11]兰景英.构建应用型软件测试人才培养实践教学体系[J].黑龙江教育学院学报,2011,(05):78-80.
[12]兰景英.应用型软件测试人才培养模式探索与实践[J].潍坊教育学院学报, 2011,(04):78-80.
[13]叶振,杜斌.开放式软件测试教学实践探索[J].现代企业教育,2011(01):140-141.
基金项目:
山东协和学院教改项目(2012xh01)。
作者简介:
李兆翠(1980.1-),女,山东莒南人,硕士,讲师,研究方向:软件工程。
篇7
关键词:软件测试 软件工程,质量
中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2010) 05-0000-02
Views on Raise the Level of Small&Medium Software Companies Test
Zhou Pijian
(GangXi NanNing YingTai Career Training School,Nanning530022,China)
Abutract:This article describes the small and medium-sized software companies to improve software-testing level of insight.Including the management,implementation and technical aspects.
Keywords:Software testing;Software engineering;Quality
随着软件技术的发展,软件测试的地位越来越被人们重视,测试技术的发展也日新月异,甚至出现了专门的软件测试公司。在这样的潮流下,我国的软件公司受到了很大的冲击,没有测试就没有质量的观念被越来越多的管理者所认识,对我国软件行业中占据主导地位的中小软件企业来说,硬件,环境,人力等各方面力量相对不足情况下,不可能向微软等大公司那样去实施软件测试,那如何在现有的条件下进行改善呢?根据自己以前所在公司的一些测试经历,总结了一些经验,希望对我国中小软件公司的测试发展提供一些新的思路。
软件测试作为软件工程的一个有机组成部分,其过程就是以发现错误,检验是否满足需求为目标。在软件投入生产性运行之前,尽可能多地发现软件中的错误并修正,才可保证软件的质量。据有关统计,在整个软件开发的成本中,测试上的开销要占40%到50%。放眼世界,好的IT公司对软件测试的重视程度也发生了新的变化;美国硅谷地区,凡是软件开发企业或是设有软件开发部门的公司,都有专门的软件测试单位,其中软件测试人员的数量相当于软件开发工程师的四分之三,负责软件测试的质量保证经理的职位与软件开发的主管是平行的;作为软件行业老大的微软公司,在其内部,软件测试人员与软件开发人员的比率一般为1.5―2.5左右,从其软件开发的成功实践过程表明这种人员结构的配比是非常合理和正确的;在软件产业发展较快的印度,软件测试在软件企业中同样拥有举足轻重的地位。由此可见软件测试是多么地重要!
相对而言,我国的现状是:软件开发行业主要由中小型软件公司组成,在人员数量上少则不到十来人,多则几十人,却少有上百人的。由于人员数量的不足,很多公司把软件测试放在了一个可有可无的地位,据了解,大多软件公司存在这样一种状况:技术部十来个开发人员,而竟没有一个专职测试人员,等到软件产品将要交付给客户时,则对整个产品进行交互测试,而测试的工作常常是胡乱地交给市场部的销售员或维护员去瞎折腾,常常会发现很多错误,甚至是低级的BUG,由于整个过程省去了中间的测试,很多时候造成无法找出错误的原因,使得软件产品的生产不得不修改计划,影响了最后交付的时间,很多时候使得开发过程混乱、无序。造成了很大的损失。另外,即使是有专职测试人员的公司,其测试人员的数量、地位、待遇、重视等都远远不及开发人员。因而造成软件测试都是不足的,开发出来的软件产品存在相当多的漏洞,软件产品的质量得不到保证上,甚至交付产品后还常常从不断地从客户处得到BUG,造成了很不好的影响。 因此,加强软件测试,特别是中小软件公司的软件测试及水平是提高产品质量的重中之重,是企业要立足于市场的根本。
要如何提高中小软件公司的软件测试水平呢?就我的经历而言,一是把软件测试的认识和管理提高到相当的高度;二是提高测试技术。特别是认识和管理提高到位了,产品的质量就会改善很多。
其一,软件企业要从思想上的发生转变,每个员工都要意识到软件测试不仅是在软件开发完成后执行,而且是在软件开发的各个阶段都要参与执行。在此基础上提高自动化软件测试手段才能提高软件的质量。因此,对软件开发来说,其重心不仅要关注设计、编码阶段,更要关注在测试等关键点上。作为领导,这一点要带头领悟到。
我所在的公司老板和项目经理曾经做过这样一种方案:快速完成所有的编码,完成后进行所谓的测试,测试出现问题后再进行修改,以为这样能达到最快的速度和质量,但是,事实证明,没有把测试分发到代码制作的各个环节,最后的结果是发现一大堆的错误,甚至有些是至命的错误,使得产品根本无法在计划的时间内完成,造成时间不足,修改程序时匆匆忙忙,甚至不能按正常流程走,使得产品做得很粗糙,递交到客户手中后还发现相当多的问题,给后期的维护造成了很大的困难,记得当时我们的客户遍布全区,维护的工作量非常大,经常超出原来的维护计划,造成成本上成倍增加,给公司带来了很大的损失。基于这种现象,公司的领导在后一版的开发中,加大了测试的力量和过程,使得后一版不仅在规定的时间内完成,效果也比上一版好得多,在成本上也节省了很多。真的是体会到了“将测试渗入到软件开发的各个阶段”的多多好处。
在中小软件企业中存在这样一种现象:很多企业会喜欢让那些经验最少的新手、效率低下的开发者或不适合干其他工作的人去做测试工作,认为这样可以最佳的利用资源,因为在他们的观念中存在这样的理念:测试是没有技术含量的,只要多用用软件就可找到错误。正是这样的理念造成了企业测试水平低下,成本花费高。如要改变这种情况,就得好好的认识什么是测试,一个合格的测试工程师应具有那些基本素质?
以下是针对企业当前情况,对测试工程师基本素质进行了如下的总结:
1. 态度上:对软件测试要有浓厚的兴趣,有耐心,有意力。
2. 技术能力:
(1) 具备计算机的基础知识和测试专业知识这样的技术能力
(2) 有一定的编程经验,程序相当于程序员
(3) 能从使用者的角度出发,根据开发使用的设备、技术等特点来设计测试用例
3. 沟通能力:能很好地合项目经理、开发人员、客户、市场人员沟通,从沟通中归纳出有用的信息
4. 严谨、敢于承担责任、稳重的做事风格:测试中要考滤多方面,发现错误要正确面对,急时纠正。
5. 具有怀疑与进取的精神:不能以常规的思路来做,要设计一些非常规的、相反的测试用例,没有怀疑和进取的精神那只能是原地踏步,没有进展
6. 善于自我总结、自我督促,积极学习:测试是一种即繁琐又枯燥无味的工作,做多了你会觉得似乎一成不变,不总结,督促自己那就会陷入一种做事无动力的状况,积极学习不断出现的新的测试工具。
其二,管理要加强,软件测试管理不能随意、简单地做,不能没建立有效、规范的体系就动手测试,哪出问题就先补救哪,因为这会把测试人员常被弄得疲惫不堪,很多时间被耗费在单调无聊的补救工作上,使得测试人员失去了兴趣,陷入瓶颈,工作效率、能力不仅得不到提高,甚至是下滑。而建立有规划的,可行的软件测试管理体系能使用测试人员事半功倍,提高工作效率,进而提高产品的质量。那么,如何建立呢?我认为除了参照国际著名软件公司的做法,更主要的还是结合自身的特点、软件开发的体系、测试人员的技术特点与行为习惯等等建立一套符合自身公司体系。目前,很多小公司的人手不是很足,要建一个和软件工程中所描述的测试体系是非常不现实的,就我看来,除了公司本身要设立单独的测试岗位,到少一个测试经理,一个测试员外,开发人员还得担负一定的测试任务。测试经理主要参与测试的规划和过程管理以及设计阶段的测试,测试员主要是负责测试用例的编写和相应的编码测试,而开发人员在完成自己的编码任务后,则参与到单元测试来,配合测试人员完成相应的测试工作。整个过程中要求开发和测试要合协,要测试经理与项目经理做好协调,一起参与项目的调研,需求分析并认真地做好文档测试,因为把好这关,源头正了,下面也就好做了。在实际过程中不论遇到什么困难,都要按照规定的步骤来实现,不能跳过去。一旦出现违反规定的作法,不论什么原因,公司都要给予惩罚。相信经过这样的实施,测试的框架就基本上建起了。
其三,测试的实施过程要强调流程,否则,常常也会是事与愿违。
1. 在初始开发阶段,测试经理要和项目经理参与总体设计,协商并拟订开发规范,并交给由开发人员和项目管理人员评审。根据提出的意见,对规范进行修改,并提交高层审核。这样可发挥各方面的积极性,对公司领导而言,他们的参与加强了对整个开发的监督;对于开发人员而言,由于是他们提出的,就不会出现把发现错误的责任全部推给测试人员,甚至作到提前预防错误、减少潜在危险的发生,测试人员也会加深地规范的理解,相互间的牵制,保证了开发的质量。
2. 形成需求分析后,测试经理要对分析报告做一个详细的测试,根据需求的实际内容招集相关的人员,包括市场、开发、测试的人员,有可能也请来客户,由项目经理对各项各条给予适当的讲解,与会人员对提出的问题,提出不足,并给予评介,特别是把握计划中的不变与可变的地方,并由此做出测试的标准。例如:设计报表时是要设计灵活变化的还是要一层不变的?得从参与会议的市场、维护人员及请来的客户处了解客户的实际使用情况,包括年龄、计算使用水平、业务水平等。
3. 在单元测试时要把开发人员的“白盒测试”与测试人员的 “黑盒测试”相互配合。
4. 集成测试:通过化整为一的方法来进行,主要以黑盒的方式来进行。记住两模块接合好后就得马上测试,通过后才能与第三模块接合。
5. 验收测试:多方人员参与,包括市场,用户,专职维护人员。这时主要改善界面的统一性,美观性,易用性。
6. 加强文档测试,测试人员要加强与开发人员的沟通,对开发人员提供的文档加以细化,做到重点突出,内容规范,例如:模块的描述使用功能流程图、数据流程图及用例来描述,这使用整个过程理清思路、逻辑性加强,更易于阅读。在详细程度上可简略些,但随着开发过程的深入要进一步完善,因为这些文档都是单元测试中的标准。
7. 加强人的主观能动性,不论是手工还是自动的方式,都要参与评审,以人的实际为重。
其四,根据公司软件产品的特点,有针对性地对提高测试人员的测试技术和技巧,不要盲从。下面从两个方面加以描述:
1. “白盒测试”要把握如下:
(1) 正确性测试:检查软件的功能是否符合规格说明。一般通过减少枚举的次数,寻找合适的等价区间。如(A,B)是命题F(X)的一个等价区间,在(A,B)中任意取X1进行测试。如果F(X1)错则在整个区间上都错,如正确,则都正确。
(2) 边界值测试:用定义或者等价区间的边界值进行测试。如测试f(x)=√x的一段程序,凭直觉等价区间就是(0,1)和(1,+∞)。可取经x=0。5以及x=2。0进行等价测试。现取x=0以及x=1进行边界。
(3) 容错性测试:测试异常条件下的行为。如输入错误的数据类型,输入域之外的数值。
(4) 性能和效率:测试运行速度和对资源的利用率。
(5) 易用性测试:。一般以用户不翻阅手册就可使用软件为目的。
2. “黑盒测试”,要把握如下:
(1) 等价类划分:设计测试用例要以需求规格说明书为依据,把说明中对输入和输出的要求加以区别和分解。即把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例,没有必要用穷举测试。
(2) 边界值分析:选择等价类边界的测试用例来测试。对边界附近的处理必须给予足够的重视,,加强这方面常常可以取得良好的测试效果。特别地,一旦发现的错误就得及时更改,更改后重新测试。
综上所述,是对中小软件企业提高测试的一些行之有效的见解,但不一定适用于所有的软件企业,因为各软件企业存在的问题不同,所处的情况也不同。希望以上的见解可以给大家一些提示,达到提高各自的测试水平。
参考文献:
[1]朱少民.全程软件测试[J].电子工业出版社,2007
[2]微软的软件测试之道 Alan Page KenJohnston Bj Rollison 机械工业出版社,2009
[3]王宇.软件测试的实现和理想[J].中国计算机报,2003
[4]王立福.软件工程[J].北京大学出版社,2009
篇8
1.1论文背景和意义
随着IT产业的快速发展,计算机已经影响到人类生活的各个方面,从而不断改变着世界⑴。从个人计算机,到超市或银行的终端,到国防科技和航天领域,甚至到现在的嵌入式手机,计算机都占有一个很重要的角色,因此,计算机已经深入到生活工作中的各个方面。正是由于计算机在游戏、通信、交通、金融、军事、电力、航天等重要领域越来越广泛的应用,计算机发展的规模也FI益壮大、复杂、多功能化,而且对计算机质量的要求也越来越高。在这个信息化的时代,IT产业迅速发展,尤其是硬件率先发展。硬件的发展主要体现在质和量的方面,不仅数量越来越多,而且质量也得到了保证。相比较而言,软件虽然发展也很迅速,但主要是体现在量的方面,质的问题一直存在。随着软件规模不断的扩大,软件的质量保证逐渐成为人们所关心的焦点。软件幵发人员试图通过研究更好的开发过程来保证软件的质量,但结果是事倍功半,所以对软件进行测试是保证软件质量最可靠有效的办法。
软件测试是软件生命周期中的重要阶段,是软件质量保证的关键步骤,也是软件工程的重要组成部分。软件测试的效果直接影响到软件产品的质量。然而,做好软件测试却是不容易的,一方面产品必须给予软件测试充分的独立性和资源保证;另一方面,测试人员需要同时掌握软件开发的技能和软件测试的技能。通过软件测试找出软件存在的错误,分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时进行改进[2]。同时,对于软件错误的分析也能帮助测试人员设计出具有针对性的测试方法和测试用例,改善测试的效率和有效性。没有发现错误的测试同样有价值,完整的测试是评定软件质量的一种方法。
自动化测试框架是测试习惯和思想的集合。自动化测试框架具有很多优点,首先它可以确保代码的一致性,对于回归测试支持修复后再测试,从而提高了系统的可信赖度。其次,它可1以提高代码的重用性,从而提高了代码的生产效率,同时也减少了不必要的代码,进而提高了测试代码的执行效率。最后,它将重构概念作为其核心思想,使代码的适用性更强,从而提高了测试代码的质量。自动化测试框架可以分成两个层次。第一层主要是测试脚本的设计,利用与之相关的测试工具,开发对应的测试驱动,从而完成测试的业务逻辑。第二层是建立在第一层之上,这一层的主要作用是管理整个自动化测试,包括自动化测试用例的执行顺序、自动化测试框架的开发、执行和维护,也包括对第一层测试脚本的维护以及管理测试任务和测试报告等,在工程量大的项目中可以提现出它的重要作用。自动化测试虽然可以节约成本,提高测试效率,但它也有着适用范围。一般来说,自动化测试普遍用于三种情况,一是产品型项目,新版本是在旧版本的基础上进行改进,功能变化不大的项目,但项目的新老功能都必须重复的测试。二是回归测试,自动化测试主要应用于回归测试,回归测试能够有效的验证旧的缺陷是否修正,同时查看是否引入新的缺陷,在某种意义上,自动化测试工具也叫做回归测试工具。三是机械且频繁的测试,每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。
本文以甲骨文的中间件产品Tuxedo及其附属产品为测试对象,以STAF(Software Test Automation Framework,自动化测试框架)作为测试引擎分析并实现的一个测试框架ATTE。
1.2国内外发展现状
在计算机软件日新月异的今天,软件测试正在成为软件工程领域里的一个非常瞩目的趋势和地位,国内外许多学者和组织在软件测试方面投入了大量的研究工作,而且很多软件公司正在或已经在企业测试团队内部实施软件测试流程和框架,这就形成了许多经典的软件测试技术和流程管理规范[3]。
在全球最大的个人计算机软件公司微软,一个传统的项目开发中,测试的工程师比编码的工程师多很多,也就是说微软公司在测试方面的工作要比编码上的工作多很多。在国外尤其是美国,IEEE和ACM等组织已经制定了一系列的软件测试规范,还有许多公司如 Rational Corporation、Mercury Interactive> Compuware等都是着名的软件测试工具供应商,这些公司生产的测试工具在全国市场占了很大的比例。我国当前使用的很多主流软件测试工具都是国外的产品,可见国外的软件测试工具的开发已经形成了成熟的产业[4]。
2软件测试概述
随着信息技术的快速发展,计算机软件已经应用到社会的各个领域,例如科学、教育、文化、生活、国防科技等。而软件质量问题也成为人们所关心的焦点。人们对软件依赖的程度越高,对其可靠性就要求的越高。然而,对于计算机软件来说,不论采用什么样的技术或者方法,软件存在缺陷是不可避免的。采用新的编程语言,先进的开发技术,完善的开发管理,可以减少缺陷的引入,但是不可能完全杜绝缺陷的存在。因此,需要采用相应的措施来发现并解决这些缺陷,所以首要的任务就是发现这些缺陷,这就需要靠软件测试来实现。
2.1软件测试的目的
表面上看,软件测试的目的是要证明程序有故障存在,并且要尽可能的多、尽可能早地发现程序中的错误
。实际上,暴露问题不是软件测试的最终目的,发现问题是为了解决问题,只有解决了问题,软件的质量提高了,才达到了测试的最终目的。 3ATTE测试框架需求分析................19
3.1Tuxedo的测试特点................19
3.2Tuxedo的测试周期................20
3.3测试现状分析................21
3.4新测试框架的需求................22
4ATTE测试框架系统设计................23
4.1ATTE总体架构................23
4.2公共模块设计................ 24
4.3配置模块设计................27
4.4用例模块设计................30
5ATTE测试框架实现................33
5.1公共模块的实现................33
5.2配置模块的实现................44
5.3用例模块的实现................46
5.4ATTE异常处理控制................48
篇9
关键词:应用型本科;分层次教学;软件测试;教学改革
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)24-0169-02
一、软件测试行业现状
近年来,我国IT软件产业呈现迅猛发展的态势,但是由于许多国内软件企业存在着“重开发,轻测试”的倾向和认识的误区,往往导致在软件开发工程师开发出一个软件后,却没有一个好的软件测试工程师对软件项目进行测试,从而导致所开发的产品出现质量问题,这也从侧面突显了我国软件测试人才的极度匮乏。国外IT企业中的软件测试与软件开发人员的比例一般维持在1∶1左右,而在国内的一些IT企业中,这一比例却仅在1∶4~1∶5之间。因此,高校如何培养符合社会需求的大批高质量软件测试人才,如何尽快建立软件测试人才的系统培养机制,进而保障软件业的健康化发展,已成为现阶段应用型本科院校人才培养极为艰巨和紧迫的任务。
二、软件测试课程的现状
当前,《软件测试》课程已从隶属于《软件工程》课程单独一章的内容发展成为软件工程专业中一门独立、必修、核心的课程,甚至有些学校已经单独开设了“软件测试”这一专业。笔者结合近几年的教学情况,总结了该课程中尚存在的若干问题。
1.授课内容陈旧,理论知识多、枯燥。随着软件开发技术的发展和进步,当前软件测试领域不断涌现出新的测试理论、测试技术、测试方法及测试工具,如:敏捷开发所引起的敏捷测试技术、探索式测试技术及快速迭代测试技术,不断普及的自动化测试催生了大量自动化测试工具的产生及应用,等等。而反观当下大多数与软件测试有关的教材及参考书,绝大部分仍以传统而深奥的理论知识为主,同时辅以传统的测试模型及测试方法的介绍,缺乏案例教学及项目驱动教学的实例,授课内容多,一个学期的课时往往不够安排,教与学的过程都显得极为枯燥乏力。
2.缺乏良好的实训平台,实验内容与理论知识难以结合。软件测试按不同的标准可分为不同的类型,如图1所示。这些不同类型的测试在理论课上往往都会涉及到,但在实验课上却难以一一展开,尽管安排了“2+2”的周课时(即每周2节理论课+每周2节实验课),但由于受限于实验案例的选择、机房上机环境的配置、缺乏良好的实训平台及学生基础参差不齐等原因,实验内容与理论知识始终难以结合。
3.“重开发,轻测试”的思想普遍存在,学生疲于应付考试,死记硬背多,考完即忘。软件测试是一门综合性强、涉及学科领域多的课程,学生普遍缺乏具体认识,大多存在“重开发、轻测试”的心理,认为只要能把系统开发出来,做不做测试都无关紧要。这也导致学生对这门课的学习不够重视,期末考试也是疲于应付,对一些基础知识甚至是软件测试领域中的常识问题,不注重理解,死记硬背,其结果必然是背得快、忘得也快。基本考核结束之后,所有的知识点也都还给授课教师了。
三、分层次概念的提出
“分层次教学”的思想源于孔子提出的“因材施教”。目前“分层次教学”的思想在高等教育领域尚处于探索与研究阶段,为适应社会和经济发展对工程创新型人才的需求,龙岩学院信息工程学院积极推行“应用型本科人才培养模式改革与实践”的人才培养方案,不断在专业培养方案、教学模式、课程体系及教学方法和手段等方面进行创新和变革,以期提高教学效果和人才培养质量。软件工程专业在上述大环境下,根据自身特点和社会市场对软件人才的需求,对课程体系进行重新调整,并按照专业能力分阶段、分层次的培养目标,运用宏观调配的方法对课程体系各知识模块进行整合与优化。
四、拟采取的措施
《软件测试》课程是软件工程专业的一门专业核心课,是培养学生软件测试理论、技术、方法和能力的重要课程,同时,软件测试也是当前IT行业最热门和紧俏的职业之一,是保证软件产品质量、提高软件可靠性、降低软件成本和风险的重要手段。基于此,《软件测试》课程必须在教学内容和教学方法上及时调整和更新,使课程建设与学科建设紧密结合,既要满足软件业对软件测试人才的需求,又要保证软件工程专业中各知识模块之间的系统性和完整性。本节以下内容将详细描述此次分层次教学改革中所采取的措施。
1.对学生分组。笔者所在学院软件工程专业,一直采用“3+1”的教学模式,软件测试课程开设在大三上学期(相比其他院校,开设时间提早了一个学期),学生经过大一、大二两学年专业基础课及部分专业课的学习,基本能找到自己的学习兴趣并定位自己的学习方向,如:有学生对某门程序设计语言,即编程感兴趣,有学生对嵌入式开发、物联网感兴趣,当然也有学生对软件测试行业感兴趣,等等。结合学生自己的兴趣及学习情况,对学生进行分组,主要分为三类,其中:I类――基础了解类;II类――一般测试类;III类――测试开发类。
2.实施不同的措施。根据课前对学生的上述分组,对不同层次要求的学生,实施以下分层。
(1)理论教学内容。结合前文第2节所述软件测试课程教学中存在的问题,将理论授课内容进行调整后主要分为以下四个部分:①软件测试基本概念篇;②软件测试技术篇;③软件测试过程篇;④软件测试项目实践应用篇。其中①中主要介绍软件测试的概念、分类及软件缺陷等内容,②中主要包含黑盒测试技术及白盒测试技术,③中主要是对单元测试、集成测试、系统测试及验收测试等进行描述,④则主要按测试模型中的不同步骤进行介绍,包括:测试需求分析与测试计划、设计与维护测试用例、部署测试环境、测试执行与跟踪、缺陷报告与质量分析报告等。
对理论教学内容所采取的策略是:I类、II类、III类不同分组的学生,都需要对①、②、③中的内容进行学习;II类、III类学生还需要对④中涉及的内容进行学习;此外,III类学生还需利用课外时间,学习与测试自动化及测试框架相关的知识。
(2)实验教学内容。结合理论教学内容及实验室配置环境等因素,在软件测试课程中所开设的实验教学内容主要有:①测试之初体验(在没有任何测试基础的情况下如何进行测试);②黑盒测试;③白盒测试;④单元测试;⑤功能测试;⑥性能测试;⑦系统测试。
对实验教学内容所采取的策略是:I类、II类、III类不同分组的学生,都需要实验的内容是:①、②、③、④;II类、III类学生还需要对⑤、⑥部分进行学习和实践;此外,III类学生还需利用课外时间,学习并实践⑦的内容。
(3)考核方式。为避免学生应对考试死记硬背的现象,将期末总评的成绩按以下标准进行:总评成绩=考勤×10%+期中×20%+实验×20%+期末×50%,即适当降低期末卷面分数的比例,提高期中及实验成绩比例。鉴于学校教务处要求,期末考试依然采用统一的试卷,但期中考试则根据不同层次的学生采用不同的试卷进行考核,实验部分的成绩也依据不同层次学生的不同表现进行评定,且要充分利用分层的优势进行考核。
3.成效。此次教学改革的受益对象主要是我校2012级软件工程共计109位学生及2013级软件工程共计106名学生。对于I类层次的学生,除了学习了软件测试基础知识之外,他们还能将学习的重心放在自己感兴趣的其他科目上;对于II类、III类层次的学生则对课本及课外知识都进行了学习,这为他们毕业之后的职业发展奠定了良好的基础。
五、结语
教学改革任重而道远,非一朝一夕能成。未来还需努力的方向在于:①引入更多的案例进行教学,丰富实验课堂;②进一步完善针对本校不同层次学生的《软件测试》课程实验指导书;③给学生加以更多职业规划方面的辅导,为当今社会IT行业中培养“全面软件测试工程师”而努力。
参考文献:
[1]余久久,张佑生,傅廷亮.软件测试课程教学思考[J].安庆师范学院学报(自然科学版),2013,19(4):121-126.
[2]毛强,彭振生.大学物理课程分层次教学改革初探[J].巢湖学院学报,2009,11(6):137-139.
篇10
关键词:软件测试;测试管理;管理系统;第三方测试服务
中图分类号:TP31 文献标识码:A文章编号:1007-9599 (2011) 01-0000-01
The Test Management System Design&Implementation Based on Third-party Testing Service Processing
Yang Song1,Su Jia1,Chen Lei2
(1.Information Engineering School,Communication University of China,Beijing100026,China;2.China Software Testing Center,Beijing100048,China)
Abstract:In recent years,more and more prominent position of software testing, it also brings the rise of third-party testing services,with the continuous development of software testing and the progress of third-party testing services, software test process management tools and an increasingly diverse.By analyzing the status of software testing management system and found that there is an existing similar products are not uniform processes,platforms such problems binding. According to the above questions,refer to third-party testing service process,the paper design and implementation of the B / S structure software test management system that uses web2.0 design process in line with national quality assurance system, regulate the flow of third-party testing services to achieve platform independence,which can effectively ensure that the software testing process, software testing process standardized.
Keywords:Software testing;Test management;Management system;Third-party testing service
从软件质量保证的方面来说,软件测试是软件质量保证一个重要环节,通过软件测试来验证软件是否满足了需求,验证产品是否满足内部质量和外部质量[1]。近些年来,国内外在软件测试管理系统方面涌现出了很多产品,但是这些测试管理系统大部分都是依据各自的测试流程设计的,方式单一。同时大部分在测试管理系统的体系结构上都C/S结构的,不能满足跨平台操作系统测试的需求[2]。
软件测试管理是一种活动,可以对各阶段的测试计划,测试用例,测试流程,测试文档等进行跟踪、管理并记录其结果。针对上述问题,依据软件测试管理流程,本文介绍了笔者参与设计和实现的基于第三方测试流程的B/S架构的软件测试管理系统,采用了和Microsoft SQL Server2000进行开发,兼顾效率和灵活性,确保了软件的质量。
一、B/S架构的软件测试管理系统的设计与实现
(一)测试工作流程分析
在测试工作之初,就是要制定测试计划,测试计划的制定主要是依据被测系统的需求文档、设计文档等相关文档。制定测试计划后,根据测试技术和测试需求设计测试用例并制定测试过程文档格式;应用测试用例进行测试,同时记录测试缺陷,同步填写测试过程文档;同时将测试缺陷提交到缺陷管理模块;根据测试过程总记录的缺陷和测试记录进行缺陷分析;最后将测试缺陷、对应的测试问题分析和测试结果输出到测试报告生成模块产生测试报告。
(二)测试管理系统的设计
本测试管理系统采用三层架构的设计方式,应用和Microsoft SQL Server 2000进行的设计。测试工程师通过浏览器访问测试管理系统,通过用户名和密码登陆系统,访问系统各个模块,测试结果通过表现层经业务逻辑层的处理存储到数据库。测试管理系统部署在Microsoft Windows 2003操作系统中,因为应用了B/S架构,因此避免了平台相关性。
其中,系统管理员主要是通过系统和各个注册职员的角色分配任组建测试团队和分配测试内容。项目经理主要负责整体测试项目的管理,其中包括:测试需求的制定、测试方案的撰写、测试执行过程、以及测试执行过程中缺陷库的更新并对测试结果进行分析、审查测试报告和撰写测试总结,属于监管控制角色。测试工程师主要任务是参与测试设计计划和撰写测试方案,更新缺陷库中的信息以及撰写最后的测试报告工作等,在测试管理体系中属于测试执行角色。
(三)测试管理系统的实现
第三方测试服务的测试过程中,用户、开发方和测试方形成了相互制约的关系。但三方的目标都是希望被测系统符合需求、能够稳定运行。本测试管理系统主要由权限管理、需求管理、测试计划管理、测试执行管理、缺陷管理和测试报告管理这几个模块构成。
权限管理主要是由系统管理员通过对系统中各个角色分析后,进行人员的分配,组建测试团队,同时分配给团队测试任务,进行测试前期的准备工作。
需求管理主要是设计测试需求,首先制定测试需求及其工作分解结构,然后对其进行评审,评审不通过要就行修改,评审通过后产生测试需求报告,进入测试计划阶段。
测试计划模块主要是制定测试时间、安排测试任务、设计测试用例、设计测试步骤并完成测试计划文档,为测试执行部分做好一切的准备。
测试执行部分主要是以测试计划中设定的测试用例进行测试用例集编写,然后通过项目组评审通过后按照测试计划安排的测试时间安排进行测试工作。
缺陷管理模块主要是配合测试执行模块一起执行的,在测试执行过程中,发现问题,将缺陷上传到缺陷管理中,同时在回归测试的时候再将重点放到已测出缺陷上,同时修改已不再存在的缺陷,存入缺陷库。测试报告模块主要是根据以上所有的过程产生的文档,自动生成测试报告同时将缺陷分析结果写入报告中,为企业提供以后系统改进的依据和系统调优的建议。
二、结论
本系统依据第三方测试流程进行设计,采用了B/S架构避免了系统应用的系统相关性。系统分为权限管理、需求管理、测试计划、测试执行、缺陷管理和测试报告生成几大模块,同时实现了根据测试需求自动生成测试用例,依据未关闭的缺陷和测试过程文档自动产生问题分析报告的功能。本系统已经在几个测试项目中得到了应用,系统同时支持100人的在线和50人的并发压力,经实践检查本系统符合第三方测试服务的流程,能够满足第三方测试服务的要求。
参考文献:
[1]吴慧韫,李卓群.基于H模型的软件测试管理应用模型研究[J].计算机工程与设计,2006,27(11):1993-1995
[2]黄晓东,刘强环境下软件测试管理系统的设计和实现[J].武汉理工大学学报,2005,27(6):37-40