本自动化测试的程序用于自动化测试WordCount作业,采用Java开发(基于jdk1.8+),基于Maven来管理项目。

支持的语言和开发进度

语言 进度
Java 已测试并投入运行
C++ 开发完毕,待测试
Python 开发中
NodeJS 待开发

实现的功能

克隆项目

从指定仓库克隆项目,由于访问Github的网络经常不稳定,也支持我们先预备好项目的仓库,不从Github实时下载。

生成测试数据

  • 可以生成指定长度的随机ASCII码字符串
  • 可以将我们指定长度的测试数据写入指定位置的指定数量的文本文件中,这些文本文件将作为后续的测试用例文件。

编译

这里的编译和以下的运行都是有如下两个前置要求:

  1. 作业中必须明确要求入口文件的文件名是什么,以Java为例,就是Main方法所在的类文件的文件名是什么,以WordCount作业为例,我们要求学生的主函数必须定义在src目录下一个名叫WordCount.java文件中,因为这样我们才知道要运行哪个文件来执行测试用例。
  2. 助教在自己机器上运行的时候,必须要有对应语言的编译和运行的环境且要规定好一致的语言版本。否则编译这一关会有很多问题导致无法运行学生的代码。

编译时候会设置对应的超时时间,不同的语言可以设置不一样的编译超时时间,以Java为例,默认编译超时时间是5秒钟

运行

见编译部分提到的两点要求。

运行的时候也会设置对应的超时时间,不同的语言针对不一样的测试用例可以设置不一样的运行时间,超过这个时间,会直接将学生这个用例的耗时数设置为-2,-2表示耗时的记录。

评分

  • 每个用例的得分以及汇总得分
  • 执行每个用例的耗时

注:我们统计的耗时是运行部分的耗时,不包括编译的耗时。

导出结果到CSV

  • 分数
  • 耗时
  • Git提交记录
    • 提交次数
    • 每次提交的commit信息

效果预览

其中:

StudentNo: 表示学生学号的后五位

Score:汇总分数,即Score1 + Score2 + … + Scorei 之和

Scorei:表示第i个用例的得分

Timei:表示第i个用例的耗时

commit_times:表示每个学生的提交次数

commit_details:表示每个学生的提交信息,JSON格式

使用方式

目前没有将项目打包,还是以源码的方式运行,主要是方便调试和改代码,后续会完善打包运行。

我们必须先规定好测试代码的位置,以WordCount项目为例,所有同学的代码都以学号命名收集到如下仓库中:

https://github.com/kofyou/PersonalProject-Java.git

目录结构为:

PersonalProject-Java

  • 学号1

    • src

      • WordCount.java
  • 学号2
    • src

      • WordCount.java
      • Lib.java
  • 学号3
    • src

      • WordCount.java

…

克隆代码

git clone https://github.com/GreyZeng/WordCountAutoTest.git

克隆完毕后,用Jetbrains IDEA 打开文件WordCountAutoTest,并且在WordCountAutoTest下新建download文件夹,如下图:

在download文件夹下新建一个judge文件夹,里面放对数程序,这个对数程序的目的就是,把测试用例的答案算出来,

这个对数程序要保证正确!!!最好多个助教一起做一下题目,然后互相验证没问题了,在把对数程序放上去。

PS:对数程序请不要提交到Github,防止学生抄袭!

如上图,我放了一个对数程序WordCount.java

关注并确认Client.java类中的如下几个参数,其他参数可以参考注释进行修改,一般不需要改:

参数名称 备注
NEED_CLONE 设置为true,会不断重试clone代码仓库
CLONE_URL 改成对应的地址,例如:https://github.com/kofyou/PersonalProject-Java.git
JUDGE_PROGRAM 改成对数程序的绝对路径地址,例如:"D:\git\WordCountAutoTest\download\judge"
TESTCASE_NUM 默认测试用例的数量,默认10个
TEXT_MIN_LENGTH 测试文本的最少字符数,默认100个字符
TEXT_MAX_LENGTH 测试文本的最大字符数量,默认1000000个字符

修改好配置参数后,直接在IDEA里面Run Client.java,等待执行完毕即可。

说明:运行的时候,会在之前download的目录以当前时间戳建一个文件夹,这样做的目的是保证每次运行不会有文件夹冲突。

执行完毕后,按如下目录找需要的信息:

目录 说明
download/时间戳/cases/ 存放用例的位置
download/时间戳/answers/ 存放答案的位置
download/时间戳/PersonalProject-Java/ 项目目录
download/时间戳/PersonalProject-Java/学号/output/ 每个学号的学生的执行用例的输出文件夹
download/时间戳/result/result.csv 本次测评的csv文件

待完善的功能

  • Git的每次签入详情,代码的修改和新增情况。
  • 代码雷同部分,尝试接入moss 。
  • 防止代码里面修改服务器文件,恶意运行多线程 ,参考Judger 。

源码地址

Github

自动化测试工具(基于WordCount作业)的更多相关文章

  1. 基于MBT的自动化测试工具——GraphWalker介绍和实际使用

    GraphWalker是一个开源的基于模型的自动化测试工具,它可以用来通过图形测试模型来自动生成测试用例. 本文主要描述了使用yed画出FSM, EFSM模型图(常见的流程图),然后使用GraphWa ...

  2. 推荐一款国产优秀的基于 AI 的 Web 自动化测试工具——kylinTOP 测试与监控平台

    对于于一般的传统的自动化测试工具,如:Selenium,robotFramework,QTP等.QTP可以通过操作录制生成自动化用例脚本.生成的脚本与Selenium.robotFramework类似 ...

  3. 推荐一款Diffy:Twitter的开源自动化测试工具

    1. Diffy是什么 Diffy是一个开源的自动化测试工具,是一种Diff测试技术.它能够自动检测基于Apache Thrift或者基于HTTP的服务.通过同时运行新/老代码,对比运行结果,发现潜在 ...

  4. 手机GUI自动化测试工具选择

    (Graphical User Interface,简称 GUI,又称图形用户接口) 我们需要针对自身产品的需求,从中选取一款合适的工具来实现自动化.对于移动客户端GUI的自动化而言,需要保证选取的工 ...

  5. Android 手机自动化测试工具有哪几种?

    1.Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工 ...

  6. 自动化测试工具QTP和SilkTest横向PK(转)

    转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...

  7. 常用自动化测试工具介绍(支持B/S、C/S)

    一.功能测试工具1.QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是qui ...

  8. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  9. 推荐五款Android 应用的自动化测试工具

    如今自动化测试已经应用到每天的测试中.这不足为奇,因为自动化测试在测试过程中节约了时间,还能避免包括人为因素造成的测试错误和遗漏. 自动化测试工具选择很多.一些是开源的,一些非常贵.一些自动化工具是几 ...

随机推荐

  1. 2018ACM上海大都会赛 F Color it【基础的扫描线】

    题目:戳这里 题意:有n*m个点全为白色,q个圆,将q个圆内所有的点都染成黑色,问最后剩下多少白色的点. 解题思路:每一行当做一个扫描线,扫描所有的圆,记录每一行在圆中的点即可,O(n*q). 附ac ...

  2. 微服务架构Day04-SpringBoot之web开发

    引入项目 把html页面放在模板引擎文件夹templates下,这样能使用模板引擎的功能. 登录页面国际化 国际化:编写国际化配置文件 1.编写国际化配置文件,抽取页面需要显示的国际化消息 2.Spr ...

  3. 写给程序员的机器学习入门 (十一) - 对象识别 YOLO - 识别人脸位置与是否戴口罩

    这篇将会介绍目前最流行的对象识别模型 YOLO,YOLO 的特征是快,识别速度非常快

  4. when I was installing github for windows ,some errors occurred !

    1: 2: 3: 4: install.log error messages:

  5. Creative Commons : CC (知识共享署名 授权许可)

    1 https://creativecommons.org/      Keep the internet creative, free and open. Creative Commons help ...

  6. Masterboxan INC金融:在区块链技术基础上推动业务模式的变革创新

    10月初,2020年国际区块链技术与应用大会在硅谷开幕,全球内外区块链技术项目团队.行业领导.专家等共聚一堂,围绕区块链技术与应用展开讨论交流.美国Masterboxan INC万事达资产管理有限公司 ...

  7. [转]Ubuntu16 压缩解压文件命令

    原文地址:http://blog.csdn.net/feibendexiaoma/article/details/73739279,转载主要方便随时查阅,如有版权要求,请及时联系. ZIP zip是比 ...

  8. 文件描述符(File Descriptor)简介

    本文转载自文件描述符(File Descriptor)简介 导语 维基百科:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个 ...

  9. Spring注解@PropertySource加载配置文件和SpringBoot注解@Value、@ConfigurationProperties进行属性映射

    SpringBoot的配置文件 位置:resources目录下 配置文件的作用: (1).SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用a ...

  10. Spirent Testcenter二层DHCP绑定流配置

    1.OLT配置 配一个VLAN,若GE口打Tag,不需要打PVID,打Untag,配PVID. 在ONU上配一个Other Bridge的WAN连接,并配置VLAN 2.TestCenter配置 选定 ...