TESTed: one judge to rule them all
TIP
Dit is de uitgebreide documentatie voor de TESTed-judge. Een handleiding die gericht is op leerkrachten die voor het eerst een oefening opstellen is beschikbaar in deze handleiding.
TESTed is een educational software testing framework (ook bekend als een judge) dat toelaat om oplossingen voor programmeeroefeningen te beoordelen op basis van een programmeertaalonafhankelijk testplan. Het laat om de softwarevereisten (d.w.z. de testen) voor een oefening één keer op te stellen, terwijl oplossingen in verschillende programmeertalen beoordeeld kunnen worden. TESTed kan als afzonderlijk tool gebruikt worden, maar is ook geïntegreerd in de elektronische leeromgeving Dodona.
Wanneer gebruik je TESTed?
In de eerste plaats moet TESTed de programmeertaal die u wilt gebruiken ondersteunen. Momenteel zijn dat volgende programmeertalen:
- Bash
- C (gcc)
- C# (.NET)
- C++ (g++)
- Haskell (ghc)
- Java
- JavaScript (NodeJS)
- Kotlin
- Python
- TypeScript (NodeJS)
Voor Haskell biedt TESTed ook de variant runhaskell aan, die ingediende oplossingen interpreteert met runhaskell in plaats van ze te compileren met ghc.
Doordat de programmeeroefeningen die beoordeeld worden met TESTed programmeertaalonafhankelijk zijn, is TESTed het best geschikt voor volgende soorten oefeningen:
- Oefeningen op generieke concepten die in (bijna) alle programmeertalen voorkomen.
- Oefeningen waarbij de nadruk ligt op algoritmen of programmeerconcepten op hoog niveau, niet op specifieke syntaxis of constructies van bepaalde programmeertalen.
TESTed is dus minder geschikt voor oefeningen met een focus op programmeertaalspecifieke concepten of syntaxis. Zo zal een oefening over pointers in C niet goed werken met TESTed.
TESTed in een notendop
Beschouw een oefening "echo" met de volgende opgave:
Schrijf een functie
echodie steeds haar argument naar standaarduitvoer schrijft.
Eén testplan volstaat om oplossingen in elke ondersteunde programmeertaal te testen:
- tab: "Echo"
testcases:
- expression: "echo('input-1')"
stdout: "input-1"Hier zijn een aantal correcte oplossingen voor deze oefening in een handvol programmeertalen:
function echo {
echo "$1"
}#include <stdio.h>
void echo(char* wat) {
printf("%s", wat);
}#include <iostream>
void echo(std::string wat) {
std::cout << wat;
}echo = putStrLnclass Submission {
public static void echo(String wat) {
System.out.println(wat);
}
}function echo(wat) {
console.log(wat);
}fun echo(wat: String) {
println(wat)
}def echo(argument):
print(argument)using System;
class Submission
{
public static void Echo(string content)
{
Console.WriteLine(content);
}
}Van start gaan
Een stapsgewijze handleiding voor het opstellen van TESTed-oefeningen voor Dodona, van het opzetten van een repository tot het schrijven van testplannen, is beschikbaar in de handleiding oefeningen opstellen. Als u TESTed wenst te gebruiken buiten Dodona, raden we aan deze handleiding te volgen.
Een aantal technische specificaties zijn ook beschikbaar:
- Configuratie-opties
- Referentie voor DSL-testplannen (aanbevolen)
- Referentie voor geavanceerde testplannen (niet aanbevolen voor algemeen gebruik)
- Gegevenstypes voor programmeertalen
Nuttige handleidingen als u aan TESTed zelf wilt werken:
- De installatie-instructies in om TESTed lokaal uit te voeren.
- Een handleiding over het toevoegen van een programmeertaal (enkel in het Engels).