类测试技术

2024-05-15

类测试技术(共8篇)

类测试技术 篇1

1 引言

随着面向对象技术的广泛应用和发展,软件测试技术也在逐步成熟。在传统软件测试中,软件测试工作仅是对简单计算机代码进行“调试”工作。而随着面向对象技术的提出和应用,传统的软件测试技术已经无法满足面向对象技术中关于多态、继承、封装等特点的要求,从而提出了面向对象软件测试技术。

在面向对象技术中,最重要的概念就是类。我们以往所使用的传统测试方法,是一种面向过程的测试方法,只完成对方法的测试,并不适用于面向对象技术中类的整体测试。因此,在面向软件测试技术中,提出了类测试的概念。本文将从类的特点出发,对面向对象的类测试技术作进一步的研究。

2 类测试技术

类测试是针对面向对象技术中类的概念而提出的,其目的是为了保证一个定义的类能够完成其定义以内的功能,确保类中方法的实现,将类的使用风险降到最低。

类测试按测试的顺序可分为以下三个部分:

1)基于服务的测试:测试类中的每一个服务;

2)基于状态的测试:考察类的实例在其生命周期各个状态下的情况;

3)基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态。如图1所示。

3 面向对象的软件类测试技术

类测试有很多种方法,如:等价划分测试、基于层次增量、基于服务、基于状态、基于流程、基于数据流的类测试。这里详细介绍基于服务的和基于状态的类测试,通过对这两种类测试的介绍,了解类测试的思想和方法。

3.1 基于服务的类测试技术

基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。类测试若采用传统的白盒测试,很可能会带来测试用例选取的盲目性。测试人员的个人喜好和倾向性,也会使得选取的测试用例存在一定的局限性。块分支图,作为一种基于服务的类测试模型,能够比较好的克服测试中的盲目性和局限性,保证软件测试的质量。

3.1.1 类的服务的测试模型

由Kung等人提出的块分支图(Block Branch Diagram,简称BBD)是一种性能比较好的基于服务的类测试模型,如图2所示。

服务f的BBD是一个5元组。BBD f=(Du,Dd,P,Fe,G)

其中:Du={di|di是f引用全局数据或类数据};Dd={di|di是f修改了的全局数据或类数据};P=X1θ1,X2θ2,…,Xnθn;Xn+1θn+1分别是f的参数表和函数返回值,θi为↓(表示输入)、↑(表示输出)或↓↑(表示输入/输出)。若Xn+1缺省,则无返回值;Fe={fi|fi是被f调用的其它服务}

G是一个有向图,叫做块体。它是按照控制流图的思想,修改f的程序流程图而来,表示了f的控制结构。f中的复合条件判断被分解,每个判断框只有单个的条件。

BBD通常有两种获取途径。一是采用逆向工程的方法,由源程序画出流程图构造出BBD。但这并不是最好的方法,当源程序不正确时构造出来的BBD是错误的。另一种途径是在软件的分析设计阶段构造出相应的BBD,能根本解决问题,正确指导类的服务的测试。

3.1.2 类的服务的测试策略

根据BBD模型,可对服务进行结构测试和功能测试两种测试。

1)结构测试:主要进行基本路径测试,根据软件过程性描述中的控制流程确定复杂性度量,然后用此度量定义基本路径集合,导出一组测试用例。

2)功能测试:等价类划分和边界值分析是两种很有效的功能测试方法。但这两种方法只针对数据集中的孤立数据进行测试,为考虑多组数据组合的情况,我们以判定表或判定树为工具,列出输入数据的各种组合情况和程序相应动作(以及可能的输出结果)之间的对应关系,为判定的每一列至少设计一个测试用例。

3.2 基于状态的类测试

同传统的控制流和数据流测试相比,对象状态测试侧重于对象的动态行为,这是一种依赖于对象的状态。当对象成员函数之间通过对象状态进行交互时可能会产生一些错误,测试对象的动态行为就可以检测出这些错误,基于状态的类测试就是这样一种通过测试对象的动态行为检测错误的测试方法。

下面举例使用状态转移图建立对象的动态行为模型,用以刻画对象响应各种事件时状态发生转移的情况。如图3所示,图中每个结点表示对象的某个可能状态,结点之间的有向边通常用“事件/动作”标出。当对象处于状态A时,若接收到考察事件e则执行相应的操作a同时转移到状态B。如此,对象的状态就随各种外来事件发生了变化,这是对象行为的一个重要方面。

基于状态的测试是检查对象的状态在执行某个方法后是否会达到预期的一种测试技术。对象状态的变化是通过对象的数据成员值体现出来的,实现对象数据成员值的跟踪监视,即完成了对象状态的检测。要检测对象多个数据成员的状态需要对对象的状态空间进行划分,这类似于黑盒测试中划分等价类的方法,并在对象的数据成员的取值域中找到特殊值和一般性区间,分别对其进行测试。进行基于状态的测试时,首先要对受测试的类进行扩充定义,增加一些用于设置和检查对象状态的方法。另一项重要工作是编写主控的测试驱动程序,如被测对象在执行某个方法时还要调用其他对象的方法,则需编写程序代替其他对象的方法。

4 结束语

面向对象软件类测试技术的研究是面向对象开发的重要一环。从目前对面向对象测试的研究现状来看,现有的类测试方法还存在一些问题。深入研究类测试技术,解决现有问题,对面向对象软件测试技术具有十分重大的指导意义。

参考文献

[1]赵荣利,崔志明,陈建民.面向对象软件测试的技术研究[J].苏州大学学报:工科版,2007,21(1):35-38.

[2]Grady Booch.面向对象分析与设计[M].冯博琴,冯岚译.北京:机械工业出版社,2003.

[3]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.

[4]钱乐秋,赵文耘.软件工程[M].北京:清华大学出版社,2007.

[5]Mc Gregor J D,Syket D A.面向对象的软件测试[M].杨文宏,译.北京:中信出版社,2002.

类测试技术 篇2

【关键词】就业力 高职毕业生 测试指标

相对本科生而言,高职毕业生就业形势更加严峻[1-2]。高职生是我国高校的一个特殊群体,生源良莠不齐,包含进修生、成教生以及“3﹢2”等模式。此类学生由于多种因素,未受到良好的教育,成绩较之本科生有巨大的差距,心理落差极大,自卑心理较重,越发进入不愿学、不会学的恶性循环状态;高考时分数较低,知识层次处于中低下水平,各方面能力及素质普遍比本科生低一个档次。但此类学生为了谋生,为了自身的长远发展,对技术技能的学习有强烈的愿望。但由于学生综合素质较低,学习的效率相对较差,雇主开出的薪资水平也不在同一档次。因此,专科学生就业力与本科生就业力不能采用同样的评判标准。

“就业力”一词的定义仍处在发展之中,目前文献中尚没有完整的定义。迄今为止,对高职院校学生“就业力”的专题研究还不多见[3]。本文以武汉职业技术学院学生为例,从就业准备时间、就业时间、专业对口、知识应用、工作获得认可时间等方面对高职学生的“就业力”进行衡量。

一、就业力测试指标建立

从以下5个指标来测试一个学生获得就业的能力:找工作时间、投简历份数、录用原因、专业与工作配比度以及专业知识应用程度。选这5个指标的理由如下:从开始准备找工作到正式就业的时间间隔,从此时间角度确定该学生是否顺利就业。本文选取的是在校毕业生,由于武汉职业技术学院教学体制改革,目前,该学院学生在校学习两年半专业课程,最后半年外出实习工作,这与本科院校学生培养模式不一样,因此在这最后一段时间能否就业成为衡量学生就业力的指标之一;简历制作实际是学生两年半能力锻炼的书面化,投简历份数是检验一份简历含金量的指标之一,投递简历越少并且能迅速就业,说明学生就业力越强,因此,投递简历份数是衡量学生就业力的指标之一;所学专业与工作之间的配比度是专业对就业的贡献度;专业知识应用程度反映了专业知识使用率,专业知识使用率是能够顺利获取工作的基本保障,是能够顺利融入工作的砝码。

二、维持并发展就业力测试指标

现从以下6个指标来测试一个学生维持并发展就业的能力:胜任工作时间、获得主管认可、自己对岗位的认可度、换工作次数、月收入和工作满意度。选这6个指标的理由如下:胜任工作时间是维持就业能力的外在表现,获取工作并不是成功就业,胜任工作才是成功就业的基本表现;获得主管认可是在胜任工作的基础上再上一台阶,这是由符合员工基本要求前提下向优秀员工迈进的关键一步,因此,这是衡量发展就业的指标;自己对岗位的认可度是满意就业的指标,也是学生能够维持就业的前提,如果自己对工作不满意,必定对工作怠慢,并最终导致失业,这使就业力将大打折扣。

三、测试指标的说明

对就业力测试的11项指标具体说明如下:

(1)找工作时间:从学生开始准备找工作到签订就业协议。

(2)投简历份数:学生以任何方式投递出去的第一份简历直至其签订就业协议时投递简历的份数。

(3)录用原因:被企业录用是自己找的还是老师推荐,或是通过家庭社会资源安排等原因。

(4)专业与工作配比度:就业工作岗位与自己专业的相关程度,从事具体事务与所学专业的相关程度。

(5)专业知识应用程度:就业岗位是自己所学专业,在学校中所学知识与实际工作中的要求一致程度。

(6)胜任工作时间:从学生到公司报道第一天开始一直到符合公司员工基本要求时间。

(7)获得主管认可:从学生到公司报道第一天开始,一直到初步具备优秀员工表现而获得主管认可。

(8)自己对岗位的认可度:学生工作后对自己所分配岗位的满意程度,主要从工作内容上衡量。

(9)换工作次数:从大学未毕业时第一份岗位开始算起,到调查问卷时的岗位份数,如果仅有一份工作,则换工作次数为零。

(10)月收入:每月经济收入,包括工资、福利、奖金、提成等。

(11)工作满意度:学生工作后对自己工作的整体评价,例如有些学生对自己的岗位认可度比较低,但是月收入较高,整体而言,该学生对工作满意。

根据以上分析,本文认为以上11项指标能够反映就业力的高低。

【参考文献】

[1]罗增桂. 以生涯发展辅导提升大学生就业竞争力[J]. 中国大学生就业,2005(20): 70-71.

[2]管越峰. 利用社会实践提高大学生就业能力[J]. 中国大学生就业,2005(18): 49-50.

类测试技术 篇3

为了适应新世纪面临的挑战和机遇, 近年来工程教育与工程师职业改革受到越来越多的关注[1,2,3]。现代教育理念不仅重视知识内容的传授和教育投入, 更重视能力和职业素质的培养[4,5,6]。2013年, 中国加入华盛顿协议是我国工程教育发展的重要里程碑, 对提高教学质量、促进我国工程师国际交流和职业发展具有深远意义。同时, 如何贯彻“以结果为导向、以专业教育目标为导向”的教学理念, 也给高等学校工程专业教学改革、课程建设, 实现专业教育国际认证, 提出了新的挑战[7,8,9]。

虽然只有400多万人, 但是新西兰是一个高度国际化的国家, 不仅体现在工业、农业和商业模式上, 还表现在发达的高等教育体系中。新西兰是华盛顿协议组织首批成员国之一, 奥克兰大学 (University of Auckland) 、奥塔哥大学 (University of Otago) 、坎特伯雷大学 (University of Canterbury) 和梅西大学 (Messay University) 等都有很好的国际声誉, 国际留学生的比例较高。坎特博雷大学机械工程系被认为是世界上最好的工程系之一, 优异的学术与工程技术水平在国际上享有盛誉。该校工程教育体系、课程教学组织和教学内容设计具有很强的系统性和连续性, 一些较成熟的教育理念和组织方法值得我们借鉴和学习[10,11,12,13]。

本文结合测试技术课程教学内容和方法, 分析了坎特伯雷大学机械工程专业 (简称坎大机械) 和吉林大学农业机械化及其自动化专业卓越工程师实验班 (简称吉大农机) 在课程内容设置、实践组织模式和学习效果评价方面的特点, 总结了坎大工程专业课程教学的特色和经验, 旨在探讨我国机械类专业测试课程教育的发展方向和改革途径。

二、课程定位

坎特伯雷大学本科教学分为两个阶段:第1学年叫过渡学年 (Intermediate Year) , 后3年是职业教育学年, 分别叫第1、第2和第3职业学年。与奥克兰大学 (University of Auckland) 、梅西大学 (Massey University) 等新西兰大学一样, 坎特伯雷大学一般每学年设8门课 (共修120学分) , 每门课15学分, 学生一般每学期修60学分。近年来, 各学校学分结构和标准逐渐统一, 便于学生跨学校交流。在最后一个学年 (Third Professional year) 包括3门必修课和4门选修课。必修课包括毕业设计、机械系统设计工程管理与机械工程管理专业实践。毕业设计覆盖两个学期, 占30学分。选修课包括学科模块 (一般2~3门课) 课程和自由选择课程。学科模块课程一般要求成组选择, 自由选择课程可以在任何一个学科模块课程中选修。测试课程、控制和机器人学属于机械工程专业控制与自动化模块。

吉林大学工科本科专业学制也是4年, 课程结构包括3部分:普通教育课、专业基础课和专业课。一般第1学年是普通教育课, 第2学年是专业基础课, 第3、4学年包括部分专业基础课和专业课。4年总学分为200学分左右, 其中包括140~150学分的理论课和40~50学分左右的实践课程。平均每学年修学约50学分, 每学期5~8门理论课, 必修课一般2~3学分, 选修课一般1~2学分。测试课是第3学年学习的必修课, 属于专业基础课。

三、课程教学目标与内容

坎大机械和吉大农机专业具有共同的学科背景, 测试课程的基本目标均为通过测试技术基本理论加深和扩展机械工程学科教育。坎特伯雷大学机械专业测试课程名称为“传感器与测试仪表 (Instrumentation and Sensors) ”, 吉大农机专业测试课程为“测试与传感技术 (Sensors and Measurement Technology) ”。从课程设置可以反映出两个学校课程教学的不同特色, 也体现出了教学理念的差异。

(一) 课程目标

“传感器与测试仪表”课程的“仪表化”体现了测试技术的工业性和实践性, 教学内容中包含了较多的实践教学内容。该课程包括36学时理论学习和不少于36学时的实验, 还有复习和作业。另外, 还有一项测试实验设计竞赛, 该项目设计竞赛需要小组成员合作完成, 每人工作12小时以上。修本课程的研究生还要按照学术论文格式写测试研究报告。理论课以外的自主学习 (包括设计报告) 和小组合作实践环节占整个学习进程的50%左右。据了解, 除考试复习时间外, 一般在坎大修1学分需要学生10小时的工作量, 包括理论课学习、实验和完成作业、答疑、考试复习。

吉林大学“测试与传感技术 (Sensors and Measurement Technology) ”课程主要围绕测试系统学习测试技术的基本原理、系统功能结构、系统特性、测试方法和常用工程测试系统应用、调试和设计方法。“测试与传感技术”课程设置40课内学时, 包括30学时理论学习、10学时课内实验, 10学时课外开放实验和3~4次作业。自主学习时间约为20~25小时。

“测试与传感技术”课程学习目标: (1) 理解测试信号的测试分析理论, 熟悉测试系统主要功能结构和系统特性; (2) 了解常用传感器原理与应用方法; (3) 掌握基本测试仪表操作方法和建立基本测试系统的方法; (4) 掌握应变片测试系统建模和关键测试部件设计方法; (5) 了解现代测试理论, 掌握数字化信号采集系统结构、软硬件建模方法; (6) 掌握测试系统设计、试验规划与测试误差分析方法。由此可以看出, 坎大机械专业“传感器与测试仪表”课程强调测试仪表运用和设计技能的培养。“知识”和“技能”训练围绕“学生进行测试仪表系统设计和应用”组织内容, 实验技能训练占课程内容的50%左右。

“测试与传感技术”课程内容以工程测试系统应用技术为中心组织, 培养了学生系统分析和设计的能力, 知识和技术性较强。

(二) 课程教学内容

为分析方便, 把坎大机械工程专业“传感器与测试仪表”课程和吉大农业机械化及其自动化专业卓越工程师实验班“测试与传感技术”课程内容和时间安排整理到表2中。

表2中统计的学时未包含这两门课程安排的2学时答疑时间。除期末考试外, “传感器与测试仪表”课程还安排2小时的期中考试。 (如果是硕士生选修这门课, 必须完成“测试技术学术论文”)

从表2中可以看出, “传感器与测试仪表”采用以学习过程为主线的教学组织模式。教学内容不仅包括测试系统建模与测试信号处理技术, 而且包含概率统计和测试误差分析方法, 为系统应用和测试结果分析奠定了基础。另外在测试技术应用方面进行了机器人传感技术、生物仪表、运动伺服控制、工业传感网络和智能技术等方面的技术扩展, 系统硬件结构和软件平台学习通过实验环节进行学习。课程内容围绕学生学习和运用测试技术进行实践的过程组织, 涵盖了应用测试技术分析和处理工程问题的各阶段, 既有较全面的知识点, 又有比较深入的实践体验内容, 有助于学生对测试技术的消化和吸收。

“传感器与测试仪表”课程实验内容主要围绕虚拟仪器技术平台组织, 通过LED灯控制、机器视觉检测、运动测试与控制和力学测试等训练项目学习基于数字化数据采集技术和虚拟仪器软件的运用方法。训练方式包括3类:前4项实验项目 (LED灯控制、机器视觉检测、铣床运动测试与控制和并行机器人控制) 采用教师指导下的实验方法, 属于验证性实验, 在给定的例子程序的基础上进一步扩张编成已达到实验的要求;第5项实验, 学生自主设计传感器模块和软件模块, 是设计性实验;第6项实验是学生自主选题的研究性实验。3类实验互相配合, 使学生从基本操作技能到测试系统设计和技术研究得到了全面的技术体验。实验内容结合数据采集技术和虚拟仪器软件平台, 体现了技术的先进性。

“测试与传感技术”课程理论教学和实验教学内容以测试系统功能结构和设计方法展开, 属于以知识为核心的教学组织模式, 包含测试体系原理和测试信号处理过程, 具有完整的体系结构。实验训练内容包含测试部件和系统调试操作技能、测试系统设计和开放实验。除测试技术开放实验外, 其他实验项目训练时间都是2学时, 总实验训练时间比“传感器与测试仪表”课程少20学时左右。

1. 课程考核与评价。

由表3可见, “传感器与测试仪表”课程评价中实验成绩、期中测验成绩和期末成绩大约各占三分之一。这种基于学习过程的评价方法更加注重平时表现和实验室实践效果, 知识理解和动手能力训练趋于平衡。“测试与传感技术”课程考核以期末考试成绩为主 (70%) , 平时学习表现和实验评价在总成绩中只起辅助作用。

2. 机械类专业“测试技术”课程教学的发展思考。

在高等教育和职业发展日益全球化的今天, 工程教育面临的技术环境发生了巨大的变化, 网络技术和信息技术的发展改变了人们的生活习惯和学习习惯, 也同样影响着高等教育课程的教学方法。“测试技术”作为一门专业基础核心课程, 其教学目标、教学内容和教学模式都要根据时代要求不断发展, 课程设计思路和组织模式也值得深入探讨。因此可以看出, “传感器与测试仪表”课程教学中体现以下几个特点。

(1) 转变“以教师为主体”的教学理念。现在的学生更适应网络化的生活模式, 因而在课程教学中可以把学生能了解和消化的知识内容交给学生自己去消化和吸收, 提高学生的参与度和主动性。在这种情况下, 对教师提出了更高的要求:需要深入分析课程内容, 找出哪些内容适合学生自学以及如何保证教学内容的完整性和系统性。解决完这些问题后, 在教学中需要以学生为主体, 把主要精力放在帮助学生理解基本概念和学术思想上, 检验和分析学生自学的成果, 提高学生的学习兴趣和教学效果。

(2) 强化“以应用实践为主线”的教学组织模式, 提高教学内容的系统性。工程技术的实践性决定了工程教育课程的出发点和终点都是实践。在测试技术课程教学中, 从测试概念理解、技术应用结构体系和教学内容组织顺序上, 要求突破传统“围绕测试技术知识教学”的模式, 不仅要知道测试技术是什么, 还要掌握如何应用测试技术解决工程问题。而在技术应用中涉及的技术内容比“测试技术理论”宽得多, 如在测试应用中涉及到试验设计方法、数据概率统计分析、数据误差分析等, 在教学中也需要引入相关知识的理解和应用辅导。

(3) 工程技术课程教学重在“理解和体验”。根据测试技术的实践性特点, 可以引导学生进行交互性学习和体验性学习。应用案例教学让学生研究测试应用案例和构建实验模型。教学中重视中间环节的质量监督和控制, 在学习中体验、在实践中学习, 提高学生的学习兴趣, 由被动学习变为主动学习, 加强理论和实践联系, 提高解决实际工程问题的能力。在教学评价中转变以期末考试为主的学习评价模式, 推广基于学习过程的评价方法可以改善学生“平时不学习, 考前突击和死记硬背”的弊端, 有利于提高学生的学习积极性。

四、结语

通过对坎特伯雷大学机械工程专业和吉林大学农业机械化及其自动化专业“测试技术”课程教学模式的比较分析, 总结了坎特伯雷大学“传感器与测试仪表”课程教学定位、内容组织和实践技能培养方面的特点。实践表明, “以应用实践为主线, 基于项目的教学模式, 强调教学过程质量控制”的教学思想在坎特伯雷大学中取得了很好的教学效果, 是工程技术教育的先进理念, 值得我们在今后的“测试技术”课程教学改革和专业课程建设中借鉴。

摘要:机电一体化是工程技术发展的趋势, 也是工程教育的新方向。“测试技术”课程作为实现机电一体化技术培养的主要环节之一, 是机械类专业教育的重要内容。为提高我国机械类专业测试课程的教学质量和水平, 笔者通过比较分析了新西兰坎特伯雷大学机械工程专业和机电工程专业测试技术课程的教学定位、目标、内容和课程考核方法, 总结了坎特伯雷大学测试技术课程教学实践中的先进理念和科学经验。实践表明, “以应用实践为主线, 基于项目的教学模式, 重视教学过程质量控制”的教学理念在“传感器与测试仪表”课程教学中取得了显著的教学效果, 是工程技术教育的先进理念, 值得我们在同类课程建设和教学改革中参考和借鉴。

JUnit的类测试应用研究 篇4

JUnit包中包含了JUnit测试类所需的所有基类(Base Class),实际上这个包也是整个JUnit的基础框架(Base Framework)。TestCase类是这个包的核心,测试人员可在继承TestCase类的基础上开发自己的测试驱动程序。其余的类用来支持TestCase类,其中的TestSuite用来聚合多个测试用例(TestCase);Assert类用来验证期望值和实际值;TestResult类收集所有测试用例执行后的结果;在Test接口中建立了TestCase和TestSuite之间的关联,同时它也为整个测试框架作了扩展预留。测试时如何需要继承某个类,可以实现某个接口。图1 JUnit测试框架略图。

1.1 TestCase类分析

JUnit支持两种运行测试的方法:静态的和动态的方法。

静态的方法就是覆盖TestCase类的runTest ()方法,一般是采用内部类的方式。

创建一个测试实例,如:

TestCase test0I=new testCar (”test getWheels"){public void runTest(){testGetWheels ();}}

采用静态的方法要给每个测试一个名字,这样就可以区分测试是否失败。

(1)动态的方法是用内省来实现runTest ()以创建一个测试实例。这要求测试的名字就是需要调用的测试方法的名字,如:

TestCase test01=new testCar ("testGetWheels");

(2) JUnit会动态查找并调用指定的测试方法。动态的方法很简洁,但如果键入了错误的名字就会得到一个令人奇怪的NoSuchMethodException异常。

1.2 TestSuite分析

创建了测试实例,下一步考虑组合运行。因此必须定义一个TestSuite类。需要在TestCase类中定义一个静态的suite()方法。suite ()方法就像main ()方法一样,JUnit用它来执行测试。在suite ()方法中,将测试实例加到一个TestSuite对象中,并返回这个TestSuite对象。一个TestSuite对象可以运行一组测试。TestSuite和TestCase都实现了Test接口,而Test接口定义了运行测试所需的方法。这就允用TestCase和TestSuite的组合创建一个TestSuite,如:

1.3 TestRunner类分析

有了TestSuite就可以运行这些测试,JUnit有三种界面来运行测试:

如果需要在一个或若干个类中执行多个测试,这些类就成为了测试的context。在JUnit中被称为Fixture。当设计测试代码时,将花费了很多时间配置/初始化相关测试的Fixture。将配置Fixture的代码放入测试类的构造方法中并不可取,因为要求执行多个测试,且并不希望某个测试的结果意外地影响其他测试的结果。通常若干个测试会使用相同的Fixture,而每个测试又各有自己需要改变的地方。为此可以用JUnit的两个方法,定义在TestCase类中。

覆盖setUp()方法,初始化所有测试的Fixture,如建立数据库连接,将每个测试略有不同的地方在testXXX ()方法中进行配置。覆盖tearDown (),释放setUp ()中分配的永久性资源,如,数据库连接。当JUnit执行测试吋,它在执行每个testXXXXX ()方法前都调用setUp (),而在执行每个testXXXXX ()方法后都调用tearDown ()方法,由此保证了测试不会相互影响。

1.4 Assert类分析

Assert类中定义了相当多的assert方法,用来验证测试后其实际值和期望值。主要有assert()、assertequals()、assertNull ()、assertSame ()、assertTrue ()、fail ()等方法。

Failure失败是一个期望的被assert方法检查到的结果。

Error错误则是意外的问题引起的,如ArrayIndexOutOfBoundsException。

2 JUnit在类测试中的应用实现

2.1 被测工具类功能说明及测试用例详细设计

以一个查找替换工具类为例子。其功能为:通过查找一个字符串里面的某个需要替换的字符,确定要替换的个数,然后用要替换的字符去替换它。其中初始字符串可以为空或为null,首先根据边界值等测试法为这个工具类设计测试用例,见表1。

2.2 被测工具类及测试类代码

被测的工具类命名为StringUtil,代码如下:

用继承TestCase类来创建StringUtilJUnitTest类,并定义测试方法,每一个测试方法均以testXxx ()格式命名,测试类的代码如下:

StringUtilJUnitTest测试类用testReplace ()测试方法对replace ()方法进行测试。assertEquals ()断言用来判断被测方法返回的结果是否与预期一致,如果返回结果与预期结果一致,测试成功,否则测试失败。

JUnit在执行每个测试之前都先执行setUp ()方法,可以将公共的测试初始化代码放在setUp()方法中。与setUp()功能方法相反的是protected void tearDown () throws Exception方法,可以将测试结束后要执行的收尾工作放入tearDown ()方法中,比如:关闭数据库连接、关闭流等。如果有多个testXxx方法,JUnit会创建多个XxxTest实例,每次运行一个testXxx方法,setUp ()和tearDown ()会在testXxx前后被调用,因此,不要在一个testA ()中依赖testB ()。

StringUtilJUnitTest测试类要测试的是StringUtil里的replace (String text,String repl,String with,int max)方法,具体测试步骤如下。

2.2.1 参数描述

该方法要求的参数详细描述如下:

Text:需要查找替换的目标字符串,可以为空或null。

Repl:目标字符串中需要查找的字符,可以为空或null。

With:需要替换的字符,可以为空或null。

Max:替换的可数。

2.2.2 测试数据准备

根据上述方法的参数要求,设计了17个测试用例,这些数据以txt格式存于系统某一路径下(本测试方法暂存于D://testReplace.txt),一行数据为一个测试案例数据,每行数据的每个参数值以逗号分隔,从左到右依次对应replace (String text,String repl,String with,int max)方法的参数,最后一个值为期望的结果值。具体文本内容如下:

2.2.3 读取

存于txt里的测试用例在JUnit执行setUp ()的时候调用bufferedReader (String path)方法,将其读入内存并封装于一个List中,待系统其他测试方法调用。

2.2.4 测试

在StringU tilJUnitTest类中,testReplace ()方法为测试replace (String text,String repl,String with,int max)的测试方法,因为JUnit在运行测试用例时,会运行所有的测试方法,如果某个方法中有失败的用例,则不会再继续运行该方法中的剩余用例。所以为了将17个测试用例都能执行到,在testReplace ()中对JUnit在用例执行失败的异常Assertion FailedError进行了捕获和记录,这样,在17个用例中某个用例执行失败的时候,也可以执行完余下的用例。另外对所有用例的测试结果进行了有格式的记录,并输出到文本文件D:estReplaceOut.txt中,这样在对一个方法进行多个用例测试的时候.当某个用例失败时,不仅可以执行完所有的用例,而且可以更直观地看到测试的结果。

2.2.5 输出

执行完以上测试用例后,会于系统设定路径下(本测试路径为D:estReplaceOut.txt)产生一个测试结果文件,从文件里可以直观地看到测试案例执行的结果和描述。对于StringUtilJUnitTest产生的输出文件testReplaceOut.txt具体内容和格式如下:

第1条测试失败(×):期望值是:abaz,实际值是abaa

第2条测试通过(√):期望值是:zbaa,实际值是zbaa

第3条测试通过(√):期望值是:zbza,实际值是zbza

第4条测试通过(√):期望值是:zbzz,实际值是zbzz

第5条测试通过(√):期望值是:zbzz,实际值是zbzz

第6条测试通过(√):期望值是:zbzz,实际值是zbzz

第7条测试通过(√):期望值是:abaa,实际值是abaa

第8条测试通过(√):期望值是:abaa.实际值是abaa

第9条测试失败(×):期望值是:zbaa,实际值是abaa

第10条测试通过(√):期望值是:baa,实际值是baa

第1 1条测试通过(√):期望值是:baa,实际值是baa

第12条测试通过(√):期望值是:*baa,实际值是*baa

第13条测试通过(√):期望值是:null,实际值是null

第14条测试通过(√):期望值是:null,实际值是null

第15条测试通过(√):期望值是:null,实际值是null

第16条测试通过(√):期望值是:,实际值是

第17条测试通过(√):期望值是:,实际值是

共执行测试用例17笔;成功15笔;失败2笔;

2.2.6 修整

根据测试结果,对程序进行修改,直到测试用案例全部通过,即测试完成。

使用JUnit通过测试驱动的开发来实现单元测试时,是以测试失败为开端的,这是意料之中的结果。如果它不失败,那就意味着测试的设计或实现出了问题。测试类会逐一运行已经设计好的全部测试用例,如果有测试用例运行失败,整个测试也将失败,失败的原因反应的就是工具类的缺陷,需根据失败原因再对工具类进行修改,当所有测试用例全部运行通过,工具类的实现也随之完成。

2.3 数据说明

表1中的“实际结果”项是测试驱动执行后测试驱动程序自动填入的,测试驱动自动比较“预期结果”和“实际结果”是否相等,如何相等则在“比较结果说明”中填“√”,不相等则在“比较结果说明”中填“×”。所以,测试人员对测试结果的检查只要查看测试用例表的执行结果就可以了。

3 结语

测试是开发过程中的重要阶段,测试工具对软件测试的有效性、成本、时间、可靠性等方面起到关键作用。而测试工具又有商业和开源之分,许多开源的测试工具功能强大并且具有非常好的开放性,但测试人员需要经过不断的摸索和研究,才能很好的运用。JUnit给开发者的单元测试带来了极大的方便,但是大多使用者对其应用掌握不深。本文分析了利用JUnit进行单元测试的全过程,并结合实例研究了测试驱动的开发,起到抛砖引玉的作用。

摘要:测试对于保证软件开发质量有着非常重要的作用,单元测试更是必不可少。JUnit是一个非常强大的单元测试包,可以对类及其方法测试,还可以将不同的TestCase整合成TestSuit,使测试任务自动化。本文对JUnit的应用进行了分析研究并以一个例子来阐述开发类测试驱动的过程。

基于状态的类测试研究 篇5

关键词:类测试,面向对象,基于状态

目前,面向对象技术作为一种全新的软件开发技术广泛地应用在各领域,随着面向对象软件测试的逐步深入,基于类具有封装和抽象特性,通过研究基于状态的类测试,考察与对象状态相关的变量或函数的数据变化,衡量软件模块的健壮性。该文主要针对基于状态的类测试方法及测试用例的生成展开讨论。

1 基于状态的类测试方法

相比与面向过程程序测试,面向对象程序测试中类测试与其单元测试类似,不同的是,单元测试关注函数模块算法和各函数间接口的输入输出。基于状态的类测试方法的核心在于关注类中的方法及其类的状态,要把对象与其状态结合起来,进行对象状态行为的测试,因为软件运行过程中对象的初始状态、对象的输入参数、对象的输出参数、对象的最终状态可能被改变,产生新的状态。

由于基于状态的类测试依赖对象的状态,因此在测试评估时通过检查对象数据成员和方法进行交互时产生的错误,如果方法执行后对象的状态并没有按预期结果发生变比,则表明此方法有误。

基于状态的类测试过程为:通过将面向对象程序中的类作为被测单元,明确类中的状态变量,根据相关的状态变量划分成多个状态,并生成类的状态多分支树,然后通过遍历状态分支树,产生测试用例执行测试,判定对象状态是否符合预期规定的状态。

2 基于状态的类测试用例的生成

对于基于状态的类测试而言,如果达到类的状态及状态转换完全覆盖的测试用例是无限的,通过建立状态转换模型,生成状态转换图,通过生成遍历测试路径树自动选择并执行测试用例,能够从无限的测试用例中选择最优、覆盖率高的测试用例。

2.1状态转换模型及状态转换图

最后通过状态转换模型中状态集、状态转换集、状态转换消息建立状态转换图。比如一个进程状态S={就绪、运行、阻塞、创建、终止},进程状态转换事件消息包含:1)创建状态——>就绪状态(允许进入);2)就绪状态——>运行状态(获取CPU进程调度);3)运行状态——>阻塞状态(I/O或事件请求);4)运行状态——>就绪状态(分配的CPU时间到);5)阻塞状态——>就绪状态(I/O完成或等待事件发生);6)运行状态——>终止状态(进程结束释放)。

状态转换集T为={允许进入,获取CPU进程调度,I/O或事件请求,分配的CPU时间到,I/O完成或等待事件发生,进程结束释放},图1所示为状态转换图,包含状态集S和状态转换集T。

2.2生成遍历测试路径树

通过对各状态设置唯一的输入输出路径生成测试路径树自动产生测试用例,测试包括验证每个状态是否能由初始状态按照一定的路径到达,状态转换后的每个状态能否正确执行,其输出是否正确。

首先对于某一事件路径为从初始状态到终止状态的转换,分析类对应的状态图,然后构造测试路径树,该测试路径树包含所有的事件消息路径。测试路径树的每个节点对应一个状态,每个分支表示状态之间的转换,并在分支上标识出事件动作。最后构造出满足状态转换覆盖的测试路径树。具体形式化算法如下:

1)创建所有非空状态集合S={S1,S2,…,Sn}

2)创建可达状态集Rs,开始为空,对象经过构造或初始化后,产生的状态加入到Rs中。

3)选择一状态Si∈Rs,将Si为初始前驱状态

4)选择一条定义数据成员M的路径P,执行条件为CP,R为路径执行结果。如果条件Si(D)和CP成立,则路径产生一次转移,如果条件不成立,放弃该路径。

5)转换到达的后继状态Sj∈Rs(j=1,2,…,n)或Sj为对象被消除的最终状态,则Sj为叶子节点。

6)重复步骤3、4直到选择所有的路径,从Rs中去掉Ss,直到Ri为空。

7)从根节点开始沿着各个分支往下直到叶子节点,深度遍历测试路径树,对于每条从根节点到叶子节点结束的路径组合一起,就生成相应的测试用例。

3 实例分析

为了验证基于状态的类测试方法的可用性,在此用一个具体的案例——某系统中超短波控制器路由维护模块软件的类HJLy-dx来讨论该方法。

某系统主要由中控设备、通控器、超短波电台、遥控用户单元、短消息远传设备等组成。通控器在其中负责管理超短波通信网内电台的信道资源管理、工作状态的设置和显示,路由信息的维护和刷新等功能。路由维护模块是通控器软件中的网络处理单元下的一个模块。路由维护模块实现静态及动态路由表维护功能,为网络传输模块及LPU单元提供路由信息。

图2显示的被测软件类HJLydx的状态转换模型:

状态集:S1:Default status;S2:Static route status;S3:Dynamic route status;S4:Static message route status;S5:Dynamic messageroute status。

事件或动作集:1/x:输入事件1,输出动作x;1/y:输入事件1,输出动作y;2/x:输入事件2,输出动作x;2/v:输入事件2,输出动作v;3/w:输入事件3,输出动作w;4/w:输入事件4,输出动作w;5/r:change back to Default status,输入事件5,输出动作r。

按照显式行为路径的算法,首先初始化S={S1,S2,S3,S4,S5},Rs={a},第一次执行(1)、(2)步:选择一状态Si=a得到新的Rs={a,S1},重复(3)、(4)步骤直到循环终止条件成立,得到如图3所示的状态转换模型对应的最终测试路径树。

最后深度遍历上图测试路径树得到所有显示行为路径为:1)a1→1/x→1/y→3/w(S1到S2到S4到S4);2)a1→1/x→1/y→5/r(S1到S2到S1);3)a1→1/x→2/x(S1到S2到S3);4)a1→2/v→2/v→4/w(S1到S3到S5到S5);5)a1→2/v→2/v→1/x(S1到S3到S5到S3);6)a1→2/v→2/v→5/r(S1到S3到S5到S1);7)a1→2/v→1/x(S1到S3到S2)。

于是就得到基于状态模型的显式路径下的最终测试用例序列为:{a1→1→1→3,a1→1→1→5,a1→1→2,a1→2→2→4,a1→2→2→1,a1→2→2→5,a1→2→1}。

4 结束语

类测试技术 篇6

移动互联网是一种通过智能移动终端, 采用移动无线通信方式获取业务和服务的新兴业务, 随着宽带无线接入技术和移动终端技术的飞速发展, 人们迫切希望能够随时、随地、随心地享受互联网业务所带来的便捷, 移动互联网应运而生并迅猛发展。现在移动互联网的浪潮已席卷到社会的方方面面, 视频节目、新闻阅读、电商购物、公交出行等热门应用都已经出现在了移动终端上, 数据显示, 2013年上半年, 我国移动互联网用户约8亿, 各种应用下载数量仅次于美国, 位居全球第二。这也让企业级用户意识到了移动应用的必要性, 纷纷开始规划和摸索进入到移动互联网, 随着互联网上本地化电子商务的不断发展, 信息和实物之间, 线下和线上之间的联系变得越来越紧密。一种全新的电子商务模式O2O正式登场并迅速蔓延至虚拟商业经济的各个角落。

O2O的英文全称为“online to offline”, 与传统电子商务模式不同, 它主要是通过线上推广交易引擎来带动线下交易。即将线上线下的消费或服务更好地融合在一起, 使互联网成为线下交易的前台。这样线下的服务就可以通过线上来揽客, 消费者可以到线上来筛选服务, 简而言之就是用户可以在网上查找、对比商品或服务的价格, 并下订单付款, 然后到线下去消费产品或服务。这种模式加大商户的参与和用户的体验感。而且推广效果可查, 每笔交易可跟踪。2010年以来我国涌现出大量O2O模式的网站和手机app。比较常见的如:大众点评网、美团网、e袋洗等。

手机app是指手机应用程序, 它是随着移动互联网技术的深入发展而产生的, 目前正逐渐渗透到人们生活的各个领域, 包括购物、美食、娱乐、导航、地图等方方面面。随着智能手机的普及, App的用户使用开始呈爆发式增长。而手机app的可用性、可靠性和友好性决定了产品能否如期与消费者见面, 关系到产品在市场上能否具有长期竞争力, 直接影响到生产厂家的利益。因此, 可以说手机app的测试工作是整个软件开发过程中最为重要的一个环节, 它伴随于整个软件开发的每一个阶段, 是软件开发成功的重要保障。

测试方法

传统软件测试方法

传统上对软件测试方法的分类有两种:黑盒测试和白盒测试。白盒测试又称为结构测试, 它不考虑外部特性, 是按照程序的内部结构来测试程序, 对程序的所有逻辑路径进行测试。它是通过测试来检验程序中的每条通路是否能够按照预定要求正常工作。黑盒测试又称为功能测试, 它着眼于程序的外部结构, 不考虑内部逻辑结构, 只针对软件界面和软件工程进行测试。它是通过测试来检验程序功能是否按照需求规格说明书的规定可以正常使用。

手机app测试方法

手机app的测试方法包括:单元测试, 集成测试, 功能测试和系统测试等方面。以期通过各种测试手段和测试工具能够发现、找出软件中的错误、解决错误, 从而提高app的质量, 使得app能够满足预期标准。

单元测试

所谓单元测试即测试App的基本组成单元的正确性。一般都是集中对用源代码实现的每一个程序单元进行测试, 这就要求测试人员必须对代码的内部结构熟练掌握, 这样就可以在发现缺陷的同时及时解决。

集成测试

集成测试指的是在单元测试的基础上进行的将各个单元模块按照概要设计要求进行组装成为系统的测试。主要包括各个单元间的接口测试和全局数据间的结构测试。

系统测试

系统测试是整个app测试阶段的核心部分, 它的目的是检验系统是否满足需求规格的定义, 它需要将app程序、移动终端、外设、网络等元素结合起来, 进行全方位的测试, 通过系统测试来找出错误的原因和位置并加以改正。

功能测试

功能测试属于黑盒测试, 又称为基于规格说明测试, 是app测试中最为关键的环节。主要是根据需求规格说明书来检验软件能否满足客户的需求。简而言之就是预先设计好部分输入, 观察手机的输出结果, 从而判定是否存在问题。在设计测试用例时要考虑到不可能涵盖所有输入情况, 因此要选择有代表性的测试用例来进行测试。

以某地产交易开发平台为例, 该项目是一款针对地产行业销售人员的线上软件, 在客户端用户能及时地了解相关商品信息, 并实时地查询用户自身盈利状况, 且方便用户间迅速沟通、交流;在服务器端及时处理来自客服端的信息, 发放佣金, 发布新闻等, 为用户提供更好的服务。旨在为地产销售人员间以及销售人员与本公司间建立一条更高效的信息获取渠道, 为其谋利提供更多便捷。

该项目共分为五大功能模块:产品模块、论坛模块、产品介绍、用户管理和时政新闻。如图1所示。产品模块:按照“区域”、“物业类型”和“价格划分”发布房产信息。论坛模块:包括“正经事”和“随便聊”两部分, “正经事”用来发布产品信息和供需要求;“随便聊”可以进行任意话题的发布。可以让会员自由进行平台之外资源信息的交流互换, 真正实现客户百分百成交。平台公告模块:包括“公司动态”和“活动专区”, 用来发布公司内部动态和和活动信息。用户管理模块:包括“个人信息”、“客户管理”、“我的钱包”、“佣金公式”、“邀请加入”、“好友列表”和“我的团队”。时政新闻模块:用来发布包括“财经”、“科技”、“房产”、“汽车”等时政新闻。

“个人信息”要求先完善个人信息, 包括:头像 (非必填项) 、姓名、性别、手机号 (可不为注册的手机号) 、身份证号 (验证过程由客服线下完成) 、邮箱、备用手机号、地址。好友列表中可显示好友以及附近的会员, 点击其头像可查看他的具体信息, 并可与之通话 (直接拨号) 或聊天 (类似微信的聊天) , 也可取消关注 (相当于删除好友) , 关注 (即添加好友) 需征得对方同意。

“我的钱包”注册并登录后点击“我的钱包:可以查看卖房佣金和分红等账户信息, 还可以修改密码和找回密码, 如忘记密码则需要通过手机获取验证码, 只有输入正确的验证码才能够进行新密码的设置。

用户登录“正经事”和“随便聊”后可以浏览论坛中的帖子并发表评论, 也可以发布新帖, 收藏或取消收藏帖子。

在“活动专区”中用户可以浏览房地产开发商发布的活动预告并报名参加, 也可以取消报名。

在对系统的各个模块进行功能测试后, 如表1所示通过对测试出的bug进行统计分析发现, 由于需求理解不到位引起的bug占整个bug总数的38%, 由通讯类错误引起的bug占整个bug总数的25%, 而因前后台未统一造成的bug占整个bug总数的30%。由此可见在O2O类移动互联软件的设计过程中尤其要注重对需求的理解, 开发人员应限制特定应用, 以避免产生因需求理解不到位而产生的错误。移动互联网和固网相比网络性能略差, 因此开发人员在设计的时候应考虑2G、3G网络延迟会造成数据丢包, 要做好容灾、容错的处理, 以期减少通讯类错误的产生。由于io S、安卓以及服务器端本地数据库存在定义关键数据结构和数据库时未做统一, 或在开发时由于程序员的原因发生了一些变化, 因而导致了前后台未统一的问题发生。

结束语

O2O类移动互联软件的测试是一项复杂而重要的工作, 设计合理而有效的测试用例, 可以极大地提高软件测试的效率, 提高软件的可靠性和易用性。

类测试技术 篇7

一、星级评价体系设计

一般企业设备管理制度包括设备资产台账建立、设备的申购、出入库、调拨、封存、报废等方面,但在设备的日常维护、故障处理和维修流程等方面细化不够。由于中心拥有的研发和测试用途的设备只在需要时才运行,故无法借用生产型企业的评价指标来进行管理。因此,评价重点放在了设备使用人员的日常维护的精细化管理方面,相应的星级评价体系也按照此思路设计为三个级别。

中心设备管理部门建立和发布《设备现场维护水平星级评价与验收标准》,将“研发测试类设备现场管理和自主维护”工作开展分为三个级别,实施各使用科研项目组的星级验收制度。各单位根据本项目组目前的进展情况自由申请,在通过设备管理部门组织的现场审核并达到一定分数后(级别分数为总分的85%以上)确定为通过该星级的验收,各单位所达到的星级级别与年底对各单位的综合评价等级挂钩。星级评定每年执行一次,以往成绩不累计。三个星级的评价重点分别介绍如下。

1.一星级

满分200分,达标分170分,评价重点侧重于基础管理工作的开展情况,包括制度和机构作用、员工能力培养、设备6S(整理、整顿、清扫、清洁、安全、素养)、源头问题发现和解决等。

(1)管理方针和体系策划(满分30分)。包括有无体现本单位特色的管理方针和管理细则,以及年度工作计划设计等。

(2)职责设计和机构作用发挥(满分45分)。包括有无制订明确具体的管理责任,设备管理机构作用发挥是否积极;有无定期从上到下关注设备的正常使用等。

(3)员工教育训练(满分35分)。包括有无明确各相关岗位人员所需掌握的与设备管理和维护有关的知识和技能;有无进行定期的培训,员工有无通过OPL(单点课)方式及时交流经验,相互借鉴设备维护过程中的经验等。

(4) 现场四要素的执行情况(满分90分)。包括设备6S规范和执行情况,员工有无按要求正确使用设备;有无制订发现和解决各个现场问题源头的制度及执行情况;现场设备可视化与定置管理规范及执行情况等。

2. 二星级

满分300分,达标分255分,评价重点在一星级的基础上增加了对研发测试类设备的维护能力及水平的评价等。

(1)设备使用运行情况(满分30分)。是否对员工进行了与设备有关方面的培训(如设备使用、清扫、点检、润滑、调整紧固等方法);哪些岗位需培训合格后才可上岗及执行情况;需建立操作规程或安全规程的设备是否建立;规程是否涵盖关键步骤;现场的设备运行记录,其填写的内容是否真实、完整、认真;运行记录的设计是否体现了高效、便于员工记录及理解等。

(2)自主维护执行情况(满分25分)。观察现场的装置和设备,结合项目组的实际情况分析,员工是否认真、主动执行了自主维护;员工自主维护活动“清扫、点检、保养、润滑”与专业人员的“诊断、维修”是否形成一个完整闭环的作业体系等。

(3)设备日常维护(满分15分)。是否有对设备日常保养维护工作进行了分工;是否根据设备日常保养管理的需要,建立了具体、可操作性强的保养规范;是否有具体措施确保设备使用与保养作业能有效执行等。

(4)员工对规范的熟悉程度(满分30分)。员工能按规范要求(自主维护)全部讲述(无遗漏)自主维修要点(如点检点、润滑点等),能全部正确示范。

3.三星级

满分400分,达标分340分,评价重点在二星级的基础上增加了对使用人员围绕设备存在的问题积极改善活动开展情况的评价等。

(1)改善活动的管理(满分20分)。包括制度建设、数据统计情况、定期改善成果的发布交流情况等。

(2)小组改善活动展示(满分10分)。通过对小组改善活动看板的栏目、内容、深度和更新情况,了解员工对小组团队活动的参与情况。

(3)提案改善活动开展情况(满分20分)。有无提升设备管理水平的合理化建议和提案改善活动的管理流程、制度,有无形成闭环及效果。

(4)改善活动的实际开展情况(满分50分)。从活跃度、时间长短、深度和广度、改善方法应用以及实际效果等综合评价。

二、星级评价流程设计

各科研项目组按计划开展工作并取得成效后,应及时按《设备现场维护水平星级评价与验收标准》进行自我诊断,达到晋级分数可申请组织中心级验收。验收申请表应在拟订现场星级验收前1个月提交,并应附自我诊断报告,说明诊断时间、参加人员、区域范围、总体达标情况以及主要存在的不足等。中心设备管理部门审核后组织人员进行现场星级验收,通过后颁发证书,相应流程如图1所示。

三、星级评价制度设计

为了更好贯彻《设备现场维护水平星级评价与验收标准》,特制订《开展设备现场维护水平星级评价与验收的管理办法》,确立了活动的目的和意义、归口单位管理职责、活动形式、活动范围、活动流程、活动内容、活动的奖励和处罚、活动的其他要求等,从制度上进行了充分保障。

四、结语

第一,活动开展初期,相关培训和宣传是必不可少的,通过培训和宣传可以使广大员工明白活动的目的和意义。

第二,活动开始的第1年,建议各项目组逐级申报,即通过一星级评价后才能申请二星级评价,以此类推。并通过看板方式定期公布各单位的星级排名情况。第2年以后,可以把星级评价作为年底一次性评价,各项目组自由申请,按实际得分确定相应的星级水平。

第三,现场评价环节要严格及实事求是,确保评分公平。

摘要:介绍一种设备现场维护的星级评价模式, 从制度上将此类设备的管理纳入了长效机制, 经过实际验证, 取得了较好的效果。

类测试技术 篇8

本文针对状态迁移不确定性问题进行改进,针对状态图中存在的超态结构,提出一种转化方法来消除状态图中的层次和并发状态,将其转化为EFSM后,用基于扩展有限状态机的测试用例生成方法来生成系统的测试用例。

1 有层次和并发状态的UML状态图

UML状态图也称为扩展的有限状态机,但UML状态图进行了扩展,并支持和时间有关的转换。图1是一有层次和并发结构的UML状态图例子。其中S2 是AND-状态,S0、S3、S4 是OR-状态,其余为BASIC-状态。t1是层内迁移、t2是层间迁移。

2 状态图向扩展有限状态机的转换

为了简化讨论难度,设EFSM是一个三元结构{GStates,C0,GTrans}。GStates是全局状态(globe states )的集合[3],C0 是全局状态的初始状态,GTrans是全局转换路径(globe transitions)的集合。如图2所示的就是一个三元结构的EFSM。

将UML状态图图转换为EFSM图只需消除UML状态图的层次、并发和广播消息。UML状态图将以以下方法转换为EF SM(对应将图1转换为图2)。

2.1 生成EFSM的状态

因为格局(configurations)是同时运行的最大状态集,所以Gstates对应的是UML状态图的格局(configurations)。

求全局状态的步骤如下:

1)由状态图产生状态树(图4);

2)搜索UML状态图的所有状态,找到根状态root;

3)从根状态开始进行深度优先搜索所有的状态,如果状态Si是叶子结点,则把该结点和其所有的父状态一起作为一个全局状态;

由图1的UML状态图产生的EFSM中的五个全局状态为:C1:S0,S1;C2:S0,S2,S3,S5,S4,S7;C3:S0,S2,S3,S6,S4,S7;C4:S0,S2,S3,S5,S4,S8;C5:S0,S2, S3,S6,S4,S8;

其中,产生状态树的步骤如下:

1)将状态图的根状态作为状态树的根状态root;

2)对状态图进行广度优先搜索,将其子状态作为root的孩子结点;

3)继续对孩子结点进行第二步操作,直到没有孩子结点,即搜索到叶子结点。

由图1 中UML状态图产生的状态树如图3 (图4 为改进后的状态树)。

对状态树中的兄弟结点的关系进行改进:

a)如果在状态树中,兄弟之间是或状态的关系,则不用改变。

b)如果在状态树中,兄弟之间是与状态的关系,将其中一个兄弟和其所有的孩子结点作为另一个兄弟的所有叶子结点的孩子。

2.2 生成EFSM中的转换

求全局转换的路径算法如下:

1)检查根转换,即检查root到任一个全局状态的叶子结点在原状态图中有没有转换,如果有则加入到全局转换路径中。

2)任取两个全局状态C1和C2。

3)依次搜索C1 和C2 中的叶子状态有没有自转换,如果有作为全局状态的自转换。

4)搜索状态图中所有的转换,得到以C1中的某个状态为源状态、C2中的某个状态为目标状态的转换,并且不是C2中的自转换,这个转换作为从C1到C2的全局转换。

5)依次循环所有的全局状态,直到搜索完所有的转换为止。

在得到全局状态和全局转换之后,由UML状态图就生成了EFSM状态转换图,即图2所示的EFSM。

3 测试用例的生成

将UML状态图转换成EFSM后,消除了层次和并发结构。扩展有限状态机也可以看作是一种特殊的图,状态图的测试理论方法可直接应用进行测试,这样类的输入和状态就实现了并行测试,如果产品可靠性发生改变,简单广度搜索和深度搜索构建出覆盖标准,并产生测试用例。

通过数据定义和路径标识的EFSM图可构建基于数据流的测试案例,实现了数据流的测试。

4 结束语

文章实现并改进了基于UML状态图在类测试用例的生成方法,对含有层次结构和并发结构的状态图,提出一种改进思想,将不含父状态的叶子结点作为新状态,然后依据原状态图中的转换来构造新状态之间的新转换,得到扩展有限状态机,并采用基于EFSM的测试方法或基于状态图的测试用例生成方法来生成所需的测试用例。

摘要:在面对复杂的系统时,EFSM模型在语法上的欠缺,非层次结构会导致状态爆炸。针对EFSM中存在的状态迁移不确定性问题进行改进,对状态图中存在的超态结构,提出一种转化方法来消除状态图中的层次和并发状态,将其转化为EFSM后,用基于扩展有限状态机的测试用例生成方法来生成系统的测试用例。

关键词:测试用例,EFSM,状态图

参考文献

[1]Cavalli A R,Favereau J P,Phalippou M.Formal Methods inConformance Testing:Result and Perspecrives[EB/OL].http://snad.ncsl.gov/madvtg/Papers/iwpts93.pdf.

[2]Coga N,Comparing Tor X,Autolink.TVG and UIO Test Algo-rithms[M].Springer-verlag Berlin Heidelberg.2001.

[3]张庆,雷航.一种基于UML状态图的面向对象类级测试模型[J].计算机工程,2005,21(31):76.

[4]张毅坤.基于UML状态图的类测试用例自动生成方法[J].计算机工程,2003,21(29):76.

上一篇:《心中的祖国》下一篇:在线式测量