时间:2023-03-20 16:25:30
引言:易发表网凭借丰富的文秘实践,为您精心挑选了九篇软件测试论文范例。如需获取更多原创内容,可随时联系我们的客服老师。
1高效软件测试团队建设的可行性策略
1.1软件测试团队的特质建设
软件测试团队的素质建设对于整个软件工程质量而言具有非常重要的作用,人是测试工作中最具价值也是最重要的资源。因此,应该积极构建合格的、高质量的合作团队。(1)软件测试以及软件工程开发都需要程序员具备足够的自信心,对软件检测结构以及程序的缺陷要如实汇报。对于软件项目工程中出现的各种问题要认真处理,以此减少客户可能遇到的种种问题。(2)软件测试人员还要具备足够的怀疑精神,对可能存在的漏洞性错误要及时予以检测和纠正,进而提高其自我创造力。(3)软件测试团队要积极构建沟通协调能力。可以通过与客户进行必要的沟通来及时发现软件运行中存在的不足之处,其中测试者可以针对模拟环境下用户对于软件环境的应用情况进行科学分析,以此对软件编写过程和总结文档进行反复检查检测,提高软件的运行效率和正确性。(4)必备的检测技术能力。软件测试团队必须具备重要的专业技能,需要精通数据库、通信、网络、GUI测试、测试工具、自动化测试脚本和相关业务领域等,以此全面提升他们的测试能力和测试积极性。
1.2软件测试团队的制度性建设举措
一个优秀的软件测试团队必定拥有一套完善的团队管理制度,拥有明确的职责分工和高端测试人员,通过不断规范团队管理制度,做到扬长避短,及时提升整体测试质量。其中,软件测试团队需要不断加强汇报制度建设、工作总结制度建设、奖惩制度建设、测试审核制度建设、会议制度建设等,通过科学合理地分配职责关系来进一步强化团队成员的素质建设。在此过程中,还要注重对于资深测试人员的正确引导和建设,加强彼此间的沟通交流,不断丰富团队的测试知识库,通过科学吸收先进的测试管理知识来提升整体测试技能和技巧,以此减少开发团队协同工作中的一些领域瓶颈。
2结语
1.1测试设计重点偏离使用QC软件测试发现bug统计,如表1所示。根据表1工作量统计,25人/日为5个中级测试工程师一周的工作量,但是根据测试用例发现的bug数量仅占bug总量的44.18%,该比例显示测试用例的设计重点严重出现偏离。需要在测试用例设计的方向上进行调整。
1.2测试过程不可控QC软件测试计划中测试执行阶段为2013.3.8-2013.3.27,执行三轮测试;实际测试时间为2013.3.23-2013.4.20,执行测试三轮,计划完成时间严重偏离,表2为原计划与实际计划的对比。表2显示测试计划进行了较大调整,计划截止时间比原计划延迟23天。延迟原因经分析主要为开发提交测试时间延迟,开发提交版本问题较多,测试计划安排不合理,在两轮测试间为安排开发修改bug时间等。想要解决该问题,不仅需要对测试过程进行管理,同时也需要对开发提交的测试版本质量进行管理。
2软件质量管理改进对策
2.1需求工程管理软件开发过程中,需求不明确会带来需求的频繁变更,浪费了很多时间。针对此项问题,可对需求相关的活动进行统一管理,其需求管理结构图如图2所示。加强需求开发和需求管理的有机结合,不仅减少了需求的变更次数,还解决了工程师对需求不能理解到位的问题。需求开发和需求管理同样重要,只有两者互相配合才能做出用户满意的产品。
2.2立项管理为了使有限的资源发挥更高的价值,公司可通过立项管理流程进行立项管理,立项管理流程分为立项建议、立项评审和立项筹备三个阶段,其具体流程图3所示。
2.3测试流程管理针对测试流程中发现的问题,可对整体的测试流程做如下的改变:(1)测试部门可进行需求学习及需求讨论,对理解不清楚及有疑问的需求,由研发设计部门进行解答,研发设计部门不能解答的由其联系用户确认后作出解答;(2)需求确认后,针对系统功能和性能等指标,由测试工程师进行测试测用例的设计,设计从两个方面进行,一方面测试工程师根据需求进行测试用例的编写,另一方面测试工程师可根据用户反馈问题进行分析汇总;(3)使用QC功能测试工具对应用软件兼容性、操作系统兼容性进行测试,以便于使用测试工具完成多种环境下的功能和兼容性测试;(4)进行自由测试以便于对系统测试用例进行补充,分析测试用例未覆盖问题的原因;(5)定期分析缺陷库中的问题,分析问题产生的原因,进行测试用例的修改。
3结论
1Web应用程序性能测试实验
这部分实验目的是使学生熟练掌握使用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)具有高选择性的列是索引的好候选列,具有高密度的列是索引最糟糕的候选列。
3结语
关键词:计量特色;软件测试人才;课程体系;实践体系
目前,全国有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.
[2]康一梅,张永革,李志军等.嵌入式软件测试[M].北京:机械工业出版社,2008.
1.1阶段划分
软件的生命周期主要由软件定义、软件开发和软件维护三部分组成。对于软件的各个不同阶段,尽可能地将软件的开发设计工作划分为具体的任务,并且使任务之间的关联性降低,尽可能地相互独立,从而可以有效地降低软件开发的复杂性,利于软件开发工作的组织管理,简化其工作流程。
1.2软件定义时期
对软件进行定义的主要目的是明确软件开发工作的总目标和该软件工程的可行性,分析软件系统需要实现的具体功能及采取何种手段实现该功能,并对整个系统所需要的成本和资源进行初步的估算,设计出工程的进度表。该阶段的工作主要由系统分析员完成,其主要工作有:
(1)问题描述和可行性分析。
进行此阶段分析时,主要由软件系统的需求方和软件开发方相互协商,明确软件系统的目标及可行性。问题描述主要是明确需要解决什么问题,对问题进行准确的定位,将问题的困难程度、性质、规模及目标等内容以书面的形式进行描述,并上报给上级主管部门。对软件需求方的使用者进行走访,对问题的理解进行扼要的描述,并将写好的报告反馈给用户,查看问题的描述是否准确,统一双方的意见,直至达到最终的协议。对于可行性的分析,当前对于该定义并没有给出明确的定义,其主要目的是描述该系统是否值得去做,是否有合适的技术能够解决此问题。在该阶段的可行性相对比较简短,只是从总体上进行分析,并不涉及具体的问题。
(2)分析需求。
明确软件系统可行之后,就需要对软件的功能进行详细的分析,即:为了达到使用者的要求,软件系统必须能够做什么和具备哪些具体的功能。另外,用户当进行软件操作时,必须有个清晰的认识,利用该软件系统要达到哪个具体的目标。开发人员和使用者必须进行详细的、准确的沟通,利用数据模型、数据字典、数据流图及算法设计出整个软件系统的逻辑模型。在该阶段,必须让用户参加,并给出具体的意见。
1.3软件开发时期
对于软件的开发,主要由计划、设计、编码和测试四部分组成,计划和设计是系统设计,编码和测试是系统实现。软件的开发由计划开始,完善的计划可以为软件的开发节省大量的时间和精力;设计是在计划的基础上,进一步的完善,给出问题的每一个步骤,是对整个系统功能的完整描述;系统设计完成后,开始进行编码操作,即对问题的具体实现,在编码中,要符合编写规范的要求,保证程序的易读易维护;没有一个软件是一次编写成功的,需要反复的测试才行,当前的测试从小到大,分别是单元测试、集成测试和验收测试,每次测试都要进行详细的记录,为以后软件的维护打好基础。
1.4软件维护时期
如果说前面的步骤是软件的实现过程,那么软件的维护时期就是软件的使用过程,软件的维护时期最长,由于软件随着使用环境的不断变化,软件的功能逐渐不能满足用户的需求和无法正常使用,为了延长软件的使用寿命,必须对软件进行维护处理。对于软件的维护活动主要分为4类,分别是:改正性维护、完善性维护、适应性维护和预防性维护。根据维护的情况不同,每个维护都要有详细的报告,通过报告来进行制定维护计划、修改软件设计、代码修改和测试等一系列的过程。
2测试自动化
开发人员设计好程序之后,无法直接投入使用,需要对代码进行测试,而软件测试是一个非常烦琐的过程。据统计,软件工程人员无法及时交付软件的主要原因是在规定的时间内没有对软件进行完整的测试和修订。21世纪,时间就是金钱,时间就是企业的生命,软件投入市场越早,就越有可能提前掌握先机,从而获得更高的利润。传统的软件测试方法无疑已经无法适应当前IT行业的发展,自动化测试软件可以使测试流水化,使得在较短的时间内充分对软件进行测试,现在,越来越多的软件企业选择测试自动化。
2.1测试自动化的定义
当前,对于测试自动化的定义比较多,但总结起来为:能够通过自动化的测试工具,针对软件测试,在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。从而达到减轻手工测试的劳动量,节省测试时间的目的。测试自动化在很多情况下都具有非常大的使用价值,例如在进行脚本测试时,可以产生许多重复调用的代码,在进行压力测试时,可重用很多次该脚本。如果利用手工测试方式进行压力测试,那么可能要花费相当长的时间,而且有时有些软件的缺陷还不能及时地发现,测试自动化保证了软件的稳定性和准确性。
2.2测试自动化的生命周期
进行自动化测试的工具也是一种软件,有其自身的生命周期,主要分为需求分析、计划、设计、实现、集成、维护和终结等过程。对于需求分析阶段,主要是对测试的用例进行详细的分析,明确测试用例的可行性,考察用例是否可以重复利用,对测试有何价值;在计划阶段,设计测试的进度和生成相关的文档;设计主要是描述自动化测试的模块,而描述是对这些模块的实现;对写好的软件模块进行集成,生成相应的具有特定功能的测试包;最后对软件的测试自动化工具进行维护,随着时间的推移,结束自动化测试生命周期。
3测试自动化软件的实现
3.1需求分析阶段
在该阶段,测试工程师和手机终端使用者要一起参加需求分析的讨论,分析测试的环境和过程,测试不同的环境下手机的使用情况。在进行手机通信测试的需求分析里,假定使用300个测试用例,分析其自动化测试的流程,形成书面的需求规格说明文档,并进行专门的评审,对测试用例进行审查。
3.2计划阶段
主要完成计划进度表的建立。例如整个手机终端测试需要五周时间完成,计划和设计需要半周,开发和执行需要三周,测试需要一周半。在规划测试计划时,在对每一次进行操作进行相关文档的说明,其中文档的完成工作也需要在计划时间以内,建立和维护一个测试环境文档是非常重要的。
3.3设计阶段
对于手机通信系统来说,软件的升级不会带着新的错误,即功能是不变的,由于测试的脚本具有共用性,模块化的设计是非常有必要的。在设计的过程中,要注重命名规则,以免发生混淆,使得模块发生混乱。
3.4实现和集成阶段
实现主要是在设计的基础上,进行编码,最终完成软件,每次代码更改运行要记录初始状态和运行后状态,及时进行备份。对软件进行集成分块测试,将生成的测试包提交给组装集成测试人员,对其进行评审和验证,详细记录其结果。
3.5维护和终结阶段
软件自动化测试生成后,要根据使用环境和用户的不同进行维护处理,并不断对其进行改进,这个过程可以通过问题跟踪工具来完成。随着新技术的来临,软件会越来越不适应企业的要求,就要对其进行终结,重新研发新的测试软件。
4结语
1 关于计算机软件测试的介绍
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 黑盒测试
黑盒测试即功能测试,该方法是对软件产品的功能进行测试,从而观察软件能否正常运行的手段,在测试中,把测试系统看成封闭的黑盒子,不需要考虑整个软件系统的内部特征,只需要依靠传输数据来得出检测结果。黑盒测试主要对软件的界面和功能进行测试,仅仅只需要考虑系统的外部结构,从而达到有效进行软件测试的目的。同时,黑盒测试主要测试软件的功能,常常用于检测这样几种错误:运行界面、程序初始化和终止、数据库的访问情况、软件性能和功能等错误。在黑盒测试之前,需要采取合适有效的测试方案,以保障软件测试有计划的进行。相比其他的软件测试技术,黑盒测试操作方便,设计代码也很简单,能够从用户的角度出发去解决问题,并实现软件的功能。
1.软件开发类课程翻转课堂教学模式研究
2.浅谈软件项目开发过程中的需求分析
3.软件开发方法的创新发展过程研究
4.基于Java语言的安卓手机软件开发
5.软件开发的风险分析与控制
6.软件开发过程模型的发展
7.需求工程对于软件开发的重要性
8.软件复用技术及其在软件开发中的应用
9.试论VB编程语言在软件开发中的应用
10.软件开发的风险分析与控制
11.分析软件开发中数据库设计理论的实践
12.基于WBS-RBS的软件开发风险识别与控制
13.敏捷软件开发的双迭代模型
14.基于MATLAB的汽车制动系统设计与分析软件开发
15.软件开发劳动计量方法与软件成本估算
16.基于计算机软件开发的JAVA编程语言分析
17.一种以软件体系结构为中心的网构软件开发方法
18.基于构件的软件开发的方法与实践
19.ABC:基于体系结构、面向构件的软件开发方法
20.面向软件开发信息库的数据挖掘综述
21.浅谈三层架构在软件开发中的应用
22.使用开源软件进行软件开发的风险分析
23.汽车电子控制单元软件开发模式研究
24.软件开发与层次化思维方式
25.SQA规范对于教育软件开发的启示
26.基于证据理论的软件开发风险评估方法
27.软件开发人员绩效管理中的问题及对策
28.敏捷型软件开发方法与极限编程概述
29.信息化软件开发项目经理绩效考评研究
30.基于“众包”的软件开发模式
31.软件开发模型研究综述
32.支持第四代语言的并行进化式软件开发模型CESD
33.光滑粒子动力学核心算法与软件开发中的关键问题
34.面向重用的软件开发价值链
35.基于MVC模式的应用软件开发框架研究
36.支持模型驱动式软件开发的建模语言框架研究
37.3G智能终端软件开发实验教学改革的思考
38.软件开发国际合作模式研究
39.地理信息系统专业学生GIS软件开发能力的培养
40.有色Petri网在软件开发中的应用
41.浅谈软件开发的成本核算
42.一种高效率的软件开发方法——以用户为中心的软件开发方法(UCD)
43.软件开发成本估算技术综述
44.基坑双排桩支护结构设计计算软件开发及应用
45.软件构架设计在软件开发中的意义
46.面向软件开发信息库的数据挖掘综述
47.谈软件开发中的需求分析
48.浅谈插件化软件开发
49.计算机软件技术在植保软件开发中的应用
50.Onboard:以数据驱动的敏捷软件开发协同工具
51.软件开发综合能力培养的案例教学
52.软件配置管理在软件开发平台中的应用
53.软件开发成本估算模型的研究
54.软件开发绩效评价指标体系的构建
55.浅谈计算机软件开发技术的应用研究与趋势
56.军用软件开发工程化质量管理研究
57.计算机软件开发中的分层技术探讨
58.基于学生软件开发团队的沟通机制研究
59.项目管理在软件开发中的应用
60.面向农业软件开发的构件库研究与实现
61.搭建式GIS软件开发及其对软件工程的影响
62.软件开发过程中的质量管理探析
63.软件开发本体构建与模块化的应用研究
64.基于CDIO的高职软件开发专业课程体系设计
65.典型建筑火灾风险评估体系及其软件开发
66.有效的软件开发项目风险管理模型
67.框架技术在软件开发中的研究与实践
68.浅论新时期计算机软件开发技术的应用及发展趋势
69.基于软构件的软件开发框架研究
70.面向软件开发信息库的数据挖掘综述
71.模型驱动的软件开发模式研究
72.以《数据结构》为核心的软件开发课程群建设
73.护理信息网络化管理的研究与软件开发
74.分层技术在计算机软件开发中的应用
75.软件开发生命周期法比较之敏捷与传统
76.基于虚拟硬件在环的控制软件开发
77.项目管理在软件开发中的应用分析
78.项目管理在软件开发中的应用研究
79.软件开发中的设计原则
80.基于学习遗忘作用的人员调度实验设计及其软件开发
81.基于网络的可信软件大规模协同开发与演化
82.华池油田结垢预测及软件开发
83.探析计算机软件开发的规范化
84.软件开发自动化平台的研究与应用
85.架构和面向对象技术在PLC软件开发中的应用
86.国外XBRL软件开发技术比较及启示
87.企业软件开发标准化探讨
88.智能手机操作系统及其Google Android上的软件开发
89.浅析软件测试在软件开发中的重要意义——从软件功能测试的作用谈起
90.软件开发方法及其应用
91.使用嵌入式Linux操作系统进行软件开发的特点及优势
92.基于VB中MSComm控件的通信软件开发与实现
93.软件开发管理中的沟通与协调问题研究
94.基于Java语言的安卓软件开发的研究
95.关于计算机软件开发语言的研究
96.新时期计算机软件开发技术的应用研究
97.培养大学生软件开发创新能力的探索与实践
98.自适应多Agent系统的面向Agent软件开发方法学ODAM