2016-05-23 9 views
-1

Ich versuche das Testen für ein in Java geschriebenes Programm zu automatisieren. Das Problem, das ich habe, ist, dass es eine Möglichkeit gibt, weitere Testfälle hinzuzufügen/zu entfernen, ohne den Code zu ändern.Test mit wechselnden Testfällen in Java automatisieren

Sie haben beispielsweise zwei Zeichenfolgen und möchten überprüfen, ob sie sich in einer Liste von Zeichenfolgen befinden. Sie übergeben die Zeichenfolgen und überprüfen. In Java-Code könnte ich eine if-Anweisung machen und prüfen, ob die beiden Strings mit einer Zeichenfolge in einer gegebenen Liste übereinstimmen. Wenn ich jedoch mehr Strings hinzufügen wollte, um aus dieser Liste zu suchen, müsste ich zurück zum Programm gehen und mehr Code hinzufügen.

Wahrscheinlich ein schlechtes Beispiel, aber ich hoffe, Sie verstehen meinen Standpunkt. Natürlich kann es noch viel mehr Testfälle geben, die völlig unterschiedlich sein können. Und wenn ich das Programm jemand anderen geben wollte, könnte es auch sein eigenes hinzufügen.

Ich dachte daran, eine Art Vorlage mit Argumenten und Methodennamen zu erstellen, die außerhalb des Codes aufgerufen werden. Im Grunde eine Datei mit Regeln. Der Java-Code wird dann interpretieren, was mit den gegebenen Regeln zu tun ist. Ich habe das gelesen: https://blog.codecentric.de/en/2016/01/robot-framework-tutorial-2016-keywords/, aber ich verstand es nicht wirklich.

Mein Ziel ist es, generischen Java-Code zu schreiben, der eine Template-Datei interpretieren und die dort definierten Testfälle ausführen kann. Jede Hilfe wäre willkommen, danke!

Beispiel:

Vorlagendatei

Details:  Checks if String in database 
Method:  testID 
Arguments: Hello 

Foobar.java

public class Foobar { 

    public void testID(String str1) 
    { 
     // Expected output will be taken from a database 
     Assert.assertEquals(str1, expected_output); 
    } 
} 

Der String str1 kann aus der Vorlagendatei unter Argumente genommen werden.

Das Problem dabei ist, dass, wenn ich jetzt testen möchte, ob str1 eine bestimmte Länge ist, würde ich zurück gehen und mehr Code hinzufügen. Das wäre in Ordnung, wenn das Programm nur für mich und mein Team wäre. Wenn Sie es jedoch einer anderen Firma oder Person geben, die nicht programmieren kann, aber ihre eigenen Tests durchführen möchte, wird es nicht so funktional sein. Deshalb habe ich gehofft, dass eine Person, die nicht im Team ist, einfach ihren Testfall hinzufügen könnte, wenn sie dem Format des Templates folgt und das Java-Programm weiß, was damit zu tun ist.

Es tut mir leid, ich weiß nicht, wie ich es so gut erklären soll. Ich hoffe, es ist nicht verwirrend.

+0

Wenn Sie uns die Struktur des Projekts zeigen, können wir Ihnen helfen. – Arman

+0

Hinzugefügt etwas mehr zum OP. – Vylic

Antwort

2

Soweit ich verstehe Ihre Frage,

Sie suchen einen allgemeinen Rahmen für ganze Menge von Nutzern zu geben, wo jeder von ihnen wollen würde, um es zu benutzen in da eigener Weg!

Mein Freund ist hier, wo "Keyword Driven Framework" ins Bild kommen!

Um genauer zu sein, wie Sie sagten, Sie schreiben eine Funktion, um "Zeichenfolge in einer Liste zu überprüfen", aber wenn jemand "die Länge überprüfen" will, dann müssen Sie Ihre Funktion erneut bearbeiten !!

Alles, was Sie tun müssen, ist analysieren die verschiedenen Operationen, die Sie unterstützen müssen. Angenommen, in der Liste nach einer Zeichenkette suchen, Länge der Zeichenkette überprüfen, Größe der Liste überprüfen, Zeichenkette nicht in Liste suchen, Zeichenkette zur Liste hinzufügen usw.

Also anstatt eine Funktion mit einer Mischung von Operationen zu schreiben! Sie machen es stattdessen modular und geben es an die Benutzer zurück, um es auf ihre eigene Weise zu verwenden!

Also, wenn Sie die oben genannten 4 Schlüsselwörter (Funktionen) erklären. sie können es in der von ihnen gewünschten Reihenfolge anrufen

z.B. Testfälle würden dann so aussehen:

test1: 

check for string in list <string1> 

test2: 

check length of string <string1> 
check size of list 
check for string not in list <string1> 

Sie definieren Vorlagen für jede dieser Funktionen und geben Informationen an Benutzer weiter! damit diese modularisierten Keywords wie gewünscht verwendet werden können. So ist Roboterrahmenwerk gemacht!

Ich hoffe, es ist nützlich!

+0

Danke, das ist, was ich gesucht habe. – Vylic

+0

Froh, dass es geholfen hat! :) – Waman

1

Es gibt viele Möglichkeiten, Testressourcen für die Verwendung in Java zu erstellen und zu lesen. Sie können gerade Textzeichenfolgen in TXT-Dateien, XML-Formaten, kommagetrennten Formaten usw. verwenden.

Es hängt wirklich von der Menge und Tiefe der Testdaten ab, die Sie injizieren möchten.

Hier gibt es viele Fragen/Antworten, nach denen Sie nach der Verwendung von Ressourcendateien oder anderen Lesemethoden für Dateien suchen können. Hier

ein Beispiel: How should I load files into my Java application?