个性化测试学生评测软件,团队项目(2+3):自动测试平台-- 需求文档

本文提出了一种针对软件工程课程个人项目自动评测和管理的平台设计方案。该平台旨在解决助教手动测试的问题,支持从GitHub爬取项目源代码进行自动化评测,包括代码正确性、规范性和复杂性评估。同时,平台提供多种测试数据生成方式,支持教师自定义测试脚本,并具备项目库管理和班级管理功能,为学生和教师提供实时反馈和成绩排行。
摘要由CSDN通过智能技术生成

0. 项目背景

在软件工程课程中,个人项目的测试一直是一个难以自动化的问题。不同的学校的项目题目不同,测试代码也不一样,每一届助教都需要手动测试或费时费力写一个自动批处理测试的程序。但在助教们使用的过程中发现,实际上大部分测试的大部分步骤都是可以固定下来的,比如说爬取Github仓库,命令行批处理运行等。希望能开发一个软工OJ,它的扩展性比较强,可以稍微定制化。比如能处理数独、能处理四则运算、地铁线路规划这样的题目作业的自动判定测试。它不仅能支持软工题目自动评分、还能支持代码查重、代码规范评分等,同时其定制化的成本不要太大,最好能够支持助教使用不同的语言来利用平台。

1. 项目用户分析

角色:学生、老师、管理员

1.1 管理员:

建立课程

赋予教师课程操作权限

处理一些特殊情况 ... ... .

1.2 学生:

提交代码

查看结果

1.3 教师:

项目发布:输入项目名称、项目详细描述、项目功能测试文件、是否允许学生自行评测。

项目浏览:查看发布的项目、删除项目、选择项目进行评测。项目信息包括项目名称、详细描述和选择该项目学生的列表。其中项目评测自动爬取学生提交在github上的项目源代码,并进行评测。

项目评测结果:显示项目中每个学生的评测情况。包括每个学生提交项目的代码规范程度、测试样例通过比例。同时包括项目总体报告。项目总体包括项目每个测试点通过的学生数量

2. 项目功能分析

2.1 主要角色的需求 (分角色描述)

学生:

选题

查看本次项目评测的结果

查看全班得分排行

教师:

项目发布:输入项目名称、项目详细描述、项目功能测试文件、是否允许学生自行评测。

项目浏览:查看发布的项目、删除项目、选择项目进行评测。项目信息包括项目名称、详细描述和选择该项目学生的列表。其中项目评测自动爬取学生提交在github上的项目源代码,并进行评测。

项目评测结果:显示项目中每个学生的评测情况。包括每个学生提交项目的代码规范程度、测试样例通过比例。同时包括项目总体报告。项目总体包括项目每个测试点通过的学生数量

2.2 核心功能

对用户提交的程序进行判题

对用户的基本管理功能

对题库的基本管理功能

可以建立作业、测验、考试

可以生成作业、测验、考试的结果表格

2.3 亮点功能

加入从GitHub爬取项目仓库的功能

代码正确性评测给出具体错误提示

对代码评分的指标:

运行测试数据的正确率;[运行测试脚本]

代码是否满足题目要求;[题目设定的检查点]

代码的规范性 [利用代码审查技术实现];

代码内聚、耦合、规模等指标 [利用代码度量技术实现]

测试数据生成方式多来源、多方式。

自动生成:可以由工具生成(Evosuite、Randoop)

老师手动生成

测试脚本的生成方式也是多来源、多方式 0. 全自动生成测试脚本:处理一些相对简单的、test Oracle相对明确的、或者蜕变关系明确的(蜕变测试)

半自动生成测试脚本框架:类似与 IDE 自动生成测试框架

老师手动生成:处理相对复杂的场景

2.4 其他功能

项目库(即题库)的管理:

题目(项目)要求描述。尽量模板化、规范化;

测试用例、测试脚本。尽量提供模版或一些撰写指南。

班级管理

学生班级分组;

老师和学生(班级)建立关联

排行榜管理

每个学生得分:

程序测试得分

开发过程得分

文档质量得分

其他一些统计分析功能

学生提交项目(commit)分布;

项目规模与提交时间关联分析;

... ...

3. 性能需求分析

学生在线分析的实时性需求:最好做到实时反馈测试结果;代码审查的结果;

一次处理学生提交的项目数量、规模需求;[需要细化]

4. 对现有软件的分析

1、GitHub: 提交代码,代码迭代管理ok,但缺乏对测试数据的自动检测 2、oj平台: 提交代码,缺乏个性化测试,深层分析和管理

用户需求: 教师:自动评分和反馈

学生:实时反馈代码质量,

第三代通信技术(3G)的应用已在全球范围内逐步展开,各大设备供应商正积极研发能提供更高性能的新一代网管系统来满足市场需求。网管系统是一个庞大复杂的通信管理系统,由于客户的功能需求以及网管系统自身技术的更新等原因使网管系统的版本不断更新,网管系统最终系统测试的工作量会很大。因此需要引入自动测试来提高测试效率保证测试质量。 本文首先分析了当前网管系统测试现状以及对自动测试的需求。在这样的前提条件下,论文采用了关键字驱动脚本技术,同时吸取了当前流行的自动测试框架中一些先进的思想,提出了一个适合网管系统测试自动测试框架。然后论文对该框架的测试流程进行详细的描述,在此框架的基础上进行系统的总体设计,并完成系统主要模块的设计与实现。本文最终实现了一个基于关键字驱动的自动测试平台APK(Automated test Platform based on Keywords)。 在APK的实现过程中采用基于C/S的网络框架,该网络框架可以实现多用户定制测试任务并完成分布式自动测试。在APK系统框架中对关键字进行了重新的定义,关键字不再是目前流行的框架中所定义的原子动作,而是一个用于实现一项测试规程的原子动作序列,同时该框架将结果验证环节放到关键字内部去实现。接口设计方面APK提供了一个外部接口用来整合网管系统中现有的业务测试工具,同时为了满足日后功能扩展的需要APK还预留了一个扩展接口。 APK可以应用于Java应用程序的GUI(Graphical User Interface)自动测试,同时结合外部接口调用外部工具还可以完成较复杂的业务自动测试。目前APK已经应用于网管系统的回归测试、边界值测试和大话务量环境数据的配置中,并已经取得了显著的效果,达到了预期的目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值