前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇系统测试范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词 软件测试;软件质量;模拟器
中图分类号TN911 文献标识码A 文章编号 1674-6708(2013)95-0224-02
随着信息技术与信息产业的发展,计算机软件广泛地渗入到了我们的工作和生活中,各种产品和设备与计算机软件的联系也越来越紧密。计算机软件的质量优劣也日益受到人们的重视。软件测试是保证软件质量的重要手段。在软件工程中,软件测试是软件生命周期中一项非常重要的工作,也是一项非常复杂的工作。
1 模拟器软件的开发与测试
软件是模拟器的重要组成部分,软件的质量直接影响着模拟器的质量。软件如果存在缺陷或故障,将会导致模拟器在使用过程中发生错误,对用户产生各种影响。模拟器软件的开发过程一般包括制定计划、需求分析、软件设计、软件编码、软件测试、运行维护等6个阶段。软件测试是模拟器软件开发过程中的一个阶段,是保证模拟器软件质量的重要方法和手段。软件测试技术可分为静态测试与动态测试。静态测试是一种不通过执行程序而进行测试的技术,关键是检查软件的表示和描述是否一致,有无冲突或歧义。动态测试通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序运行的表象。动态测试一般分为白盒法测试和黑盒法测试。白盒法测试对象是源程序,依据程序内部的逻辑结构来发现编程错误、结构错误和数据错误。黑盒法是把测试对象看成一个黑盒子,依据软件的功能或软件行为描述,发现软件的接口、功能和结构错误。
模拟器的软件测试是软件开发过程中的一个阶段,但不是一个完全独立的阶段,而是贯穿于软件开发整个过程中的一个重要环节。模拟器软件测试过程由单元测试、集成测试、系统测试和验收测试等阶段组成,整个测试过程与如图1所示。其中,系统测试是整个软件测试过程中非常重要的测试阶段,是软件的全部功能在实际运行环境中进行验证和确认的测试,也是用户进行验收前的测试。
2模拟器软件系统测试的目的和内容
模拟器软件测试是一项非常复杂的工作,首先要按照详细设计的要求对所有模块的功能、性能、接口等进行单元测试,发现每个程序模块内部可能存在的差错,确保每个模块单元工作正常。在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装成系统进行集成测试,发现与接口有关的各种错误,确保各单元模块集成系统后能够按设计要求协作运行,并确保增量行为的正确性。
模拟器软件的系统测试,就是将已经过集成测试的模拟器软件和其它支持软件安装在模拟器的专用计算机上,并与模拟器的硬件设备、人员等所有系统元素结合在一起,在实际的运行环境下,对模拟器软件进行全面测试。通过对模拟器软件的需求定义进行比较,找出软件与需求定义不相符之处,通过对模拟器进行一系列严格测试来发现软件中潜在的错误和缺陷,以确保模拟器交付给用户后能够正常使用。
模拟器软件系统测试包含功能性测试和非功能性测试两类测试内容。功能性测试的目的是测试软件的主要功能与用户的需求是否一致,主要进行训练环境设置功能测试、训练功能测试、训练评估功能测试。非功能性测试主要测试软件的性能、可靠性、健壮性是否满足设计要求,主要进行性能测试、可靠性测试、易用性测试。模拟器软件的系统测试主要采用黑盒测试技术中的因果图、决策表、错误推测等测试方法。
3 模拟器软件的功能性测试
功能测试不考虑模拟器软件的内部结构和处理过程,通常在程序的界面处进行测试,测试软件是否能够按照需求的规定正常运行,是否能够实现与需求一致的所有功能,发现软件与需求定义不相符之处和潜在的错误与缺陷。模拟器软件的功能性测试主要进行训练环境设置功能测试、训练功能测试和训练评估程序功能测试。
3.1 训练环境设置功能测试
在训练开始前模拟器要进行训练环境设置,训练环境包括地理地形、气象条件、各种设置、各类模型数据等。训练环境设置的功能测试用例应当按照软件需求进行设计,要考虑到不同训练环境的各种组合情况,测试目的就是核实在不同的环境设置时数据载入是否正确、是否完整,是否完全符合设计要求。
3.2 训练功能测试
模拟器的训练功能就是在各种操作方式(正确或错误)条件下仿真装备的真实反应(状态和过程)。不同的操作方式就是按照不同的操作顺序将模拟器不同设备面板的各种操作器件置于不同的位置状态,所有操作器件不同顺序的不同位置状态可以产生数量很大的各种条件的输入组合。仿真装备的真实反应就是模拟器软件的输出,就是启动不同的仿真过程、或改变仿真进程、或使模拟器显示器件显示不同内容与状态、或导致三维场景的不同改变。对于模拟器软件这种多条件组合输入、产生多动作输出的复杂功能测试使用因果图(逻辑模型)方法设计测试用例比较合适。
采用因果图方法设计模拟器软件功能测试用例的步骤:首先确定模拟器软件功能中的原因和结果,确定原因和结果之间的逻辑关系,根据这些关系画出因果图。确定因果图中的各个约束。然后把因果图转换为决策表。根据决策表设计测试用例。
由于模拟器软件的功能测试比较复杂,应当采用错误推测法作为辅助测试方法,依靠测试人员的经验和直觉推测软件功能可能存在的各种错误从而有针对性地设计测试用例。
根据测试用例进行训练功能测试,检查在各种操作方式条件下软件的训练仿真过程以及模拟器表象及状态是否与设计要求完全一致、是否存在错误和潜在的缺陷。
3.3 训练评估程序的功能测试
对训练过程进行评估是模拟器的一个重要功能。训练环境的设置数据和训练过程中对模拟器的所有操作过程都按照时间先后以规定的数据格式完整地记录在操作过程的文件中。训练评估程序的功能就是将记录的操作过程文件作为输入数据,经过逻辑分析和数据计算,输出此次训练的成绩和训练过程的评语。由于训练评估程序的输入是整个训练过程的全部操作,所有操作器件产生的操作顺序组合将达到非常大的数目,实际中可能无法完成,在设计测试用例时采用等价类技术对操作过程的各种顺序组合进行划分,从划分的每个区域内选取有代表性的操作过程作为测试用例。测试的目的就是检查对不同的操作过程输出的成绩和评语是否正确,是否与专家评定结果一致。
4 模拟器软件的非功能性测试
模拟器软件的非功能性测试主要内容包括性能测试、可靠性测试、易用性测试。
4.1 性能测试
性能测试主要检验模拟器软件是否达到需求规定的各类性能指标,并满足一些性能相关的约束和限制条件。软件运行的实时性是非常重要的性能指标。模拟器软件的实时性测试主要包括操作响应时间的测试以及三维场景显示的流畅与连续性测试。操作的响应时间应当与装备的响应时间一致。场景的流畅要符合人们的视觉感受,如果三维场景绘制复杂、数据量大时会导致显示帧频下降,人眼就会感到画面间断、停顿,显示帧频是衡量流畅性的指标。三维场景的流畅性与场景中三维实体的数量、复杂程度、分辨率,以及三维场景特效(如烟雾)等有直接关系,应当以场景实体和特效达到或接近最苛刻的过程进行场景显示的实时性测试。
4.2 可靠性测试
软件的可靠性也叫做稳定性,是指在负载多变的情况下或长时间运行的情况下模拟器软件运行的稳定程度。模拟器软件的可靠性测试可以使用重复测试、并发测试、随机变化以及长时间不间断运行等方法。重复测试就是对某一器件进行重复操作,测试模拟器能否持续不断地仿真设备的真实运行效果;并发测试就是同时对多个器件进行操作,测试模拟器能否产生与设备同样的状态;随机变化就是不按照正常的操作顺序,而是设计非常规的随机操作顺序或对重复和并发测试手段进行随机组合,以获得最佳的测试效果。按照设计要求让模拟器软件长时间不间断地运行,测试软件是否运行正常、功能是否出错。
4.3 易用性测试
模拟器软件的易用性主要是指训练环境设置、成绩评估等环节的界面易懂、选择准确、操作方便。界面的设计要尽量符合人们的习惯和思维方式,按钮名称用词准确、没有歧义,同一界面的按钮要易于区分,用户能够进行正确理解界面的功能并能够进行正确操作。用户能够终止进程,重新返回、重新选择。通过对界面的操作来测试模拟器软件的易用性。
5 结论
系统测试是软件交给用户进行验收测试的最后一道关口,对保证软件的质量起着非常重要的作用。系统测试也是测试人员需要花大量的时间和精力才能完成的工作,虽然有些测试工作可以使用软件测试工具来完成,但由于每一种测试工具都有其特定领域的应用,都有其自身的很多局限性,软件测试工具本身不具备创造力,不能设计测试用例,不能处理意外事件,使用测试工具发现的缺陷也没有手工测试发现的多。系统测试中的很多工作主要还是靠人完成的,测试人员的能力和素质最终决定了测试结果的好坏。根据系统测试结果和系统测试分析报告,在验收测试前完善软件功能、纠正软件错误、消除软件潜在的缺陷,提高软件质量。
参考文献
[1]赵斌.软件测试技术经典教程 [M].2版.北京:科学出版社,2011.
[2]李海生,郭锐.软件测试技术案例教程[M].北京:清华大学出版社,2012.
【关键词】系统测试;信息系统;监理;要点
中图分类号:P208 文献标识码:A 文章编号:
前言
随着我国信息化工程的加速推进,在项目的信息化过程中引入了第三方监理。其主要职能是对软件信息系统进行监理工作。主要负责测试系统,达到项目验收的目的,在监理测试信息系统的过程中,系统测试工作的规范化,标准化,科学化,有利于信息系统测试结果的准确性的提高。本文针对信息系统测试中监理的要点进行分析,指出了监理工作的重点及重要性。
二、信息系统测试的流程和关注点
1.信息系统项目测试的流程
从信息系统监理的角度,信息系统项目中测试的流程基本分两步进行,第一步,承建单位进行的测试;第二步,项目小组(建设单位、监理单位、承建单位)进行的测试。
图1 信息系统项目测试的流程
2.系统测试的关注点
(一) 信息系统的类型
信息系统,从项目建设的角度可以分为纯开发系统和二次开发配置系统。纯开发系统是指根据用户需求,采用某种编程语言(如Java、JSP)和某种开发工具(如eclipse),从零基础开始编写代码实现的系统。二次开发配置系统是指在成品软件(如Oracle DIM、Oracle BIEE、Oracle CRM、Oracle EBS、Oracle iLearning等)的基础上,根据用户需求,进行配置开发实现的系统。
(二)纯开发系统
纯开发系统的质量与开发人员的技术水平、开发风格、对系统需求目标的理解等因素有很密切的关系,导致纯开发系统的测试工作任务繁重,其关注点也很多、很细。从监理的角度,假定系统基本包含用户需求的所有功能点,纯开发系统测试时的关注点,可以概括为:(1)系统界面布局的合理性、美观性;(2)系统每个组件、控件的有效性、合理性;(3)系统流程逻辑的合理性;(4)具体功能的实现方式的最优性;(5)开发代码的可阅读性等。
(三)二次开发配置系统
二次开发配置系统的质量部分取决于所基于的软件产品的质量。进行二次开发配置系统测试时的关注点,可以概括为:(1)系统组件、控件的有效性;(2)系统流程逻辑的合理性等。
与纯开发系统的区别,主要体现在(1)系统界面的整体布局基于成品软件产品,细节部分可以二次干预;(2)系统组件、控件的合理性也基于成品软件产品,不建议二次干预(系统升级后,一切恢复为成品软件原始状态);(3)编写开发代码的工作量比纯开发系统的工作量少。
系统测试中监理要点分析
1.信息系统测试中监理的工作
(一)审核承建单位的单元测试报告、集成测试报告、自测报告(总集成测试报告)及回归测试报告;
(二)审核承建单位提交的系统测试计划、系统测试方案(包含测试用例);
(三)根据测试计划和测试方案,制定系统测试记录表,包括功能测试记录表、性能测试记录表、回归测试记录表,三方讨论确认后执行;
(四)协助业主方、确定性能测试指标,三方签字确认后执行;
(五)根据测试记录表,出具测试结果分析报告(功能测试结果分析报告、性能测试结果分析报告、回归测试结果分析报告),其中,功能测试结果分析报告和性能测试结果分析报告作为回归测试的依据;
(六)汇总测试结果分析报告,出具初验系统测试报告。
2.平台的系统测试
平台经过需求调研分析、概要设计、详细设计、二次开发配置、差异化分析及修正、自测等阶段之后进入项目初验阶段,承建方提交初验申请,批准后,业主方、监理方、承建方组成平台初验的系统测试小组对平台进行系统测试,包括功能测试、性能测试及回归测试。
(一) 功能测试阶段
平台的系统测试的功能测试部分的流程,可以概括为:
(1)监理方根据承建方提交的测试方案,制定《功能测试记录表》包含需求分析说明书中的所有功能点和项目合同文件中的所有功能模块;
(2)按照测试方案(含测试用例),采用手动测试的方式,一边测试一边记录测试情况;
(3)监理方对功能测试记录表进行分析,形成《功能测试结果分析报告》,包含通过测试的功能点及模块、未通过测试的功能点及模块、计划完成功能点及模块数与实际完成功能点及模块数的比较、存在的问题及建议;
(4)承建方根据功能测试结果分析报告,制定《回归测试记录》确定初验阶段回归测试的内容及终验时需跟进的内容,三方讨论通过后执行。
(二)性能测试阶段
平台的系统测试的性能测试部分分别采用人工方式和工具测试两种方式进行。该阶段的流程,可以概括为:
(1)测试小组讨论确定《性能测试指标》,包括对CPU利用率(<=80%)、在CPU利用率允许范围内的最大并发用户数、吞吐量、疲劳强度(12小时)、响应时间、内存页交换率等指标的要求规定;
(2)监理方根据承建方提交的测试方案,制定《性能测试记录表》包含功能性、可靠性、易用性、效率、可维护性、可移植性六个方面;
(3)在功能测试完成时采用人工方式,进行以上六个方面的性能测试,填写性能测试记录表;
(4)监理方汇总性能测试记录表,形成《性能测试结果报告》;
(5)根据性能测试指标,采用工具测试的方式,对平台进行负载压力测试,生成测试报表;
(6)承建方对测试报表进行分析,形成《性能测试分析报告》,提交监理方审核,审核通过后性能测试结束。
(三)回归测试阶段
平台的系统测试的回归测试主要是指对功能测试的回归测试,该阶段的流程,可以概括为:
(1)按照测试方案和《回归测试记录》中确定的内容对平台进行回归测试,并将结果记录在回归测试记录中;
(2)监理方对回归测试记录结果进行分析,形成《回归测试结果分析报告》,包括本次通过测试的内容、还需改进在终验时跟进的内容、在用户培训时需重点跟踪的内容、平台上线后需进行深化的内容;
(3)将回归测试结果分析报告和回归测试记录中约定的需在后期跟进的内容汇总整理形成《工程备忘录》,作为对项目初验的补充。
(四)系统测试报告
平台的系统测试u引经历功能测试、性能测试及回归测试之后基本结束,监理方汇总整个测试过程中产生的文档,形成《系统测试报告》及附件,附件包括《功能测试结果分析报告》、《性能测试指标》、《性能测试结果报告》、《性能测试分析报告》及测试报表、《回归测试结果分析报告》、《工程备忘录》。
四.系统试运行中监理的工作要点
系统试运行是为了检查系统的稳定性、适用性等。一般情况下监理方在这个阶段的主要工作有:
1.审核竣工文档资料的完整性、可读性及一致性;
2.审核软件环境配置与设计方案的符合性;
3.检测验证系统功能性能与合同的符合性;
4.检查人员培训计划落实情况;
5.出具阶段性验收报告;
6.帮助用户制定系统运行管理规章制度;
7.在保修期内定期或不定期对项目进行质量检查、督促承建方按合同要求进行维护。
本阶段,软件开发的工作告一段落,重点在于解决试运行工作中暴露出来的各种问题,和系统交付用户前的各项准备工作。一般情况下, 目前业内第三方软件功能、性能测试均在本阶段进行。
五、结束语
信息系统监测监理工作是一份技术含量高,智力高等优质素质的工作,他是多种科学领域综合交叉的产业,软件工程监理是一门技术含量高,智力、知识密集型的产业,信息系统监测是多种科学技术领域的综合交叉的产业,涉及到国民经济的各个领域,因此,本文着重分析系统监测监理的工作要点,有助于监理们更清晰的把握工作职责,让系统检测工作得到有的放矢的开展。
参考文献:
关键词:web测试;测试技术
在一个软件项目开发中,系统测试是保证整体项目质量的重要一环,基于Web的系统测试与传统的软件测试既有相似之处,又有不同的地方,对软件测试提出了新的挑战。本文就笔者开发的工资查询系统的测试技术及使用的相应的自动测试工具做一个简要的介绍。
1网站功能测试
1.1.测试环境配置
本次测试使用了多台计算机,已装好Windows系统。选择其中一台作为服务器,将系统运行所需的软件安装完毕。
1.2.表单测试
用户提交信息时需要使用表单操作,在此测试中利用两台计算机检查各个模块之间功能的实现,一台为已安装好子系统的服务器,另一台为客户机。首先测试教师用户模块,在客户机上访问服务器系统首页执行用户注册、个人资料填写,接着退出系统,然后用此注册名、密码登录,登录成功看到相应的工资明细及各项津贴。同样用错误的注册名、密码登录,系统显示“用户名或密码错误”则返回到首页,重新输入用户名和密码进入。同样对财务管理人员模块测试,测试结果正常。
2系统联合测试
将系统集成为完整的网上工资查询管理系统,通过联合测试来检验系统的耦合性,以及功能上和性能上是否满足设计目标。设计测试范例如下:
2.1.测试范例A
查看页面链接是否有不可达现象。测试工具选择Xenu Link Sleuth,这是个功能强大的检查网站死链接的软件,可以分别列出网站的活链接以及死链接,连转向链接都分析得一清二楚;支持多线程,可以把检查结果存储成文本文件或网页文件。启动软件在其File菜单下打开Check URL选项,在What address do you want to check?下拉菜单中填入测试URL:localhost:8080/myweb/index.jsp执行测试。测试结果如图2-1所示。
图2.1页面链接测试
图中Address表示链接地址,Status显示链接状态,如发现死链接将会以红色字体显示出来。在测试中发现了死链接,这是由于在编写页面时链接地址写错造成的,修改后页面链接测试显示正常。测试表明网上工资查询系统不存在死链接问题,运行正常。
2.2.测试范例B
进行服务器的压力并发测试,找出服务器能够支持的最大客户端数。测试内容为系统压力负载测试,测试估算的依据是:假设在实际环境中,用户只启用一个服务器进行所有的业务处理。方法是:按照正常业务压力估算值的1~10倍进行测试,考察服务器的运行情况。本次测试使用的工具是JMeter。JMeter是Apache组织的开放源代码项目,用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力、或者分析他们提供的服务在不同负载条件下的总性能情况,使用方法很简单,启动服务器,将JMeter下载解压到目录,运行bin中的jmeter.bat就可以使用。本次使用jakarta-jmeter-2.2版本。具体测试步骤如下:
(1)建立一个测试计划(Test Plan),添加测试线程组:线程数为10;同时并发请求为3;循环次数为5。
(2)添加HTTP Request Defaults,设置参数Name:HTTP Request;server name or ip:127.0.0.1; port number:8080。
(3)添加HTTP Request,设置参数Name:HTTP Request;path:/myweb/index.jsp。
(4)添加Graph Results执行后结果如图2.2:
图2.2负载并发测试
说明:本测试使用线程数为10;同时并发请求为3;循环次数为5。平均响应时间(Average)为24ms;中位数(Median)即50%用户的响应时间为16ms;吞吐量(Throughtput)默认为每秒完成的请求数502.52/minute。数据显示本查询系统符合测试要求。
3系统测试中遇到的问题及解决方法讨论
3.1页面乱码问题
在JSP开发过程中,当数据从数据库读出返回到WEB浏览器中时,中文字符变成了乱码,经过查找和分析,发现其原因是由于数据库、Java和JSP文件之间的字符编码差异造成的。当数据存取到数据库时采用统一的ISO-8859-1字符集,而Java程序在处理字符时默认采用的也是ISO-8859-1字符集,所以在数据添加的时候Java和数据库都是以ISO-8859-1方式处理的,这样是不会有乱码问题的。但是当从数据库读取数据时就会出现乱码问题,因为读出的数据是以ISO-8859-1字符集编码的,而JSP文件头中会加入这条语句,这说明页面采用的是GB2312字符集显示,这样就和读出的数据不一样了。页面显示的就是从数据库中读出的字符乱码,解决的方法就是转码,从ISO-8859-1转成GB2312,就可以正常显示了。这个问题可以通过编写一个转码类来解决,代码如下:
try{
关键词:构件化;软件开发;过程;开发实例;系统测试技术;构件测试方法;问题
中图分类号:TP311文献标识码:A文章编号:1007-9599 (2012) 03-0000-02
Component-based Software Development and System Testing TechnologyExploration
Ye Wei
(Ningbo Dahongying University,Ningbo315175,China)
Abstract:Along with the social demand for software continues to increase,as well as the difficulty and cost of software development increase,the technology of component-based software development and system testing is more extensive,component-based software development process to explore,while the use a development instance,the last component-based software system testing and component testing methods,
and come to the problems in the testing techniques.
Keywords:Component-based;Software development;Process;Development instance;System testing technology;Component test methods;Problem
近年来由于软件系统困难度及复杂性不断加大,以及不断增加的软件开发规模,同时软件开发机构不仅对开发软件的成本有了日益增高的要求,还对开发周期提出更多要求。当软件开发面向对象分析以及设计方法以后,构件化的软件开发形式已变为新发展趋势。把外部开发的构件集成至实际具体应用中,进而面向固定应用的软件系统得以合理构建,对软件集成以及重用产生相当重要的影响,其已变为目前软件研究领域的热点以及主流技术。另外在构件应用前进行相关测试,也被实践证明了其正确性。
一、构件化软件开发过程分析
对于基于构件的开发,其指开发软件系统的时候,把这个过程视为基于体系结构指导,合理运用构件组装形式,进行软件系统开发的一种软件开发方法。下述的四个阶段构成了构件化软件开发过程。
第一个阶段就是进行问题域分析与建模的阶段。针对具体的问题情形,合理实施分析以及建模,与此同时,能够利用合适的UML模型进行表示说明。
第二个阶段就是求解域模型设计阶段。针对问题域,合理实施分析建模,随后得到求解域模型,就是系统需要的构件以及系统的体系结构。针对那些可以进行复用的构件,对其接口进行合理分析,然后确认是否应该进行扩展,要是增加一些新的构件,进行恰当的分析设计,进而保证构件可以达到求解域的需求。还要尽可能地保证构件有着可复用性。
第三个阶段就是构件的开发及组装阶段。在构件库内,进行可以达到需求构件的选用,并对其接口进行扩展,使之于目前工程相适应;针对新研发出来的软件构件,可以把它储存到构件库内,保证日后的方便复制使用,还应把它运用到目前的工程里[1]。组装完成后,完整的系统便得出,进行测试合格之后,就能够运行。
最后阶段就是应用系统的演化阶段。针对构件的应用系统的演化,换句话说就是构件的替换、升级以及扩充的过程,按照具体的运行效果,同时根据用户的实际要求,合理调整软件,以保证期对新的环境的适应性。
二、开发实例分析
当进行某个系统开发的时候,积极采用构件复用技术,进而确保权限配置管理功能的实现。通过合理的分析,对于系统的权限管理,“用户-角色-功能”方式得以确定,其为基于角色的访问控制模式,对已有构件的复用可以确保此功能的合理实现。
角色管理以及用户管理构件、角色节点配置构件、节点管理构件及用户角色配置构件,这五个构件都存在于构件库中,其中角色管理构件对系统制定的角色进行维护,与此同时就角色的名称以及描述等信息进行合理管理;用户管理构件则是对一个系统用户信息进行管理的,主要由登陆名、登陆密码构成的;对于角色节点配置构件,其重点应用在进行节点与角色之间对应关系的配置,保证一个角色能够显示几个功能节点的制定,进而间接的对某个角色具有的功能进行合理限定;节点管理构件主要作用在管理系统功能树上的节点中;用户角色配置构件则用于用户和角色对应关系的配置。以上五个构件不是单独运行的,而是相互合作的,正是由于它们的互相合作才使系统中权限管理的相关功能得以实现。
三、构件化软件系统测试技术研究
由于构件自身具有的特点,实施测试人员主要由构件的开发方以及构件的使用方来组成的,由于他们在测试中占据不同的立场,在实施测试的内容方面多少会存在一定的差异性:一是测试目的是不相同的,构件的开发方对构件的所有功能进行测试,构件使用方则更多的关心与其有关部分的功能。二是使用的环境存在差异性;三是具有的资源存在差异性,对于构件开发方,其对构件源代码有着一定拥有权,但是对于构件的使用方,只具有构件的可执行代码;于是,当对构件软件进行实施测试时,要分别站在构件的开发方以及构件使用方等两个角度上展开[2]。基于构件的使用方角度,测试方法是通过测试构件类型进而得出,具有两种主要类型的构件:首先源代码不确定,只给予使用方测试的信息当作所提供服务的COTS构件;另外一种是源代码具有可访问性的构件。当构件类型不同时,对测试方法的选用也是不同的。
(一)对构件测试方法的分析
目前,对构件的测试主要是通过以下几个方法:
1.基于构件使用规范说明的测试。以下方法都与构件开发方有着一定联系,本方法按照构件运用方就应用环境与规范给予的数据当作测试用例,只局限于黑盒测试中来使用。
2.内置测试。对于构件开发方,他们把有着可执行性的测试用例内置于构件内,同时当作构件的常用功能,在构件集成于实际应用环境的情况下,对其中测试用例进行运行,进而进行集成测试;
3.元数据。针对在集成测试的时候,构件信息缺乏等一些问题,构件开发方将关于构件的基本信息通过元数据这一合理形式,给予构件测试或者使用方,确保测试顺利地实施,提升构件的可测试性是它的核心内容;
4.可测试体系结构。由构件开发方会提供与构件相配套的可测试体系,这样构件使用方在实施测试的情况下,能对测试用例进行直接执行,和上述各个方法相比,不同的是,该测试信息通过规范的形式附加于构件之上,当运行的时候,没有占用内存[3]。
5.证明策略。一般情况下,由于构件证明不同的承担方,构件证明主要包括以下几类:首先是构件使用方构件证明,其次是第三方构件证明,最后为构件开发方构件证明。
(二)构件测试技术中存在的一些主要问题
对于构件集成测试,很难对其实施,主要有两方面的原因:异构性的存在以及相关信息的缺少。针对异构性,其表现为:同一个构件处于相同规范下,具有不相同的实现方法;不相同的构件能使用不同平台的不同程序语言进行实现;由于构件使用方与开发方两方很少进行交换信息,便导致了信息缺乏,构件开发方主要对开发构件的应用环境没有足够了解,所以,它进行的构件测试只可以面对假设的应用环境,但是实际环境和假设的环境之间一定具有差别,在实际的应用中,各个构件在动态交互过程中可能会出现数据交换不能有效兼容等问题。从另一方面,构件的源代码因为相对构件运用方法有着某些未知性,于是,对其实施静态分析是很难进行的。更别说对相关数据依赖以及控制依赖关系的获得,进行有关测试用例的构造,进行测试,确认出进行测试需要的充分性准则是很难的。所以,在构件测试技术中,应该考虑以下几个问题:
1.怎样利用系统方法对测试驱动程序与插针进行构建。对于构件测试驱动程序,其一定是基于脚本的程序,同时仅仅对其黑盒功能进行执行。主要有基于场景以及规范的测试驱动程序;各个测试探针进行构件行为或者黑盒功能的合理模拟,在当前,还是主要通过基于操作脚本以及基于模型的方法。
2.怎样合理构造出可重用的构件。就是开发系统方法以及工具安装可重用的测试程序,进而进行各种测试资源的存储及管理,主要有测试脚本、测试用例以及数据[4]。在当今,两个方向较为突出,一个为于构件内部中进行构件测试的创建,内置测试就是实例;另外方向是使用可直接插拔技术进行一套测试程序的创建,不仅牵涉了测试访问接口以及标准化测试信息格式,还牵涉到测试数据库模式与定义以及开发新的可插拔技术支持构件单元测试。
3.怎样正确进行可重用及通用的构件测试平台的构建。在一般情况下,测试检索以及执行、测试结果检查以及报告组成了测试执行环境。此测试平台可以根据不同语言及不同技术开发实现的构件是它的主要问题。
4.怎样合理进行可测试构件的构建。其牵涉到三个问题,就是定义及设计可测构件的测试接口与公共结构、开发系统方法进行可测构件的构建、最小化系统资源及开销。
四、总结
由于社会对软件的需求一直增加,软件复杂度及规模一直加大,因此,人们就不断探索创新软件开发技术,进而满足软件发展的需要。对于构件技术,其要经过创建及复用构件,还要通过组装构件保证软件系统开发的完成,能使系统的开发效率提高,系统的开发成本还减少,进而达到软件复用的要求。于是,构件化的软件开发方法能够作为一种有效途径,使软件危机得以解决。与此同时,更要引起构件测试技术中的一些主要问题。
参考文献:
[1]梅宏,杨芙清.构件化软件设计与实现[M].北京:清华大学出版社,2008
[2]许帧.基于构件的软件开发方法及实现[J].软件导刊,2009,11:17-19
关键词:嵌入式测试;课程分析;教学方法
中图分类号:TP3-4
信息技术和网络技术的飞跃发展,我们已经进入后PC时代。而嵌入式系统可谓是后PC时代的代表,嵌入式技术以其灵活、高效和性价比高等诸多优势,被广泛应用于各项领域,从家庭的洗衣机、电冰箱、空调、小汽车,到办公室里的远程会议系统等,这些都属于可以使用嵌入式技术进行开发和改造的产品。因为嵌入式系统经常应用于对可靠性和稳定性要求很高的领域,所以对于嵌入式系统的测试显得尤为重要,因此嵌入式系统测试技术也是当前计算领域研究的热点。
1 开设《嵌入式系统测试》课程的背景与意义
嵌入式系统作为现代科技高速发展的产物,渗透到我们生活的各方各面,发挥着重要作用。随着我国嵌入式产品的快速发展,人们对于产品的性能要求越来越多,稳定性也要求越来越高。为满足这些需求,越来越多的人意识到嵌入式系统测试的重要性,这也促使国内对于嵌入式系统测试人才的需求也越来越多,嵌入式系统测试也将成为我国现在乃至未来最炙手可热的职业之一。同嵌入式系统测试的飞速发展相比较,我国高校在这方面的培养则相对落后,一方面部分计算机专业的学生毕业后找不到工作;而另一方面很多嵌入式企业或公司急需大量嵌入式系统测试人员来完成项目测试工作。归根究底,导致这种现象的原因主要是高校的传统教育无法满足市场需求的快速变化。目前市场的发展趋势是:越来越多的嵌入式设备的系统趋于复杂化,而系统测试将发挥起决定性的作用,所以当前业界非常缺乏的就是嵌入式方向的测试人才。
由此可见,我国各大高校争相开设《嵌入式系统测试》这一门课程,主要目的就是要适应市场发展变化,教授当前最实用的测试技术,培养有实力和高竞争力的嵌入式测试人才,为学生今后的就业打下坚实的基础,也为我国的嵌入式事业贡献自己的一份力量。
2 课程特点分析
嵌入式系统测试对测试人员的要求较高,要求他们能够熟练掌握软硬件两方面的知识,不仅要懂底层的硬件知识,而且对软件知识也有较高的要求,包含了大量的专业性很强的理论和实践技术,市场上需要的嵌入式测试人才必须具备高级语言编程经验、嵌入式系统开发经验等。综合以上原因,笔者归纳了《嵌入式系统测试》课程的特点:
2.1 该课程涉及专业课程较多
《嵌入式系统测试》是一门综合嵌入式软件与硬件的课程。测试人员,仅有软件方面的知识,而缺少对硬件方面的了解,则无法达到理想的测试效果。在很多时候即使发现了错误,也很难立即分清到底是软件的错误还是硬件本身的错误;因此,各个高校在开设《嵌入式系统测试》课程前,都有一些相应的前驱课程来奠定一个良好的基础,通常所需的前驱课程有:高级语言程序设计,嵌入式系统,单片机等。而该课程本身所涉及的内容包括:前半部分主要介绍嵌入式系统基础知识、系统测试基础原理、和硬件测试环境;后半部分课程主要介绍嵌入式系统测试流程;主流测试工具使用等。《嵌入式系统测试》是一门将多种软、硬件方面的知识融合在一起的课程。
2.2 理论知识较为枯燥
课程大部分学习时间,要求学生掌握相当多的软硬件理论知识和测试方法,例如:测试生命周期各阶段的工作内容、工作方法学习和单元测试的实施等。这些都要求学生记大量枯燥且抽象的理论内容,因此学生学习积极性不高,认为测试课程内容理解困难,而且相当一部分学生学习后,只记得一些基本概念,期末考试前也只是背概念,去应付考试。即使学生在应聘时,招聘公司一问及测试的知识,学生只会说不知道或者不记得了。导致这些情况的产生,主要还是所学内容太过理论抽象,学生无法真正的将理论与实际相结合。
2.3 实验条件要求较高
嵌入式测试学习过程中需要有较强的动手实践能力。对于嵌入式系统而言,嵌入式软件测试与硬件测试并没有明显的分界。嵌入式系统工作环境不同于一般软件,嵌入式软件的开发和测试通常处于跨平台的交叉工作环境。在进行嵌入式软件测试的时候,我们需要将软件运行在目标机上。然后将目标机的输入输出重定位为主机的输入输出设备,即可借助主机的资源完成对目标机的操作,一旦具备这样的条件,就可以将传统的软件测试方法应用于嵌入式软件测试中。毫无疑问,要能够顺利完成该课程的测试实验,对于实验器材的要求都较高。
3 教学方法探讨
在对课程特点分析的基础上,结合笔者亲身的教学经历对该门课程的教学方法提出了一些自己的想法,将多种教学方法结合起来应用。
3.1 激发学生的学习主动性
我校开设《嵌入式系统测试》这门课程,是针对计算机科学与技术专业大四的学生。这些学生在面临就业和毕业设计的双重压力下,对于大四的课程学习,往往显得“力不从心”,无法集中精力好好学习。在教学初期应将学生感兴趣的测试行业就业形势介绍清楚,嵌入式测试领域的要求虽然相对较高,但付出与收获是成正比的。在后期教学过程中,应坚持将所教授的理论知识,结合在实际企业中的应用,进行拓展介绍。这样一来,学生不仅学到了知识本身,还了解到企业的运作流程,让学生意识到所学内容不再遥远。注意培养学生对嵌入式测试的兴趣,激发学习积极性与主动性,坚定学好这门课程的信念。
3.2 使用对比教学法
嵌入式测试领域的很多知识并不是孤立存在的,而是与我们以前学过的很多知识有着密切关系,特别是和一般通用软件的测试。在学习此类知识的时候,要介绍嵌入式系统测试和通用软件测试的相同点,例如:测试流程等,加强这方面的学习;与此同时,将嵌入式测试中有别与通用软件测试的知识点提炼出来并作重点介绍。学生在这样的学习过程中,不但巩固了之前所学的知识,而且还学习了嵌入式系统测试中所特有的新技术。通过这样的对比学习,学生更容易接受新的知识,并加深了记忆。
3.3 使用项目教学法
该课程是一门实践性很强的课程,只有理论联系实践,才能收到较好的学习效果。在实践教学中,将一些和课程相关的小项目与教学过程紧密结合起来,达到理论与实践的完美结合。如“嵌入式系统测试流程”部分,按照软件测试流程进行组织,将全班同学分成若干组,每组5-6人,每个小组都有具体的工作任务布置和学习指导。在实现过程中,大家还可以通过角色扮演,清楚地知道自己应该要完成的工作。例如:扮演“测试经理”的学生,要给其余扮演“测试工程师”的学生,分配测试任务,并告知其何时测等等。通过这样的角色扮演,不仅提高了学生实践的兴趣,更让他们体会到测试的各种过程,最终完成。采用这种方法,使得学生在动手动脑的过程中,也学习到了测试方面的知识,并获得了满足感与成就感,也就进一步激发了其学习嵌入式测试课程的兴趣和信心。
4 结论
嵌入式系统是现代科技高速发展的产物,在我们生活中发挥重要作用,对嵌入式系统进行测试是保证其质量的一种重要手段。笔者从阐述开设《嵌入式系统测试》课程的背景与意义出发,对本门课程的特点进行分析,并对该课程的教学方法进行了一定探讨,以适应新时期的发展需要。
参考文献:
[1]潘凤.《嵌入式系统开发》课程研究及教学方法探讨[J].办公自动化.2009(22).
[2]吕金和.嵌入式软件测试[J].软件导刊.2010(9).
[3]张苏,牛丽梁,颖红.项目教学法在《软件测试》课程中的实施[J].天津职业大学学报.2011(20).
[4]蔡建平.嵌入式软件测试实用技术[M].北京:清华大学出版社,2010.