一种基于B/S架构的程序源代码的评判系统及方法技术方案

技术编号:10492058 阅读:252 留言:0更新日期:2014-10-03 19:19
本发明专利技术公开了一种基于B/S架构的程序源代码的评判系统及方法,包括浏览器端和服务器端,在服务器端,任务池管理单元获取到任务提交信息后进入检测,由文件系统生成单元生成任务对应的文件系统与目录,并将待测程序复制到生成的目录下,由脚本生成单元将执行待测程序所需的指令生成脚本文件同时由程序插装单元对待测程序进行插装并运行,生成各测试用例的执行路径与测试用例信息,故障定位单元根据测试用例运行产生的路径覆盖信息并进行故障定位,计算出语句的可疑度,按照可疑度的大小进行排序,并由覆盖率单元统计程序覆盖信息;打分单元依据评分标准完成打分;上述语句可疑度信息、覆盖率信息和任务分数经信息存取显示单元反馈到浏览器端后生成结果报告,并显示评判结果。本发明专利技术具有操作简单,使用方便的特点。

【技术实现步骤摘要】
一种基于B/S架构的程序源代码的评判系统及方法
本专利技术涉及一种基于B/S架构的程序源代码的评判系统及方法,具体地说是一种在B/S架构下能够对源程序进行自动插装、覆盖率获取、故障诊断、结果度量并完成代码质量评判的系统及方法。
技术介绍
当今随着计算机的日益普及,计算机软件起着越来越举足轻重的作用,软件质量问题也越发引起人们的注意。然而,计算机开发行业中的管理人员和团队领袖常常并不了解他们所领导的开发团队的编程习惯和思维定式。而开发人员通常都有自己的工作习惯和工作方式,并且某位开发人员的习惯可能不适合其正在参与的项目。若一位开发人员被安排到了不适合的开发风格和角色上,于是会引入更多的人为程序错误,甚至会导致时间的浪费以及生产力和效率低下。特别是计算机专业的学生作为初级软件开发者,培养过程中也需要逐步确立他们的编程和思维习惯。然而,在如今大学开设的计算机语言课程中,仍然需要教师手动批改学生的程序,对学生的掌握程度进行人工分析与评分。而学生在写代码的过程中,由于对代码理解程度有限,在程序出错后往往无法及时对程序进行修改,缺少一个实用性较高的自动评判系统对学生进行有针对性的指导和建议。同时,现代的软件开发工具,无论是自动化的软件测试工具,还是程序调试工具,若干质量评估可以从对已编译或源代码形式的测试代码的分析来确定,包括评估测试代码作出的描述性断言、依赖关系评估、秩复杂度评估、返回值断言、可变参数断言、以及测试有效性历史。其测试环境可用于测试应用程序代码质量,但还不足用于评估开发人员的编程习惯和思维模式,试图确定某个成员是否适合某类选定的开发模式是困难的。事实上,开发过程中程序中难免会出现一些错误,其中一些简单的语法错误可以通过编译提示信息加以改正。所谓软件测试就是当根据输入得到的输出结果与期望的结果不相符,即程序的运行出现了错误时,需要一个找出程序中存在的错误并纠正错误的过程,它是一项非常费时耗力的工作。据统计,在软件开发中,减少程序中存在的错误占到整个软件维护成本的50%—80%。调试工作需要对程序的功能、实现、语义、结构以及相关的失败执行有一定的了解,因而对程序进行调试是一项比较困难的工作。程序调试主要包括错误检测、错误定位、错误修复。其中错误定位是调试过程中一项比较困难的工作,它通过审查源程序语义和结构,结合分析程序的执行过程及结果,辅助开发人员找到程序错误位置。传统的程序调试方法一般是使用调试工具对程序进行手工错误定位,通过设置断点、执行时查看中间结果来逐步推断分析、定位错误。但这一手动调试过程会消耗大量宝贵的人力、物力资源。而在程序错误定位领域中,一种做法是在程序失效后,根据程序的运行时输入和程序的运行时行为来快速定位出错的程序语句。这种做法一定程度上可以帮助开发人员快速找到程序失效根源,从而减少因调试程序而付出的过多人力物力消耗。目前在人工智能和软件工程自动化领域已经出现一些诊断技术,其中基于测试的故障定位方法(Testing-BasedFaultLocalization;简称TBFL)是研究的热点。它只需提供测试用例成功和失效的信息,使得检测者在不必了解程序的内部结构和逻辑甚至不具备程序知识的情况下依然能检测程序错误,具有很强的便捷性与高效性。目前主流的故障定位技术如Tarantula、Safla等算法都具有较好的定位结果。这些技术进步有助于改进对开发人员资料的自动化分析,具体包括收集与一位开发人员所做的代码提交相关的信息,通过对收集信息(如测试通过率、程序错误严重程度)的统计分析来确定开发人员的基本资料属性,并提供一份关于此开发人员的编程行为的数据事实,参考工作角色描述对开发人员的资料进行分析判断。借助这样的评判方法及其系统,软件开发管理者容易寻找最适合当前开发团队的成员,方便确立同团队成员融合的工作风格,保证目前团队成员都处于合适的位置和效率巅峰,能够有效分工协作,从而对项目产生积极影响。本专利技术在上述技术的基础上提出一个基于开发习惯识别的自动化分析方法及系统,该系统能够综合运用自动测试、程序插装、程序错误定位技术所产生的质量数据,实现提交程序源代码的自动化评判。
技术实现思路
鉴于已有技术存在的缺陷,本专利技术的目的是要提供一种能够对程序进行自动故障定位的程序源代码的评判系统。为了实现上述目的,本专利技术的技术方案:一种基于B/S架构的程序源代码的评判系统,包括浏览器端和服务器端,其特征在于:所述浏览器端包括管理员单元组和用户单元组;浏览器端用于管理员单元组和用户单元组实现对其各自对应的信息管理、课程信息管理、任务操作管理的操作以及管理员单元组对用户单元组各个用户的用户信息进行查询、管理操作,并显示服务器端对用户当前测试任务的评判结果;其中,所述管理员单元组,用于为管理员实现信息管理、测试任务编译、下达的操作,包括:个人信息管理单元,用于管理员实现对个人信息的管理操作;课程信息管理单元,用于管理员实现对课程信息的管理操作;任务操作单元,用于管理员实现在相应课程下创建新的测试任务操作以及对已有任务的相关信息进行管理操作;用户信息管理单元,用于管理员实现对各个用户的用户信息进行查询、管理操作;其中,所述用户单元组包括:个人信息管理单元,用于各个用户实现对相应的个人信息的管理操作;课程信息管理单元,用于各个用户实现对相应的课程信息的管理操作;任务操作单元,用于各个用户实现查看相应的任务信息,对未提交的任务进行提交,并对提交完成的任务查看其诊断反馈信息;所述服务器端包括:信息存取显示单元,用于对浏览器端提交的管理员信息及用户信息进行数据库存取和显示;任务检查单元,用于暂时存储用户提交的任务代码,并对代码能否通过编译进行检查;任务池管理单元,用于管理浏览器端提交的任务队列,即实现定时检测任务提交情况,获取任务提交信息,并对用户提交的任务信息进行存储管理;文件系统生成单元,用于生成提交的任务队列的队首任务进行处理所需的所有文件目录并读取数据库中的待测程序,将其复制到规定的目录下;脚本生成单元,用于生成执行队首任务所需的各脚本文件,并存储于指定的文件目录下;程序插装单元,用于对待测程序进行插装并运行,将生成的程序执行路径与测试用例信息存放于指定目录下;故障定位单元,用于对待测程序进行故障定位,并将定位结果进行排序后存储于数据库中;覆盖率单元,用于获取待测程序运行过程中的覆盖率信息;打分单元,用于依据评分标准对用户任务完成情况进行评估打分,并将计算结果存储于后台数据库中,并由任务池管理单元删除该队首任务;所述任务池管理单元获取到任务提交信息后,任务进入检测状态,由文件系统生成单元生成任务对应的文件系统与目录,并将待测程序复制到生成的目录下,由脚本生成单元将执行待测程序所需的指令生成脚本文件同时由程序插装单元对待测程序进行插装并运行,生成各测试用例的执行路径与测试用例信息,所述故障定位单元根据测试用例运行产生的路径覆盖信息使用故障定位算法进行故障定位,计算出语句的可疑度,按照可疑度的大小进行排序,并由覆盖率单元统计程序覆盖信息;打分单元依据评分标准计算队首任务的完成分数;上述语句可疑度信息、覆盖率信息和任务分数经信息存取显示单元反馈到浏览器端后生成结果报告,并在网页页面上显示评判结果本文档来自技高网
...
一种基于B/S架构的程序源代码的评判系统及方法

【技术保护点】
一种基于B/S架构的程序源代码的评判系统,包括浏览器端和服务器端,其特征在于:所述浏览器端包括管理员单元组和用户单元组;浏览器端用于管理员单元组和用户单元组实现对其各自对应的信息管理、课程信息管理、任务操作管理的操作以及管理员单元组对用户单元组各个用户的用户信息进行查询、管理操作,并显示服务器端对用户当前测试任务的评判结果;所述服务器端包括:信息存取显示单元,用于对浏览器端提交的管理员信息及用户信息进行数据库存取和显示;任务检查单元,用于暂时存储用户提交的任务代码,并对代码能否通过编译进行检查;任务池管理单元,用于管理浏览器端提交的任务队列,即实现定时检测任务提交情况,获取任务提交信息,并对用户提交的任务信息进行存储管理;文件系统生成单元,用于生成任务队列中的队首任务进行处理所需的所有文件目录并读取数据库中的待测程序,将其复制到规定的目录下;脚本生成单元,用于生成执行队首任务所需的各脚本文件,并存储于指定的文件目录下;程序插装单元,用于对待测程序进行插装并运行,将生成的程序执行路径与测试用例信息存放于指定目录下;故障定位单元,用于对待测程序进行故障定位,并将定位结果进行排序后存储于数据库中;覆盖率单元,用于获取待测程序运行过程中的覆盖率信息;打分单元,用于依据评分标准对当前用户任务完成情况进行评估打分,并将计算结果存储于后台数据库中,并由任务池管理单元删除该队首任务;所述任务池管理单元获取到任务提交信息后,任务进入检测状态,由文件系统生成单元生成任务对应的文件系统与目录,并将待测程序复制到生成的目录下,由脚本生成单元将执行待测程序所需的指令生成脚本文件同时由程序插装单元对待测程序进行插装并运行,生成各测试用例的执行路径与测试用例信息,所述故障定位单元根据测试用例运行产生的路径覆盖信息使用故障定位算法进行故障定位,计算出语句的可疑度,按照可疑度的大小进行排序,并由覆盖率单元统计程序覆盖信息;打分单元依据评分标准计算队首任务的完成分数;上述语句可疑度信息、覆盖率信息和任务分数经信息存取显示单元反馈到浏览器端后生成结果报告,并在网页页面上显示评判结果。...

【技术特征摘要】
1.一种基于B/S架构的程序源代码的评判系统,包括浏览器端和服务器端,其特征在于:所述浏览器端包括管理员单元组和用户单元组;浏览器端用于管理员单元组和用户单元组实现对其各自对应的信息管理、课程信息管理、任务操作管理的操作以及管理员单元组对用户单元组各个用户的用户信息进行查询、管理操作,并显示服务器端对用户当前测试任务的评判结果;所述服务器端包括:信息存取显示单元,用于对浏览器端提交的管理员信息及用户信息进行数据库存取和显示;任务检查单元,用于暂时存储用户提交的任务代码,并对代码能否通过编译进行检查;任务池管理单元,用于管理浏览器端提交的任务队列,即实现定时检测任务提交情况,获取任务提交信息,并对用户提交的任务信息进行存储管理;文件系统生成单元,用于生成任务队列中的队首任务进行处理所需的所有文件目录并读取数据库中的待测程序,将其复制到规定的目录下;脚本生成单元,用于生成执行队首任务所需的各脚本文件,并存储于指定的文件目录下;程序插装单元,用于对待测程序进行插装并运行,将生成的程序执行路径与测试用例信息存放于指定目录下;故障定位单元,用于对待测程序进行故障定位,并将定位结果进行排序后存储于数据库中;覆盖率单元,用于获取待测程序运行过程中的覆盖率信息;打分单元,用于依据评分标准对当前用户任务完成情况进行评估打分,并将计算结果存储于后台数据库中,并由任务池管理单元删除该队首任务;所述任务池管理单元获取到任务提交信息后,任务进入检测状态,由文件系统生成单元生成任务对应的文件系统与目录,并将待测程序复制到生成的目录下,由脚本生成单元将执行待测程序所需的指令生成脚本文件同时由程序插装单元对待测程序进行插装并运行,生成各测试用例的执行路径与测试用例信息,所述故障定位单元根据测试用例运行产生的路径覆盖信息使用故障定位算法进行故障定位,计算出语句的可疑度信息,按照可疑度信息的大小进行排序,并由覆盖率单元统计程序的覆盖率信息;打分单元依据评分标准计算队首任务的任务分数;上述语句可疑度信息、覆盖率信息和任务分数经信息存取显示单元反馈到浏览器端后生成结果报告,并在网页页面上显示评判结果。2.根据权利要求1所述的一种基于B/S架构的程序源代码的评判系统,其特征在于:所述的程序插装单元是通过JTB对待测程序进行编译,生成抽象语法树,然后对抽象语法树进行插装并生成插装后的源文件,通过结合测试用例运行插装后的文件,生成所述的故障定位单元所需要的信息。3.根据权利要求1所述的一种基于B/S架构的程序源代码的评判系统,其特征在于:所述故障定位单元采用的是基于覆盖信息统计的Tarantula算法和Safla算法,所需信息为测试用例运行产生的路径覆盖信息和测试用例运行的成功与否信息,然后统计语句在成功执行和错误执行的出现次数,算出每个节点的故障可疑度,并转化成JSON数据格式存储于数据库中。4.根据权利要求1所述的一种基于B/S架构的程序源代码的评判系统,其特征在于:所述的覆盖率单元通过Emma算法在待测程序执行过程中获取待测程序的执行路径并计算得出程序的覆盖率以及各函数的覆盖率,以XML文件的格式存储于指定文件目录下;在浏览器端请求结果报告页面时,信息存取显示单元解析该XML文件并转化为JSON数据的格式传至浏览器,并以表格的形式进行显示。5.根据权利要求1所述的一种基于B/S架构的程序源代码的评判系统,其特征在于:所述管理员单元组,用于为管理员实现信息管理、测试任务编译、下达的操作,包括:个人信息管理单元,用于管理员实现对个人信息的管理操作;课程信息...

【专利技术属性】
技术研发人员:陈荣马凯刘平月李辉高健陈世峰
申请(专利权)人:大连海事大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1