关注分享主机优惠活动
国内外VPS云服务器

自动化测试工具

总结:编写一个自动生成测试数据的程序。 自动化框架无法为每个程序生成测试数据,因为各个作业有不同的要求。 目前,仅支持基于规则的随机字符串测试集生成。 。

作者:Gray

原文地址:自动化测试工具

自动化测试框架可以让你自动克隆你的项目并编译项目,对项目进行评分(需要实现自定义接口),进行性能测试(必须规定所有学生程序运行在同一个人的电脑上,否则电脑配置不同(结果会因差异而不同)生成CSV格式的报告(需要实现自定义接口) 复制检查(必须应用 muss 帐户,并且仅支持特定语言:c、cc、java、ml、pascal、ada、lisp、schema、haskell、fortran、ascii、vhdl、perl、matlab、python、mips、prolog、spice、vb , csharp, modula2, a8086, javascript, plsql)

该项目代码目前是在模块中划分的。 除了测试 WordCount 作业外,它还支持具有固定输入和输出的单个作业。 然而,即使有了自动化测试工具,助教仍然有一些事情需要做。 是:

职位要求中必须注明语言版本。 支持重复检查时,语言只能限制在moss支持的语言列表中。 将您的个人作业版本实现为对数器。 创建一个程序来自动生成测试数据。 自动化框架无法为每个程序生成测试数据,因为各个作业有不同的要求。 目前,仅支持基于规则的随机字符串测试集生成。 制定评分规则(自动化框架有预留接口,所以只需实现Judge接口即可)并制定最终报告的格式(自动化框架已有预留接口)。预留接口后,只需实现ReportData接口即可)申请moss账号进行抄袭检查。 更多信息请参见:在计算机上使用 MOSS - 如何使用 MOSS 代码抄袭检测系统代码结构说明 autotest autotest-core

常用工具类的框架核心代码、预留接口和扩展点

app-wordcount

wordcount 作业测试项目为 wordcount 测试提供数据集准备、评分规则和 CSV 报告导出规则来实现。 该模块依赖于autotest-core

以后每次添加个人作业时,以app-wordcount为例新建一个Maven模块,命名为app[即可附加。 k4]xxx,xxx是人员分配的具体名称。 此 app-xxx 模块依赖于 autotest-core 模块,并且仅实现其接口。

下面以自动化测试WordCount作业为例,说明如何使用自动化测试框架。

支持的语言​​

理论上可以支持C++、Java、Python、NodeJS,测试程序中可以设置不同语言的执行环境

测试通过后语言版本如下

语言版本 Java1.8C ++3.9.2Pythongc++ 6.3.0NodeJSv10.15.3 实现功能克隆项目

从指定仓库克隆项目。 由于访问Github的网络经常不稳定,我们也支持先为您的项目准备一个仓库,而不是从Github上实时下载。

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

注意:您需要在此处生成的测试数据因项目而异。unt必须产生的数据

编译

编译有两个前提条件,这里进行如下操作:

该作业特别需要入口文件的文件名。 例如,在 Java 中,这是 Main 方法所在的类文件的文件名。 以 WordCount 作业为例,学生的 main 函数必须定义在 src 目录中名为 WordCount.java 的文件中。 这是因为只有这样你才能知道要运行哪些文件来运行你的测试用例。

助教如果在自己的机器上运行,需要相应的语言编译和执行环境,并且必须指定一致的语言版本。 否则在这个级别编译的时候就会出现很多问题,学生的代码就无法运行。

编译时设置相应的超时时间。 不同的语言可以有不同的编译超时。 以Java为例,默认编译超时时间为5秒。

执行

请参阅编译部分中描述的两个要求。

运行时也会设置相应的超时时间。 不同的语言允许不同的测试用例有不同的执行时间。 超过这个时间将直接设置学生用例消耗时间。 是-2,其中-2代表耗时的记录。

对每个用例进行评分和汇总评分。 运行每个用例需要多长时间

注意:您计算的持续时间是运行该部分所需的时间,不包括编译所需的时间。

将结果导出到 CSV 对 Git 提交记录进行耗时评分 提交数量 预览每次提交的提交信息的影响

包括:

StudentNo:是学号后5位

Score:代表总分,即Score1 + Score2 + ... + Scorei之和

Scorei:代表第i个分数用例

Timei:表示第i个用例所消耗的时间。

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

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

使用方法

当前没有打开项目该包继续以源代码形式运行,主要是为了方便调试和代码修改。 未来我们将不断完善封装和可操作性。

您必须首先指定测试代码的位置。 以WordCount项目为例,所有学生的代码都收集在以下以学生ID命名的仓库中:

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

目录结构如下:

PersonalProject-Java

学生 ID 1 src WordCount.java 学生 ID 2 src WordCount.javaLib.java 学生 ID 3 src WordCount.java

...

克隆代码

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

克隆完成后,使用 Jetbrains IDEA 打开文件 WordCountAutoTest 并复制 WordCountAutoTest ,如下所示创建一个下载文件夹。以下。

在下载文件夹下创建一个 Judge 文件夹,并将对数程序放入其中。 这个对数程序的目的是进行计算。 测试用例答案。

这个对数程序应该是正确的。 ! ! 最好由多名助教一起解决问题,并确保彼此没有问题后再实施对数程序。

PS:为防止学生抄袭,请不要向Github提交对数程序。

我已经放置了对数程序WordCount.java,如上所示。

复制 /resources/config.default 文件并将其重命名为 config.properties。

请注意并检查 config.properties 中的以下参数。 其他参数可以参考注释修改。

#默认测试用例数 TESTCASE_NUM=10# 测试文本最小字符数 TEXT_MIN_LENGTH=100# 测试文本最大字符数 TEXT_MAX_LENGTH=1000000# 如果有对数程序,是否需要回答对数程序? 该选项可以设置为 false NEED_ANSWER=true# 是否需要克隆,如果设置为 true,则使用 CLONE_URL 定位到进行操作的目录 # 如果设置为 false,LOCAL_URINEED_CLONE=false# Student 您需要克隆的仓库地址克隆是 CLONE_URL=https://github。 com/kofyou/PersonalProject-Java.git# 本地准备的仓库地址: 示例:"D://git//WordCountAutoTest//download//1615421924089//PersonalProject-Java"# 同样为此必须包含父级仓库的目录和对应的答案,文件名以1.txt, 2.txt ... n.txt开头 # 例如,如果TESTCASE_NUM = 3, # D://git//WordCountAutoTest // 下面有三个download//1615421924089//cases txt 文件: 1.txt,2.txt,3.txt# D://git//WordCountAutoTest//download//1615421924089//answers, 1.txt 下还有三个 txt 文件、2.txt和3.txt分别对应c以下三个文件的答案是 LOCAL_URI=C://git//autotest//download//1616838383549//PersonalProject-JavaJUDGE_PROGRAM=C://git//autotest//download//judge

修改配置好参数后,直接在IDEA中运行Client.java,等待完成。

注意:执行期间,会在之前下载的目录中创建一个具有当前时间戳的文件夹。 这样做的目的是避免每次运行时发生文件夹冲突。

执行后,按照以下目录查找您需要的信息。

目录描述 download/timestamp/cases/存储用例的地方 download/timestamp/answers/ 答案位于 download/timestamp/PersonalProject-Java/Project 目录 download/timestamp/PersonalProject[k4 ]Java/学号/输出/ 保存在每个学号的执行用例的输出文件夹 download/timestamp/result/result 中。 csv 本次评估的CSV文件请查看WordCountAutoTest/log日志文件夹

由于使用了moss组件,必须申请moss账号

使用说明请参阅下文。

QuickStart.java

源代码地址

Github

CSDN

未经允许不得转载:主机频道 » 自动化测试工具

评论 抢沙发

评论前必须登录!