尚择优选最新软件测试可行性研究报告.docx
《尚择优选最新软件测试可行性研究报告.docx》由会员分享,可在线阅读,更多相关《尚择优选最新软件测试可行性研究报告.docx(11页珍藏版)》请在冰豆网上搜索。
![尚择优选最新软件测试可行性研究报告.docx](https://file1.bdocx.com/fileroot1/2023-3/30/24cb805a-117e-487d-909c-034fdde55b39/24cb805a-117e-487d-909c-034fdde55b391.gif)
尚择优选最新软件测试可行性研究报告
最新软件测试可行性研究报告
一、总论
1、项目的主要内容及技术原理简述
软件测试应是“理论+技术+辅助工具+管理”的结合体,辅助测试工具在其中起着举足轻重的作用。
以目前普遍使用的C/C++程序作为测试对象,预期实现一个能进行方法级、类(簇)级和系统级三个级别测试的原型系统。
主要包含以下内容:
基于程序控制流图(ControlFlowGraph,CFG)分析、探针插装和I/O重定向等技术,实现方法级结构性测试;按照需求规约运用扩展有限状态自动机(ExtendedFiniteStateMachine,EFSM)对类的状态转换行为进行建模,并依此自动生成测试用例集,实现基于状态的类测试;在系统级别上,运用等价类划分、边界值分析等常规策略进行黑盒测试。
此外,运用聚类技术对失效执行进行聚类分析,并从中抽样出典型的测试执行用例用于指导程序的进一步诊断。
最终实现的原型平台要求具备多级别测试、测试项目化管理、自动化/可视化程度高、扩展性好等特点。
2、项目的目的和意义
信息技术的飞速发展,使软件产品应用到各个领域,软件规模也相应地急剧增大,软件测试的内容也就庞大且复杂。
诸多的软件开发组织在进行产品质量保证过程中仍是通过软件测试工程师手工作业的方式,显然不能适应现代的大规模软件开发。
设计新型的软件测试工具框架结构、研制自动化或半自动化的软件产品测试平台是当今软件业界一个极具现实意义的课题。
软件测试的研究应从“理论+技术+辅助工具+管理”四个侧面展开,且它们之间互相依存、缺一不可。
软件测试理论的研究有助于从全局上洞察各种测试方法的优越特性及固有不足,还有利于进行测试充分性的估量及测试活动的部署等;作为被测实体的软件,可能由多种程序设计语言和开发模式实现,因此对待它们并没有一成不变的通用技术,而应在现有测试理论的指导下,结合被测软件的特征,调整、改进已有技术或开创针对性较强的新技术;作为软件工程的一个重要分支的软件测试,必定是一个面向工程、强调实践、注重实用的子学科方向,除了在软件产品测试活动中进行合理、优化的管理外,更重要的是提升测试活动的自动化程度,因此研制高效、便捷和可视化程度高的辅助测试工具(平台)尤为重要。
运用测试工具展开测试的优点主要表现在:
(1)提高测试效率,从而降低测试开销;缩短产品测试时间,有利于软件版本的按时发布。
(2)与测试人员的手工作业相比,基于辅助工具的测试更为严密,整个测试过程中的强度更为一致。
(3)有利于测试过程的记录、测试活动的重现。
(4)对于功能、特征类似的软件,有利于测试数据、测试策略等资源的重用。
(5)此外,还有利于测试报告的生成、保存、交换等,为程序诊断、缺陷快速定位提供便利。
3、相关技术领域国内外发展现状、趋势
由于测试工具能降低软件测试的代价、提高软件测试的质量和效率等,国外很早就注重软件测试工具的研发,并形成了较多的原型工具以及部分较为显著的商业工具。
但目前的测试工具主要表现为功能性测试工具、性能测试工具等几类,在结构性测试和测试管理等方面则比较薄弱。
我国在这方面的研究则处于非常落后的地位,目前仅北京航空航天大学软件工程研究所、东南大学、WH大学软件工程国家重点实验室等单位在软件测试自动化方面进行了较为深入的研究。
纵观国内外的研究现状,软件测试工具存在仅注重功能性测试、功能单一、缺陷探测能力不强、缺乏对面向对象程序的支持等缺点。
因此,在软件测试平台的实现方面尚有很多值得探究与改进的地方。
当前,绝大部分软件开发工具对其软件产品进行质量保证是仍是通过招募大量的测试人员进行人工测试。
这种方式效率低下不说,且存在测试不周全、测试结果不可靠等诸多问题。
软件测试自动化(或半自动化)工具的研发将有效地解决上述难题,对促进软件开发组织的生产效率、提升产品质量与可靠性、节约软件开发成本、提升企业形象等方面均将起到很好的推动作用。
4、项目申请单位、主要合作申请单位及项目主要负责人的基本情况
JX财经大学软件学院于20XX年6月经JX省教育厅批准成立。
学院自成立以来,得到学校的重点扶持和用友软件公司的大力协助,在学院全体教职员工的努力下,软件学院在学科建设、教学管理、师资队伍建设、科研及学生培养方面取得了突破性的进展,设有软件工程系和网络工程系,成立了数据库研究所、ERP研究所、软件测试技术研究所、教育技术研究所和嵌入式系统研究所等5个研究机构,于20XX年成功申报了“教育技术硕士点”。
学院坚持走人才兴院的发展之路,积极开展师资引进工作,现已基本形成了一支基础理论扎实、专业知识面广、实践经验丰富的高水平师资队伍,全体教师都具有硕士以上学位,其中55%教师具有博士学位。
HZ科技大学计算机科学与技术学院下设3个系:
计算机科学与工程系、计算机科学系、计算机科学与应用系;2个研究所:
计算机科学理论研究所、数据库与多媒体技术研究所;校计算中心(含校园网络中心、HZ科技大学IBM计算机技术中心、计算机教学实验中心)。
外存储系统国家专业实验室、教育部信息存储系统重点实验室、CERNETHZ地区网络中心及其WH主节点、国家高性能计算中心(WH)等设在此院。
学院现有教职工340人,其中教授35人,副教授58人,高级工程师9人。
学院拥有“计算机系统结构”国家重点学科和计算机科学与技术一级学科博士学位授予点:
拥有计算机系统结构、计算机软件与理论、计算机应用技术和信息安全四个博士学位授予点和硕士学位授予点;1个一级学科•博士后流动站;在读博士生190余人,硕士生940余人,该院设有计算机科学与技术、信息安全两个本科生专业,在读本科生2200余人。
学院十分重视科研工作,在“六•五”——“十•五”期间承担和完成国家科技攻关项目、国家自然科学基金项目及国家“863”等高科技重点项目160余项,荣获1项国家自然科学奖;3项国家发明奖;2项国家级科技进步奖;50余项省部级奖。
19XX年以来在国内外重要学术刊物及学术会议上发表论文2000余篇。
项目申报人于20XX年6月获HZ科技大学计算机软件与理论专业博士学历、学位。
在此前5年的硕博连读阶段,一直从事软件测试方面的研究,先后参加软件测试方面的纵向研究课题4项,还参加50万元以上横向应用项目研究课题3项,其中代表性工作如下:
(1)20XX年9月-20YY年12月,“十五”××科技预研项目《基于C/C++/VC环境的××应用软件测试研究》(No.413150902),项目经费55万,已验收。
主要负责测试技术研究和系统实现。
(2)20XX年6月-20YY年12月,“十五”××科技预研项目《电子信息系统的综合集成方法研究》(构件专题,No.10104010201)之构件软件测试子方向,项目经费60万,已验收。
主要负责构件软件测试理论与技术研究。
(3)20XX年10月-20YY年6月,HB省自然科学基金《并行软件测试技术研究》(No.20XXABA266),负责并行程序模型检验技术研究。
项目申报人在上述研究过程中,在国内外权威、核心期刊上发表学术论文17篇(其中被SCI收录2篇,被EI收录6篇,被ISTP收录5篇)。
项目申报人完成的博士学位论文《面向对象程序分析与测试技术研究》已被评为HZ科技大学20XX年度校级优秀博士论文。
此外,还与其他合作研究者共同完成多篇权威、核心期刊论文,目前正在指导两名软件工程硕士生从事软件测试相关方面的研究。
5、有关本项目的现有工作基础和支撑条件
项目申报人在硕博连读的五年研究过程中,一直从事软件测试方面的研究,先后主要关注面向对象程序、Web应用程序、构件软件的测试方法与技术,为本课题的开展提供了良好的理论基础和技术储备。
先后参加软件测试方面的纵向研究课题4项,还参加应用项目研究课题3项。
项目申报人所在的JX财经大学软件学院软件测试研究所主要致力于软件测试方面的科研和教学工作,目前有120平米左右的科研用房,拥有计算机40余台,为本课题的研究提供了很好的实验条件。
项目申报人在基础理论与技术知识方面做了较扎实的前期准备工作。
合作单位(HZ科技大学计算机科学与技术学院)的合作研究者在软件测试领域有多年的研究经验和丰富的研究成果,该单位拥有极为丰富的电子期刊资源,为课题研究过程中的论文检索、查新提供便利。
此外,项目申报人目前可支配科研启动经费7万元,也是本项目研究资金的一种很好补充,有利于该项目研究的延续性和向实际软件开发产业界进行成果转化。
二、项目实施方案
1、项目达到的目标及考核的主要技术经济指标(含知识产权、技术标准)
本项目要在Windows环境下,针对以C语言为代表的过程式程序和以C++为代表的面向对象程序实现一个半自动化的测试原型平台,其预期技术水平达到国际先进、国内领先,技术表达形式为论文和新产品(原型工具平台)。
在技术经济指标方面,力争实现在省内外数家软件开发企业或组织进行软件新产品(即研制的软件测试平台)的推广应用,并实现1-2项关键技术的知识产权申请。
2、项目的主要研究(开发)内容
项目研究开发内容主要包含以下几个方面:
(1)研究C语言静态分析模型:
对标准C语言的语法语义进行研究;根据相关测试模型提取相应的语法和语义信息,作为测试实例生成程序、动态测试程序的原始数据和依据。
C语言的研究有两个部分,一是C语言作为过程性语言,对其执行路径进行分析,为分支覆盖测试方法打下基础。
二是对C语言程序的本身特征进行分析,如全局变量的定义和使用,功能模块的耦合性等等,为使用统计学进行软件测试打下基础。
(2)研究C++语言静态分析模型:
对标准C++语言的语法语义进行研究;根据相关测试模型提取相应的语法和语义信息,作为测试实例生成程序、动态测试程序的原始数据和依据。
C++语言的研究将集中于两个方面,一是C++语言本身的语法语义特征,特别是消息机制,这些将有助于设计C++语言程序的软件测试自动机;二是对C++语言在编程方面存在的缺陷,特别是开发人员常犯的错误进行研究,这有助于对C++语言程序进行测试集的生成。
(3)研究开发C、C++语言静态分析原型程序
(4)研究基于分支覆盖测试方法的测试及生成算法,并设计开发基于分支覆盖测试方法的测试集生成原型程序。
(5)研究C、C++语言动态执行检测技术;并设计开发C、C++语言动态执行检测原型程序。
(6)研究基于VC++开发环境的软件测试模型,并设计开发基于VC++开发环境的软件测试原型程序。
3、试验(开发)规模及地点
本实验研究项目将成立20人左右的研发小组开展试验,分别在JX财经大学软件学院软件测试技术研究所(12人左右)和HZ科技大学计算机学院数据库与软件工程实验室(8人左右)进行联合研发。
4、主要技术关键及创新点
本项目是在Windows平台上用VisualC++开发的一个针对C/C++程序的集成测试系统原型,其关键性技术主要包含以下内容:
(1)对C/C++源程序进行词法、语法静态分析;
(2)在方法级别上(方法内或方法间),通过探针预置实现结构性测试;(3)在类级别上,实现基于状态的功能性测试;(4)在系统级别上,运用等价类、边界值分析、自适应随机等策略进行黑盒测试;(5)测试结果的总结与分析;(6)此外,对面向对象程序重要特征之一的异常处理机制进行静态分析和动态测试。
该项目的主要创新点如下:
(1)根据面向对象程序的粒度,提供方法级结构性测试、类级基于状态的功能性测试、以及系统级的黑盒测试,还能辅助进行程序中异常结构静态分析和异常动态测试;
(2)工具的自动化程度高,仅需要少量的测试人员参与;
(3)采用测试项目管理机制,有利于测试活动的部署,更易推广到实际应用中,通过测试项目的有效管理能实现部分测试资源(如用例)的重用;
(4)测试环境可视化程度高,提供了良好的CFG图显示、状态转换图绘制等界面,并对程序语句结构信息、CFG图、测试用例提供了合理的存储结构和技术;
(5)扩展性好,目前支持C、C++两种语言。
由于系统采用开放式设计,只需改写词法、语法分析模块便可扩展用于Java、C#等语言程序的测试。
5、实施方案(含技术路线、工艺流程及技术关键的解决方案)
原型工具研究开发过程中的关键技术的解决途径如下:
A.静态分析
在原型系统中,需采用Lex与Yacc对C/C++源程序进行静态分析,用于指导测试探针自动插装、程序I/O语句替换和测试驱动器的生成等。
一般而言,被测程序都已编译通过,不存在词法、语法错误,故不再需要进行词法错误和语法错误的检查和处理。
词法分析是将C/C++惯用的词法如关键字、专用符号、注释、标识符、数字等终结符划分出来作为语法分析的输入;语法分析的任务是对词法分析的结果进行语义分析,产生抽象语法树AST。
进一步地,根据AST产生程序结构信息,包括:
类层次信息表、类结构信息表、函数及调用关系列表、语句列表、程序控制流图、程序分支点和输入/输出语句ID等。
语法分析是识别程序结构的过程,通常采用递归下降法,具体做法是将语法规则的每一项都写成一个处理函数,分析过程中采用向前看一个语言单元,判断所处的状态并调用相应的处理函数。
B.插装及输入、输出语句替换
依据词法、语法分析产生的抽象语法树(程序控制结构信息),对C/C++源程序进行语句插装、分支插装、条件插装或函数插装。
程序插装的目的是为了记录测试执行的语句和路径覆盖信息,并与测试驱动器和测试结果的收集/分析模块相结合,通过驱动运行被测系统,记录运行时对象的状态来跟踪程序的动态行为。
另一方面,通过I/O语句替换或重定向将程序所有读写操作均转换成文件操作方式。
C.基于状态转换的建模及用例生成
面向对象程序在类级别上通常呈现出对象的状态转换特征。
根据类的需求规格说明,用扩展有限状态自动机EFSM对类所应预期实现的功能进行建模表示,在该建模形式的基础上,按照所有状态、所有转换、转换路径等覆盖准则生成形如方法序列的测试数据,每条测试数据与它在EFSM上所对应的预期状态一起构成测试用例。
D.测试执行(驱动)器
依据测试工程文件中所部署的被测对象粒度大小,自动生成对应于模块代码的测试驱动器。
主要有两类推进测试的执行部件,即结构性测试执行器和基于状态的测试执行器。
结构性测试执行器一般应用于方法级测试之中。
对经过探针插装和I/O替换的方法或函数进行适当地包装,使之成为一个可被编译执行的程序体,注入根据一定结构性覆盖准则形成的用例来运行该程序体,并记录程序执行过程中的实际输出。
基于状态的测试执行器主要用于类(簇)级的功能性测试,将被测类实例化形成对象,根据测试用例的要求将该对象预置到起始状态,执行用例预定义的一系列方法序列后记录对象所到达的状态。
此外,在方法级和系统级还通过测试执行器实现了常规的黑盒测试。
E.测试结果总结/分析模块
对测试过程中产生的测试结果进行有效的统计、分析与评估,同时参照已有的测试案例库进行决策支持分析,产生一份完整的测试报告。
根据用例在测试运行中的执行剖面,运用聚类技术提取出能揭示缺陷的部分典型用例用于程序诊断。
F.测试项目管理
原型平台预期能测试三种类型的程序(称作测试对象):
单个C程序文件、单个C++程序文件以及VisualC++工程所包含的程序文件。
针对每个测试对象,平台均会建立一个测试管理项目,用于保存测试过程中的中间结果和临时文件。
根据用户的需要,可以对同一测试对象展开不同的测试工作,在平台中表现为不同的测试任务。
测试任务可以看作是一个测试执行过程,即生成测试执行器、输入测试数据、测试结果对比与分析、产生测试报告等。
本系统中的测试任务分方法级、类级和系统级三种,测试项目管理的基本框架如图1所示:
图1测试项目管理框架
6、技术风险分析
目前也只是在软件测试自动化方面做一些有益的探索,所实现的原型工具尚可能存在如下技术风险:
(1)目前对C++的多态、动态绑定、GUI支持等复杂特性还不能提供支持;
(2)面向结构的测试用例自动生成由于要求解较为复杂的约束系统,需要一定的人工参与,所生成的测试用例覆盖率有可能达不到最佳;
(3)对于一些复杂程序,CFG图布局需要进一步地优化;
(4)自动创建的测试驱动器(执行器)的执行速度快慢与否对整个测试平台的性能将产生重大影响。
上述潜在的技术风险可能导致的后果是测试工具针对大规模的实际应用程序的测试可能存在不完整或效率不高等问题,我们将借助本项目的资助着力研究如何避免上述风险。
7、分年度的工作内容、目标
(1)20XX年7月—20YY年12月的研究工作:
•研究C/C++程序静态分析模型;
•设计C/C++程序静态分析原型程序的总体结构;
•研究C/C++程序基于分支覆盖测试方法的测试用例集生成算法。
(2)20XX年1月—20YY年6月的研究工作:
•设计基于分支覆盖测试方法的测试用例集生成原型程序;
•研究C/C++程序动态执行检测技术;
•设计C/C++程序动态执行检测原型程序的总体结构。
(3)20XX年7月—20YY年12月的研究开发工作:
•C/C++程序静态分析原型程序的开发:
在上一年度年对C/C++程序静态分析原型程序的设计基础上,开发C/C++程序静态分析原型程序;
•C/C++程序动态执行检测原型程序的开发:
在20XX年对C/C++程序动态执行检测原型程序的设计基础上,开发C/C++程序动态执行检测原型程序;
•研究C++程序类测试模型;设计C++程序类测试原型程序的总体结构。
(4)20XX年1月--20XX年6月的研究开发工作:
•研究基于VisualC++的软件测试模型;
•完成了对C/C++/VC++的测试原型系统的开发;
•对项目进行总结,整理材料、准备验收。
8、申请单位、合作申请单位及主要人员的分工
申请单位JX财经大学软件学院主要负责系统的总体设计、C/C++程序基于分支覆盖测试方法的测试用例集生成、动态执行检测技术以及C++程序类测试用例自动生成等部分的研发工作。
合作单位HZ科技大学计算机科学与技术学院主要负责协作进行总体设计、C/C++程序静态分析、C++程序类测试驱动器实现等部分的工作。
项目主要参加人员的分工如下:
(1)测试理论与系统总体设计:
XXX;
(2)程序静态与动态分析技术的研究:
XXX;
(3)测试用例的自动生成:
XX
(4)系统实现:
XX
9、组织及管理的运行机制
本项目按照申请单位与合作单位分两个研发小组负责管理,项目申请单位的研发人员由项目负责人毛澄映负责管理,其中测试理论与技术部分由毛澄映领导小组人员开展研究,XXX作为项目系统实现阶段的技术负责人;合作单位的研发人员由XXX教授负责协调管理,其中测试理论与技术部分由XXX负责领导研究,系统部分功能的实现由XXX负责协调开发工作。
本项目实施定期工作汇报与研讨的过程管理方式,在第1年度中申请单位和合作单位定期(每季度)进行项目进展情况汇报与关键技术难点研讨;第2年度则每2月进行测试系统原型开发工作的督查,其工作进展与质量由项目负责人进行管理。
10、相关依托工程(含技术)的落实情况
目前,与本项目依托的并行程序测试关键技术研究已成功申请到HB省自然科学基金,并将于20XX年6月份结题。
此外,与本项目具有一定相关性的并发程序测试技术研究和面向方面软件测试技术研究已分别申请20XX年度省教育厅科学技术研究项目和20XX年度JX省自然科学基金项目,目前尚未落实。
11、有关本项目的国内外知识产权状况分析
目前国外已经出现一些商业化或开源的软件测试工具,主要包括:
(1)结构性测试工具,C++Test、Cantata++等;
(2)功能性测试工具,RationalTeamTest、Robot、TestRuner、VisualTest、QC/Replay等;(3)性能测试工具,QALoad、RationalSuitPerformanceStudio等;(4)测试辅助工具,Panorama-C/C++、BugTracker、VisualBugz、TestManager等。
上述工具主要运用上世纪80年代形成的一些过于基本的技术。
在国内具有代表性的工作是,BJ航空航天大学软件工程研究所对C++、Java等面向对象程序展开研究,研制出了QESATC++、QESATJava两款软件分析与测试工具;JS省软件质量研究所和WH大学软件工程国家重点实验室联合研制出软件质量保证支撑系统SQAS。
但这两款原型工具主要处理单元级别(即方法级)的测试,较高层次的结构性测试则相对涉及较少,在基于状态的类测试等方面也没有实现。
三、市场分析
1、市场预测(含同类项目的国内外市场情况)
目前国内软件测试工具销售市场主要是国外产品占据绝对优势,特别以IBMRational系列、C++Test、Panorama-C/C++、WebRunner、WebLoad等产品最为突出。
要使用上述工具均要花费高昂的费用,是一般国内软件企业难以承担的。
虽然开源的测试工具(例如JUnit、NUnit等)能在一定程度上缓解上述压力,但开源工具一般仅能支持小型应用且往往局限于单元测试。
因此,只要能成功开发出国内自主知识产权的软件测试工具,一定会受到国内软件开发企业或组织的欢迎,具有广阔的市场前景,且为我国民族软件的产业的发展起到积极的促进作用。
2、本项目的市场竞争优势、风险及市场策略
正如本项目创新点所阐述的那样,其市场竞争优势主要表现在:
(1)除对一般过程式程序展开结构性和功能性测试外,还能实施面向对象程序的测试,且具备方法、类和系统三个级别的测试能力,尤以基于状态的类测试技术最为突出。
(2)工具的自动化程度比较高,测试活动过程中需要测试人员参与的步骤比较少。
(3)对测试活动进行有效的项目管理,已达到测试步骤的优化部署,实现部分测试资源(如用例)的重用。
(4)测试环境可视化程度高,提供了良好的程序控制流图(CFG图)显示、状态转换图绘制等界面。
本项目的市场风险主要在开源测试工具的推广上,但开源测试工具毕竟存在较大的局限性,所以对整个市场的影响不至于太大。
在市场推广上我们将积极主动的和国内中小型软件开发企业进行联系与合作,在第一阶段向他们免费发布所开发的工具,以便他们试用并反馈对产品进一步改进的信息;第二阶段向他们收取一定的软件使用费,并组织我方人员对这些企业的测试人员进行软件测试专业知识的培训,收取一定的培训费和测试工具后期维护服务费。
3、经济社会效益分析
20XX年底,美国国家标准技术研究所(NIST)的统计报告指出,美国一年由于软件失效导致的经济损失约占60亿美元,而通过测试能减少由于软件失效引起经济损失的三分之一(22亿美元)。
由此可见,加强软件测试对提升软件产品可靠性、降低国民经济损失起着至关重要的作用。
在我国加快现代化信息建设、推进民族软件产业发展的进程中,保证所开发的软件产品质量的重要更是不容忽视。
在这样的社会、经济及技术需求背景下,研制自动化程度比较高的软件测试工具显然具有广阔的市场前景,并能在民族软件产业发展方向产生良好的经济效益。
4、推广应用及产业化分析
对于国内中小型软件开发企业来讲,他们难以有足够的资金用于购买国外的商品化测试工具,因此我们推出的价格低廉的测试工具平台正好满足了他们的需求。
并且,这些软件开发企业主要使用目前占主导地位的面向对象程序设计语言进行软件开发,我们的测试工具具备较强的面向对象程序测试能力正好符合了他们的业务需求。
另一方面,在国内目前专门从事软件测试工具开发的公司甚为少见,因此一旦我们的技术与原型系统工具比较成熟时,将会有很好的融资或合作开发的机会,从而使本项目的研究成果较好地走上产业化发展道路。
四、经费预算及筹措方案
1、经费预算(总投资)
本项目在现研发阶段预计总投资6万元,