绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇软件测试论文范文,希望它们能为您的写作提供参考和启发。
从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是"为了发现错误而执行程序的过程"。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
二、影响软件测试的因素
影响测试效率的因素除了测试方法之外,主要因素还有人为因素、软件类型、错误类型、测试充分度等。下面对这些因素作一个简要分析。
1.人为因素
软件测试中的许多工作是由人来完成的,因此,人为因素是影响测试效率的一个重要方面。这样的差异并非偶然,这是因为测试人员在应用一个测试方法时具有很大的灵活性,从而使测试人员的经验和学习能力可以有较大的发挥余地。所以只能采用越来越严格的测试方法和过程来有效地避免人为因素对测试效率的影响。
2.软件类型
软件类型也是影响测试效率的一个重要因素。即使是同一个测试者,测试不同类型的软件的效率和发现软件错误的能力也是不尽相同的。测试什么类型的软件的效率较高则因人而异,这往往与测试者的相关知识、经验与专业训练有关。
3.测试充分度
测试充分度反映了一个测试是否得到了良好的执行,它直接关系到测试的效率。1993年Frankl和Weiss发现,只有当充分度十分接近100%时,才能使测试发现错误的能力得到发挥。因此,在测试软件时,必须设法使充分度十分接近100%,否则将难以保证测试质量。
三、加强对测试工作的组织和管理
随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。然而,为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。
从软件的生存周期看,测试往往指对程序的测试,这样做的优点是被测对象明确,测试的可操作性相对较强。但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。即使测试后发现是设计的错误,这时,修改的代价是相当昂贵的。因此,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。
虽然测试是在实现且经验证后进行的,实际上,测试的准备工作在分析和设计阶段就开始了。
1.测试的过程及组织
当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。
在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:
(1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。
(2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。
(3)代码会审:代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。
(4)单元测试:单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础
(5)集成测试:集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。
2.测试的人员组织
为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。
(1)软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。
(2)设计评审:软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价,同时利用关系数据库的规范化理论对数据库模式进行审查。
经中央电视台、中国青年报、中国新闻周刊等多家媒体报道的沈阳在国内反剽窃领域已是名人,每天收到的电话、邮件不断。
“去年以来,不断有人告诉我,被检测者们正在研究反剽窃系统的运行规律,找出弱点,并把心得上传网络供人分享。”沈阳说,他们首先发现系统只能检测文本文件,数学公式等非文本格式可大胆抄袭。利用这—弱点,他们把文字拍成图片贴到论文电子版里,系统也拿它没办法。
由于拥有容量更为强大的备查论文数据库,去年底以来,由中国学术期刊电子杂志社与清华同方知网共同研发的学术不端检测软件被国内更多高校和期刊采用。但他们的软件,同样也面临被检测者各种反反剽窃行为。
目前软件检测出的全文或大段抄袭等简单抄袭少了,并不意味着抄袭行为减少了。
沈阳介绍,网络上出现了应对反剽窃检测的商业服务:被检测者提供论文和学校名称,提供商业服务者即能查出这所学校所用反剽软件的类型,是沈阳的还是清华同方的,即可提前检测出结果,并提示被检测者如何修改;被检测者再将修改过的论文提交学校,这样就检测不出问题。
“还有更绝的。—名博士生手眼通天,当被告知他的博士论文经检测为抄袭后,他托关系从国内各大期刊库撤掉电子版论文。”沈阳说,“这名‘干掉正版’的博士生确有其人,只是我不便透露更具体的身份特征。”
本报讯(记者万建辉)“现在看来,反剽窃远不只是—个技术问题。今年暴露出来的多起学术不端事件,有关部门曾来函征求我的意见。”
沈阳昨日介绍,他也做反剽窃方面的理论研究,包括民意分析和舆论分析研究;主管部门来函—般会向他了解反剽窃软件的检测效果,剽窃事件的性质状况、发展走势。
武汉多所高校请他去做反剽窃专题报告。甚至,被揭发者找他咨询采取何种应对措施、会产生何种结果。
沈阳说,今年,—名年轻官员的上任引起全国网友广泛关注,网友人肉搜索出他的毕业论文,并用反剽窃软件检测出抄袭部分。这名官员请人找到他,请他帮助分析事件可能的进展和结局、是否需要辞职等。
广州—所大学的—名女教师举报学校负责人博士论文抄袭。沈阳说,女教师曾打电话给他,希望他以自己开发的反剽窃软件检测出的客观结果声援她。
本报讯(记者万建辉)在沈阳工作的武汉大学,校研究生院用的是清华同方的反剽窃软件;该校计算机学院、信息管理学院的研究生办公室和—个校办期刊社,仍在使用他的反剽窃软件。
这部分实验目的是使学生熟练掌握使用Jmeter测试Web应用程序的一般流程和方法。实验任务测试绩效考核子系统中的评分模块。评分人登录系统后进入评分环节,选择其未完成的评分项目(若有多个未评分项,则需要全部对其评分)。每个评分项中包含对多个部门的评分,部门数大于等于3个时需符合正态分布,如可评出优秀3个、良好6个、合格4个、基本合格2个,否则可任意评分。按照循序渐进的原则,设计了3个步骤:一是Jmeter的基本应用,包括脚本录制、添加http请求、添加断言以及查看测试结果等;二是Jmeter的逻辑控制结构,如分支和循环等;三是Jmeter的高级应用,如参数值可变以及参数个数可变等。
1.1Jmeter的基本应用
Jmeter可以手工添加脚本,但更方便的是使用脚本录制软件Badboy[9]。Badboy录制的脚本可以保存为Jmeter格式,然后在Jmeter中直接打开和修改。脚本主要是一系列的http请求,其中可以设置请求的URL,请求方法(get/post)及请求参数等,如图1所示。通过添加断言(如是否含有特定字符串)检查请求是否返回正确结果。添加查看结果树并运行测试脚本查看程序的测试结果。
1.2Jmeter的控制结构
Jmeter具有丰富的逻辑控制结构,包括控制器,switch控制器,while控制器以及forEach控制器等。实验重点练习控制器和forEach控制器。控制器判断Jmeter变量是否满足给定条件,若满足则执行其包含的测试元素,否则不执行。ForEach控制器对Jmeter变量的每一个取值都执行一遍其包含的测试元素。图2是一个控制器,其条件为变量COUNT小于10且变量VAR等于字符串“abcd”。图2Jmeter的控制器图Jmeter的变量引用使用${变量名}的方式,变量一般提取自返回页面中的某些信息,如满足特定条件记录的行数或某个特定位置的字符串取值等。变量提取可采用正则表达式或Xpath进行匹配,讲解其匹配原则并现场演示。图3利用正则表达式提取需评选优秀的单位个数,其中引用名称youxiu就是变量名。匹配失败则取设置的缺省值0。如对于页面中返回的html代码“…您当前可以评出优秀<spanid="ltYSMsg">3</span>个…”可提取出优秀个数为3。
1.3Jmeter的高级应用
本部分着重解决实际测试过程中的一些常见问题,如参数内容可变及参数个数可变等。测试登录环节时需模拟不同的用户登录行为,即图1的http请求中txtUserName一项的值应是变化的。Jmeter提供的CSVDataSetConfig可解决这一问题,如图4所示。将所有评分人的信息存储在一个CSV文件中,把其中的列名填入VariableNames项,之后将图1中的txtUserName值改为userAccount(即CSV文件的第1列)实现参数值的动态变化。进入评分项后需根据情况选择优秀和良好等的个数,且要反映在http请求的参数中。由于参评单位的个数因评分人和评分项各异,因此无法在GUI界面中一一添加。需动态添加的参数包括评分列表中的name及其value,value的取值从优秀到基本合格依次为1234。为简单起见,我们按顺序对单位进行评分。如系统要求评出3个优秀,则测试中前3个部门打优秀,其余依次类推。由于同一部门的优秀良好等单选按钮的name值相同(如图5所示),我们选择提取该组唯一的ID号,然后将其转换为name,其对应关系是用$代替下划线(如ID号为gbBSCExamList_ctl02_rbExamerLevel,name为gbBSCExamList$ctl02$rbExamerLevel)。Jmeter的Beanshellpreprocessor可在提交http请求前动态调整参数个数及参数值。下面给出了Beanshellpreprocessor的代码。其中ExamerLevel_matchNr为Jmeter的系统变量,提供了正则表达式匹配项ExamerLevel匹配成功的个数(即参评单位的个数)。如前所述匹配数量小于3时可任意评分,为简单起见我们均将其评为优秀。N=Integer.parseInt(vars.get("ExamerLevel_match-Nr"));(N>=3){YX=Integer.parseInt(vars.get("youxiu"));LH=Integer.parseInt(vars.get("lianghao"))+YX;HG=Integer.parseInt(vars.get("hege"))+LH;BHG=Integer.parseInt(vars.get("jibenhege"))+HG;for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");(i<=YX){sampler.addArgument(item,"1");}else(i<=LH){sampler.addArgument(item,"2");}else(i<=HG){sampler.addArgument(item,"3");}else(i<=BHG){sampler.addArgument(item,"4");}}}else{for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");sampler.addArgument(item,"1");}}设计了含35个并发线程的线程组,模拟实际35个评分人的评分过程。全部线程在1秒钟之内启动,比实际情况更严格。得到聚合报告如图6所示,其中点击考核评分页面响应时间最长,为335毫秒。且测试过程中无错误发生,说明系统评分模块可靠。
2数据库性能优化实验
除应用程序外,数据库设计的优劣亦影响系统性能。这部分实验目的是使学生熟练掌握使用SQLServer测试数据库性能的一般流程和方法,并进行简单的数据库调优。为减少复杂性,设计一个简单的由三张表组成的人员组织结构数据库:user、or-gan及userorgan表。其中user表含4586条记录,or-gan表含1722条记录,userorgan表含6804条记录(一人可在多部门任职)。实验任务根据账号查询其姓名及所在单位信息。
2.1SQL语句执行计划对应用程序中频繁执行的SQL语句检查执行计划非常重要。初始时,三张表均未建立任何索引,下面SQL语句的执行计划如图7所示。由图7知,三张表均采用全表扫描的方式。对大表全表扫描可能涉及多次磁盘I/O,非常费时,应尽力避免此种情况。SQLServer报告由于缺少索引影响了查询性能,并给出了相关建议。selectA.vcAccount,A.vcName,C.vcNamefromtest.dbo.[user]Ainnerjointest.dbo.[useror-gan]BonA.vcAccount=B.cnvcempidinnerjointest.dbo.organConB.cnvcorgid=C.nNodeIDwhereA.vcAccount='testuser'为表格建立以下索引:indexIND_USERACCOUNTontest.dbo.[user](vcAccount)clusteredindexPK_ORGANontest.dbo.[organ](nNodeID)indexIND_USERORGANontest.dbo.[userorgan](cnvcempid,cnvcorgid)再次运行后显示执行计划如图8所示。可见所有表扫描均已替换为相应的索引查找,且SQLServ-er未报告缺少索引影响查询性能。两次执行查询的磁盘I/O和CPU时间见表1,可见为表添加正确的索引可提高查询性能。
2.2索引建立原则总结
建立索引的一般满足原则如下[10](篇幅所限,未给出实例):(1)为主键所在的列创建索引。为经常进行连接但未指定为外键的字段建立索引。(2)在频繁进行排序或分组的字段上建立索引。(3)在条件表达式中经常用到的不同值较多的字段上建立索引,在不同值较少的字段上不建立索引,如性别字段。不在查询很少引用的列上创建索引。(4)若经常同时使用多个字段排序,可在这些字段上建立复合索引。要尽量使关键查询形成索引覆盖,其前导字段一定是使用最频繁的字段。(5)查看索引并删除不使用的索引。需频繁进行数据查入操作的数据库应有较少的索引,需频繁进行读取操作的数据库应有更多的索引。(6)在聚集索引中,避免包括不必要的列,尽可能使用较小的数据类型。(7)在支持排序和范围查询的字段上考虑使用聚集索引。(8)具有高选择性的列是索引的好候选列,具有高密度的列是索引最糟糕的候选列。
目前,全国有500余所本科院校开设计算机专业,对一所像中国计量学院样的普通高校而言,如何在这种庞大的专业规模和激烈的专业竞争中办好自己的专业,专业特色是一个重要的立足点。不同类型高校计算机专业的人才培养应当具有不同的定位,人才培养模式要充分依托各自学校的办学优势体现专业特色。
中国计量学院是我国质量监督检验检疫行业唯一的本科院校,学校在29年的办学过程中,逐步确立了“计量立校、标准立人、质量立业”的办学理念,形成了“培养具有牢固质量观念、明确标准意识和较强计量能力的高素质人才”的人才培养和在计量、质量、检测、标准、检验检疫等方面具有鲜明的办学特色。
中国计量学院计算机专业面对目前国内软件测试人才失衡及培养渠道缺失现状,针对软件测试人才的职业素质要求,依托学校计量测试的办学优势,以培养社会急需的软件质量与测试人才市场为目标,研究探索了具有鲜明计量特色的“软件质量与测试平台+模块”的计算机专业应用型人才培养模式和课程结构与体系,构建了由实验教学、软件度量与测试专业技能训练和校内外软件质量与测试实践基地的计量特色实践教学体系,培养了z生软件质量意识和积极探索、勇于创新的学习动机。
1计量学与软件测试间的关系
计量学(metrology),简称计量。随着人类文明和科学技术水平的发展,计量学的内涵与外延在不断变化。就内涵而言,计量学曾被称为度量衡学和权度学,一般指关于测量的科学,具体指以技术和法制手段保证量值准确可靠、单位统一的测量,此处的“量”主要是有形的、物化的量,可通过“测”来获取。而广义的计量学,则突破“测”的手段来获取无形的量[1]。
在传统计量时期,社会经济活动较简单,计量主体是度量衡和时间度量,随着近现代数学、原子物理和量子物理学的发展,现代计量的对象和范围不断拓展,从一般物理量扩展到工程量、化学量和生物量等,甚至还包含了现代社会的商贸、医疗、贸易,出现了形态计量学、经济计量学、文献计量学、情报计量学、网络计量学。计量学已经涉及自然科学、人文社会科学的各方面[1]。
科学仪器是计量的重要组成部分,一流科学研究往往离不开一流的科学仪器。随着计算机技术的飞速发展,“计算机软件就是仪器”、“计算机软件就是设备”早已成为的事实。20世纪90年代以来,计算机应用领域不断拓宽,软件应用的复杂性和规模不断扩大,IEEE、ANSI和ISO等一系列关于软件质量控制和测试的国际标准均相继问世,使软件质量和软件测试得到了普遍的重视。人们认识到软件测试不单纯是发现错误的过程,而且包含软件质量评价的内容,是软件质量保证的重要手段。2004年ISO和IEC的第一联合技术委员会(ISO/IEC/JTCl)提出的软件工程标准术语中给软件测试下的定义是:软件测试是为评价、改进软件产品质量、标识软件产品缺陷和问题而进行的活动。即软件测试并非传统意义上产品交付前单一的“找错”过程,而是贯穿于软件生产过程的始终,是一个科学的质量控制过程[2]。因此可以说传统计量测试技术与计算机技术的交叉与融合是实现软件测试技术的基础,软件测试技术是传统计量测试技术的延伸与拓展,是现代计量技术的一个重要分支。传统的计量测试也是测定某个系统的性能是否满足需求,或弄清预期结果与实际结果之间的差别。软件测试技术与传统计量测试技术的主要区别在于被测对象不同[3].
2具有计量特色的软件测试应用型人才需求分析
何谓具有计量特色的软件测试应用型人才?笔者认为所谓具有计量特色的软件质量测试应用型人才是指“具有牢固软件质量观念、明确计量标准意识和较强软件质量和测试能力的高素质应用人才”。其特点是对软件度量、标准、质量方面的问题非常敏感、理解非常准确、工作上手非常快。
软件质量度量是对影响软件质量的属性所进行的定量测量,其实现的基础是软件测试,测试作为一种通用的度量方法,其重要作用在于软件质量保证、功能的验证和确认,以及产品可靠性的评估等。随着经济全球化的进一步推进,中国软件行业面临更加广阔的国际市场。经过几年来的市场竞争,业内人士已清醒地认识到:“优质的产品、一流的服务、良好的信誉”是软件产业发展壮大的基础。在注重软件开发过程规范化的同时,通过测试的手段保证软件产品的质量,贯穿于软件产品研发周期内每一个环节中,在整个软件开发的系统工程中占据着相当大的比重[4]。
目前,我国软件业服务范围广泛,从电子消费到医疗航天,已渗透进社会的各个领域。据了解,随着软件行业产业结构的调整,各大软件公司对国内软件市场、软件外包业务的争夺愈演愈烈,软件质量不得到改善,我国软件行业就无法和美、日、德、英、法等软件大国竞争。然而由于我国软件企业对软件测试认识较晚,现阶段大多数软件企业中测试人员数量还不足开发人员的五分之一,远远落后于国外1:1的比例,且具备5年以上行业经验的资深软件测试工程师不超过两万人。据相关数据统计,目前我国软件测试人才缺口已达30万人。
国内软件测试人才的来源主要有三方面:一是以前做软件开发转行的技术人员;二是来自计算机专业的高等学院毕业生;三是经过一定的培训,具有很强的实战经验的专业人员。据51Testing调研数据显示,目前国内软件测试从业人员的学历集中在本科,其比例为70%,大专学历次之,其比例为23%,高学历者(包括硕士、博士)占6%,大专以下的有1%。因此高等学院计算机专业本科毕业生将是我国今后软件测试人才的主要来源。
3具有计量特色的软件测试应用型人才的培养
(1)培养目标的定位
高等学校计算机专业人才培养目标的确立依据有二:一是学校的办学特色和自身的专业条件;二是社会对专业人才的需求。在专业建设和人才培养目标的定位过程中,我们认识到近年来随着大学计算机专业在规模上蓬勃发展,各高校均面临着专业特色不明显以及教育质量需要提高等问题。认为在新形势下,只有以特色立校,扬长避短,才能以特色强校,以特色取胜,才能凸现学校的品牌与地位。
中国计量学院地处IT技术发展非常迅猛的浙江省,是我国质量监督检验检疫行业唯一的本科院校,其办学特色是计量、质量、检测、标准、检验检疫等方面。因此我们的人才培养目标的定位是立足于浙江省和国家的需求,依托学校计量测试的办学优势,根据国内外在软件测试和质量控制创新教育方面研究的现状和发展趋势、新形式下社会对软件测试和质量控制的计算机专业人才的需求,特别是对软件测试和质量控制专业人才在应用动手创新能力和综合素质方面的需求,在我们专业实力、专业水平和专业学生的知识能力基础上,结合计量学院在计量、质量、检测、标准、检验检疫等方面的办学特色,突出计量测试特色,培养具有鲜明的计量特色的计算机专业人才。
具有鲜明的计量测试特色计算机专业人才培养目标,一方面可以提高我校计算机专业在培养人才和为社会发展服务等方面的创造力、在招生、就业,争取科研课题方面的竞争力和对浙江省和国家的软件测试和质量控制领域的技术发展和进步的贡献力,另一方面也有助于提高我校计算机专业的水平和实力,争取更多的社会资源和企业支持。
(2)课程体系和计量特色实践教学体系
根据教育部计算机科学与技术专业教学指导分委员会在《中国计算机本科专业发展战略研究报告》中提出的以“培养规格分类”为核心思想的计算机专业发展的要求,我们的教学计划和培养方案以应用型为基础,整个课程体系设计首先强调计算机科学和应用工程基础,但专业课程的重点放在现代软件质量工程和软件测试理论和软件测试新技术方面。培养计划强调软件测试领域的应用实用型特点,重点加强软件测试实践性课程,培养学生的独立进行软件测试的能力。课程体系分为以下几个层次实现:
①专业基础:包括计算机专业引导性课程和数学物理等方面的基础课程,如程序设计基础、数据结构与算法、计算机组成等,重点培养学生对计算机基础的理解和掌握。
②专业课:包括计算机专业自身的核心课程,如数据库原理、操作系统、计算机网络、软件工程等传统的计算机学科核心课程,同时软件测试与质量控制的核心类课程也是教学的重点。在高年级专业的专业方向学习阶段,采用专业方向平台教学手段,学生可根据自己的专业兴趣、发展方向、就业趋向等选择合适的平台课程进行学习。根据社会对计算机专业人才需求和自身专业特点,设置软件测试与应用方向平台、网络工程及应用方向平台、嵌入式系统设计及应用方向平台等三个专业方向平台。在专业方向平台课程中,除侧重点不同外,都具有计量测试特色,如软件测试与应用方向平台包含软件质量工程、软件测试技术、软件能力成熟度模型(CMM)等,嵌入式系统方向平台包含软件质量工程和嵌入式系统测试技术等。
③选修课:与质量测试领域、职业发展素质和一般工程方法相关的选修课。如计量学概论、产品质量工程概论、检测技术与仪器等,以增强学生的质量测试意识和职业素养。另外软件的测试的行业或领域非常强,掌握领域专业知识也是非常关键,我们通过聘请相关行业或领域的专家以技术讲座方式使学生初步掌握相关行业或领域知识,以避免学生缺乏领域知识。
④实践教学:根据软件测试人才能力素质的要求,我们设置了相应的实践教学体系,包括课程实验、课程设计和专业实践三个环节。课程实验主要让学生在真实或模拟的环境中进行大量操作、实践,熟悉各种测试软件和测试工具;课程设计通过安排小型的软件测试项目,让学生运用测试工具进行测试,锻炼学生的综合分析能力和综合运用知识的能力;专业实践结合毕业设计,一方面安排学生走出学校,参加实际的软件测试项目。另一方面我们专门设计针对电信/互联网服务和典型行业(金融、银行、保险等)等应用领域的软件测试和质量控制的实践项目,并在实践过程中模拟企业的质量管理体系,训练学生项目管理、团队合作、学习创新的能力。
另外,我们还与知名软件测试职业培训机构合作,建设校内培训基地,充分利用校内的实验条件、生源条件;培训机构的师资、技术、资金资源。通过合作办学,建立良好的测试环境(各种流行测试工具),引入科学、系统的课程体系,利用双方的互补资源优势,相互学习、协作、促进,实现双赢。同时与省内软件企业合作,建立校外实习、实训基地,学生在教师和企业专家的指导下,参与实际测试项目。与第三方测试机构合作,承接了力所能及的测试项目,实施了大学生科研计划。
(3)计算机学科和计量测试相关学科知识的相互渗透和融通
在软件质量测试应用型人才培养过程中,为了体现计量、质量、检测、标准、检验检疫等方面的办学特色,我们将“明确标准、注重量化、追求质量”渗透于人才培养的过程中,努力达到“标准先进、计量精确、质量可靠”的人才培养目标,突出计量测试特色,在研究计算机学科和计量测试相关学科各自特点基础上,提出了计量测试大学科意识,实现了两学科知识的相互渗透和融通。以选修课的形式在计算机专业开设如计量学概论、产品质量工程概论、检测技术与仪器、技术监督法律法规、质量管理体系认证、标准化概论等课程,将计量测试相关学科基础知识的渗透和融通到计算机学科,使计算机专业学生能建立起标准意识、质量意识和法制意识,对计量、标准、质量方面的问题更敏感、理解更到位、工作上手更快。近三年来,学生共有50余项与专业特色相关的专利申请被受理,参与的学生人数和专利项目申请数均列省属高校前茅。学生在各级各类学科性竞赛中所获得的奖项多数也与专业特色密切相关。
4结束语
中国计量学院属于行业性较强的学校,计量学本身涉及自然科学、人文社会科学和工程领域等多个方面,由计量派生出来的相关学科、领域和方向也在不断增加。在计量这个大框架下建立我们计算机专业特色,是我们培养能够适应21世纪科技、经济和社会发展需要,具有良好质量意识和软件测试技能的应用型人才的必然选择,开展具有计量特色的软件质量测试应用型人才的培养模式的研究是迫切的现实需要,这一能够满足国家对专业人才的需求,培养社会急需的软件度量与测试人才,也更能提高我校计算机专业在培养人才和为社会发展服务等方面的创造力和竞争力,也有助于提高我校计算机专业的水平和实力,争取更多的社会资源和企业支持。
参考文献
[1]林建忠.现代计量工程教育模式探索[J].高等工程教育研究,2007,(6):78-82.
“去年以来,不断有人告诉我,被检测者们正在研究反剽窃系统的运行规律,找出弱点,并把心得上传网络供人分享。”沈阳说,他们首先发现系统只能检测文本文件,数学公式等非文本格式可大胆抄袭。利用这一弱点,他们把文字拍成图片贴到论文电子版里,系统也拿它没办法。
由于拥有容量更为强大的备查论文数据库,去年底以来,由中国学术期刊电子杂志社与清华同方知网共同研发的学术不端检测软件被国内更多高校和期刊采用。但他们的软件,同样也面临被检测者各种反反剽窃行为。
目前软件检测出的全文或大段抄袭等简单抄袭少了,并不意味着抄袭行为减少了。
沈阳介绍,网络上出现了应对反剽窃检测的商业服务:被检测者提供论文和学校名称,提供商业服务者即能查出这所学校所用反剽软件的类型,是沈阳的还是清华同方的,即可提前检测出结果,并提示被检测者如何修改;被检测者再将修改过的论文提交学校,这样就检测不出问题。
“还有更绝的。一名博士生手眼通天,当被告知他的博士论文经检测为抄袭后,他托关系从国内各大期刊库撤掉电子版论文。”沈阳说,“这名‘干掉正版’的博士生确有其人,只是我不便透露更具体的身份特征。”
剽窃者、揭发剽窃者纷纷求助于沈阳
本报讯(记者万建辉)“现在看来,反剽窃远不只是一个技术问题。今年暴露出来的多起学术不端事件,有关部门曾来函征求我的意见。”
沈阳昨日介绍,他也做反剽窃方面的理论研究,包括民意分析和舆论分析研究;主管部门来函一般会向他了解反剽窃软件的检测效果,剽窃事件的性质状况、发展走势。
武汉多所高校请他去做反剽窃专题报告。甚至,被揭发者找他咨询采取何种应对措施、会产生何种结果。
沈阳说,今年,一名年轻官员的上任引起全国网友广泛关注,网友人肉搜索出他的毕业论文,并用反剽窃软件检测出抄袭部分。这名官员请人找到他,请他帮助分析事件可能的进展和结局、是否需要辞职等。
广州一所大学的一名女教师举报学校负责人博士论文抄袭。沈阳说,女教师曾打电话给他,希望他以自己开发的反剽窃软件检测出的客观结果声援她。
沈阳手中掌握10万剽窃者名单
本报讯(记者万建辉)在沈阳工作的武汉大学,校研究生院用的是清华同方的反剽窃软件;该校计算机学院、信息管理学院的研究生办公室和一个校办期刊社,仍在使用他的反剽窃软件。
1.1 软件测试的概念
软件测试是指在软件运行之前,对软件的产品介绍和代码进行审核,从而保障软件的正常运行。软件测试不仅代表软件系统出现问题的可能性,同时还表示软件能够完成预定功能的程度,这两部分对于软件测试都有重要的意义。
1.2 软件测试的特点
1.2.1软件测试的动态性
软件测试是在规定输入值的情况下运行的,是一种动态的检测软件的运行状态的过程。
1.2.2软件测试的有限性
在对软件进行测试的过程中,测试的次数是有限的,不可能无限制的测试下去,同时,整个测试过程还要具有可管理性,即在测试时需要平衡测试需求与测试资源之间的关系。
1.2.3软件测试的预测性
进行软件测试之前,应该判断测试的结果是否妥当,常常采用预示程序来预测运行的可能结果,但预测程序也是软件测试技术的一大难点。
2 软件测试技术的过程分析
2.1软件测试的方案
在进行软件测试之前,都需要制定一个合适有效的软件测试方案,以确定软件测试的目的和过程,为软件测试的完成提供一个清晰有效的目标。
2.2 软件测试的开发设计
软件测试设计就是在软件开发的过程中进行的软件质量测试工作,在测试时需要提供规范的应用说明、程序设计情况,同时,软件测试设计在软件测试过程中有着重要的作用。测试设计的基本步骤为:首先利用先进的技术手段设计分析样式,然后讨论测试结果,并做成有效的测试方案,最后确定每一项测试任务都完成了,从而保障测试结果的有效性。
2.3 软件测试的准备
在测试方案开始前,需要先进行测试准备,列举测试方案中所需要的重点问题,这些问题常常有测试数据集、驱动程序和实际执行测试所需的软件等,同时需要为整个测试过程寻找合适的测试环境和测试工具。
2.4 软件测试的实施
参照之前设计的软件测试方案,利用测试用例对软件测试的项目进行全面有效的测试,并将测试情况与实际运行情况对比起来研究,从而判断测试是否成功,并进行下一步测试工序。在测试的过程中对软件的质量问题进行记录,并进行有效的修改,修改之后再按照之前的测试步骤重新进行测试,观察问题是否会再次出现,从而确保软件的质量。同时,应制定合适的测试计划,定期将软件运行测试,以保障之前测试的问题不会在出现。每完成一个测试部分,比较整个运行结果与测试方案的不同之处,并针对不同之处进行有效的调整。
2.5 软件测试的报告
将软件测试阶段得到的运行结果拿来观察和处理,观察测试观点是否完整,确认方法是否有效,并依次评定软件测试过程中的测试用例和软件质量等级,并进行测试报告总结。
3 软件工程中存在的测试问题
软件工程出现后,软件的运行质量越来越受到人们的关注,软件测试技术也开始慢慢发展,但在软件工程中常常出现一些测试问题,导致软件的质量受到影响。下面笔者就软件工程中常见的测试问题进行阐述。
(1)目前很多软件开发公司没有比较正规的软件开发手段,没有产品说明书,因此,在进行软件测试时需要先利用试探性测试技术。而利用试探性测试技术需要先了解软件的特性,并对软件的运行情况进行有效的记录,全面描述软件的功能特点,然后应用常用的几种软件测试技术来找出软件的质量问题。但在这样的情况下,一些错误、非法的没有利用价值的数据容易被作为输入数据,这样测试软件的输出结果存在较大问题,对于软件测试的进行有较大的影响。
(2)在进行软件测试时,首先要对软件的逻辑流程进行了解,描述软件的详细状态,但在一些规模很大、结构复杂的软件测试中,了解软件的运行情况是很困难的,这时,就需要降低软件测试的状态以及数量。但是在测试中,必须对每种状态都进行测试,但在实际测试中往往忽略这一问题,这将会大大影响到软件测试的效果,并产生一定的后果。
4 计算机软件测试的常用技术
软件测试技术对于计算机软件行业的发展有重要的促进意义,关系到计算机软件的运行质量,同时,还能方便人们的日常生活。计算机软件测试主要有两种手段,即白盒测试和黑盒测试,下文笔者将对此进行阐述。
4.1 白盒测试
白盒测试即逻辑驱动测试或结构测试,该方法是对系统的内部构造进行测试,检测整个应用软件内部是否正常运行的手段,在测试中,把待测系统当作一开放的盒子,通过对系统的内部程序结构进行测试来检测它的逻辑路径,从而根据在不同区域的检测信息来测试软件的实际运行情况是否与预期结果相同。目前,采用白盒测试技术常用的方法有:基本路径测试法、逻辑覆盖法、静态结构分析法和代码检查法等。与其他的软件测试技术相比,白盒测试技术需要充分了解到系统的内部构造,以便对系统的全部逻辑路径进行检测。在应用这种测试技术时,首先要检查系统的内部构造,并从整个应用的逻辑来
统计检测数据。另外,白盒测试技术对于软件测试人员快速发现软件运行异常情况,提高软件的运行效率有重要的现实意义。 4.2 黑盒测试
中图分类号:TP434文献标识码:A文章编号:1672-7800(2012)010-0200-02
基金项目:铜仁学院2011年教学改革项目(2011)
作者简介:蒲天银(1974-),男,硕士,铜仁学院计算机科学系副教授,研究方向为项目管理、信息安全;饶正婵(1976-),女,硕士,铜仁学院计算机应用研究所讲师,研究方向为项目管理、数据挖掘。
0引言
当前,软件工程作为一个相对年轻的独立学科,在高校受到越来越多的关注,不仅如此,软件工程作为一种产业已成为软件发展的关键技术。因此,作为一名当代大学生,想要成为合格的信息技术人才,掌握一定的软件工程新技术、新方法是必不可少的。
随着现代计算机技术的飞速发展,软件业也得到了很快的提高,为跟上世界信息技术发展的步伐,从20世纪80年代起,我国大多高校在计算机科学与技术专业人才培养方案中开设了软件工程基础,此门课程一般安排在三年级进行,课程的开设对学生在大学四年的软件理论掌握中取得了不错的效果。但纵观近几年来高校的毕业设计可以看出,在实践性教学和教学效果检验等方面还存在着不少问题。课程教学中从教材的选用上看,重理论轻实践的现象比较突出,学生毕业后往往通过要用人单位长时间培训后才能适应岗位的要求,使得高校教育与社会的实际需求的脱节;造成了资源的严重浪费。
高校培养人才的目标是以社会需求为导向,计算机专业人才的培养也不过如此,学校的教育教学应该围绕这个导向定位来组织教学内容和配备教学资源。随着软件工程技术的发展,软件工程领域的教学内容不断丰富,教育教学手段日新月异,教学改革已势在必行。
1软件工程教学的现状概述
在计算机科学与技术本科专业的课程体系中,软件工程作为一门基础课程来开设,很多高校选择教材均为由清华大学出版社出版、张海藩教授编著的《软件工程导论》。教师在课程教学中,一般采用讲授与实训相结合的教学方法,即课堂上由教师讲授理论、原理,实训时由学生动手设计一个项目。由于该教材以理论内容为主,因此,该课程的教学存在诸多的问题,具体表现在:
(1)从教学内容上看,由于教材的局限性,目前的软件工程教学是以传统的教学方法为主,实验内容以生命周期法体系为主要内容,这样容易造成学生的学习时效性差,跟不上信息产业技术发展的步伐,大多新技术还没有传授给学生,特别是近几年新发展起来的构件技术、234建模技术。传统教学方式在课堂上主要讲授理论知识,学习者似乎能听懂,可听完后大部分学生还是似懂非懂。当学生在实训中进行设计时却不知从何入手,该运用什么知识、哪种方法。
(2)实践环节少且不够理想。总体来讲,目前在软件工程实训环节可供该课程选用的合适的项目不多,所以学生做实验所达到的效果与教学要求存在一定的差距。一方面是学生不能把理论知识有效地运用到实践活动中;另一方面学生没有真正掌握基础理论及运用理论的技能和方法。所以,在进行毕业论文设计时,不能将软件工程的理论充分运用到他们的设计实践中去,导致很多学生选题时无从下手,不知怎么做,大多学生即使选择了软件开发,但在开发的软件和撰写的文档在结构、内容等方面错误百出。
(3)教师问题。目前,除专门的软件工程学院的院校外,大多开设有计算机专业的综合院校软件工程课程的主讲教师本身也是一个问题。由于软件工程这门课程对授课教师的素质要求高,它不仅要求教师对工程内涵本身有深刻的理解,还要求教师必须要掌握一定的软件开发经验和一定的项目和工程背景,这样教师才能从自己的开发实践中理解软件工程的基本原理与方法,讲授时才能将理论与实践相结合,学生能直观地感觉到该门课程的重要性,从而产生强烈的学习兴趣。正是因为以往教学中存在的这些问题,导致教学效果不明显,并直接影响学生的就业竞争力。
2高校毕业设计现状
目前大多高校计算机专业毕业设计不很理想,具体表现在两个方面:
(1)从学生方面看,首先是学生入学后,通过3年的学习,学生在前三年级中一般都较为系统地学习了计算机软硬件方面的知识,并进行了实验、课程设计等多方面的训练。但由于大多实验、课程设计等实践训练属于考查范围,有一些学生抱着一种得过且过的心态,没有达到既定的学习目的,这样就造成既没有扎实的理论知识,也没有较强动手能力的尴尬局面。同时,目前大多高校将学生选题时间定在四年级第一学期,学生在导师的指导下准备毕业设计内容。但由于指导教师考虑到学生就业等实际情况,平时并没有对学生进行严格的时间要求和进度管理,很多学生直到毕业离校时才仓促完成任务,整个论文也是东拼西凑、质量不高。
(2)从指导教师方面看,首先是选题问题,指导老师把关不严,很多同学由于没有扎实的专业基础,30%左右的同学不敢选择设计类的问题,选择设计类的项目同学也存在问题,有的题目过大,如银行管理系统的开发,有的题目过小,如抢答器的设计;其次是指导过程不科学,在设计环节中,不论是软件开发还是硬件设计,大多同学只注重核心功能的实现,而忽略培养学生规范的设计过程及良好的设计习惯,使得毕业设计没达到对学生的锻炼价值。比如,在进行软件开发时只注重功能的实现,没有认真进行需求分析、设计方案的讨论、设计书的编写、编码风格的规范以及软件测试的要求。
3以毕业设计为导向,做好软件工程课程教学改革
3.1教学过程的正确引导
针对学生在毕业设计过程中存在的很多问题,作为教师如何将新的技术和方法传授给学生,使他们能真正掌握基本的软件工程的原理和方法是课程教学改革的核心内容。为此一般要求授课老师要能正确地把握目前软件工程的发展方向,掌握最新的软件开发技术,并能结合软件开发的实际例子,将该门课的精华有效地传授给学生。
3.2强化可行性分析与开题任务的结合
在学生毕业设计中,开题的任务是由指导教师与学生共同确定所选的毕业设计题目是否符合本科毕业设计基本要求。在软件开发过程中,可行性分析的主要任务是从经济、技术等方面分析拟将开发的系统在技术、花费财力、人力与物力等方面是否可行。首先,师生要分析所选的题目在法律上是否可行,有无违反国家的相关法律,有无违反当今社会的道德行为规范;其次,分析所选的题目在技术上是否可行,即所选的题目技术含量很高,现有市场还没有类似的产品,且该产品一旦开发成功,将带来巨大的收益;再次,如果该题目在法律上、技术上都是可行的,还应考虑经济上是否可行。
3.3将需求分析阶段在毕业设计过程中有效实施
软件需求分析的目的是澄清用户的要求,并把双方共同的理解明确地表达成一份书面文档——软件需求规格说明书。需求分析阶段对锻炼学生的沟通能力有很大的帮助,按照传统软件工程学的原理,需求分析的目的主要有3个:一是功能性需求分析,确定待开发软件需要哪些方面的功能;二是性能需求分析,确定待开发软件在性能方面有哪些具体的要求;三是数据需求分析,确定待开发软件在数据信息方面的需求。确定这3个需求的依据均源于对客户的了解,因此,需求分析的一个至关重要的任务便是与客户沟通。
在实际应用中,需求分析也是一个让人头疼的问题。用户的不配合是需求分析阶段的最大困难所在,在这种情况下,教学过程中可以考虑把学生分为若干小组,大家互相作为开发人员与用户,把即将完成的毕业设计题目作为项目,可以让学生身临其境地体会作为开发人员在需求分析阶段所应完成的任务,体会实际开发过程中用户以各种理由拒绝合作的无奈,以及应该以何种方式与客户沟通,如何调动客户的积极性与主动性。同时,也可以让学生体会作为客户与用户可以享受的权利及其应该承担的义务,使其走向软件编程的工作岗位时能更加懂得如何从客户与用户口中获取项目所需的功能、性能与数据。
3.4环环相扣,全面提升课堂教学的有效性
学生通过可行性分析、需求分析两个阶段的实践后,既学到了教材上的理论知识,又能与实践很好地结合起来,相信对课程教学已有了浓厚的兴趣。在接下来的设计环节中,作为教师要充分将工程体系的知识应用起来,结合现实生活中的工程问题举实例,让学生能主动地进入角色,处理好这些问题后,相信后面的问题就迎忍而解,既解决了理论课堂学习的枯燥无味,又帮助学生完成了毕业设计任务,全面提升了课堂教学的有效性。
参考文献:
[1]熊仕勇,张登国,黄星华.试论“软件工程”课程的实践性教学[J].重庆邮电大学学报:社会科学版,2007(6).
免责声明以上文章内容均来源于本站老师原创或网友上传,不代表本站观点,与本站立场无关,仅供学习和参考。本站不是任何杂志的官方网站,直投稿件和出版请联系出版社。