Succest über die Web API steuern
Für die Integration in ein Testautomatisierungstool wird eine REST basierte Web-API angeboten.
Folgende Funktionen stehen über die Web-API zur Verfügung:
- (Gefilterte) Liste von Testfällen auslesen
- Liste von Argumenten eines Testfalls auslesen
- Testlauf für einen Testfall starten
- Status bzw. Ergebnis eines Laufes auslesen
- Komplettes Protokoll eines Testlaufes auslesen
Die Realisierung erfolgt mit dem Datenformat JSON, aus diesem Grund muss im Header der Anfrage immer content-type: application/json gesetzt sein.
Abhängig vom Ergebnis werden unterschiedliche HTTP-Statuscodes zurückgegeben (z.B. 200 bei Erfolg oder 500 bei einem unbekannten Fehler).
Testfall ist in diesem Artikel als technischer Begriff zu verstehen. Die hier beschriebene Funktionen beziehen sich sowohl auf automatisierte Testfälle als auch Testdatenanlagen.
Inhaltsverzeichnis
- 1 (Gefilterte) Liste von Testfällen auslesen
- 2 Liste von Argumenten eines Testfalls auslesen
- 3 Testlauf für einen Testfall starten
- 4 Status bzw. Ergebnis eines Laufes auslesen
- 5 Komplettes Protokoll eines Testlaufs auslesen
- 6 Liste von Datenquellen auslesen
- 7 Spalten einer Datenquellen auslesen
- 8 Werte einer Spalter einer Datenquellen auslesen
(Gefilterte) Liste von Testfällen auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetTestcases?filter=argu
Gibt eine Liste von allen verfügbaren Testfällen aus, inklusive ID, Name und dem aktuellen Status. Optional kann ein Filter eingegeben werden, der jeden Testfall rausfiltert, der nicht diesen Text im Namen enthält. Die Suche ignoriert Groß- und Kleinschreibung.
Antwort
HTTP-StatusCode 200
{
"Testcases":[
{
"Id":"ed2f2e90-05b2-4155-a0c1-967cada94a7d",
"Name":"SSD-135 Argument TFURI bei Kiosk-Testfällen",
"Status":"Approved"
},
{
"Id":"02de5e62-3f0c-46d9-8ca1-a2586073b779",
"Name":"test InArguments",
"Status":"Approved"
}
],
"Messages":"Found 2 matching testcase(s)"
}
Liste von Argumenten eines Testfalls auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetTestcaseArguments?testcaseId=02de5e62-3f0c-46d9-8ca1-a2586073b779[&valueSuggestionsCount=50]
Testfälle haben sogenannte InArgumente und OutArgumente. Deren Verwendung und Bedeutung ist hier beschrieben.
Über die Schnittstelle können die InArgumente und OutArgumente eines Testfalls ausgelesen werden. Zusätzlich werden die Namen und Typen jedes Arguments zurück gegeben.
Für die InArgumente, denen über die Seite Kiosk pflegen eine Datenquelle zugeordnet ist, gibt diese Schnittstelle Wertvorschläge mit aus. Die Anzahl der Wertvorschläge lässt sich mit dem Filter valueSuggestionsCount=[Anzahl der Wertvorschläge] festlegen. Ohne Angabe des Filters werden 50 Einträge zurück geliefert, sofern die zugewiesene Datenquelle auch 50 Einträge beinhaltet.
Antwort (erfolgreich)
HTTP-StatusCode 200
{
"InArguments":[
{
"ValueSuggestions": [
{
"Value": "True",
"Description": "001 (Wert: True)"
},
{
"Value": "False",
"Description": "002 (Wert: False)"
}
],
"Name":"einBool",
"Type":"Boolean"
},
{
"Name":"einChar",
"Type":"Char"
},
{
"Name":"einDateTime",
"Type":"DateTime"
},
{
"Name":"einDecimal",
"Type":"Decimal"
},
{
"Name":"einDouble",
"Type":"Double"
},
{
"Name":"eineGuid",
"Type":"Guid"
},
{
"Name":"einInt16",
"Type":"Int16"
},
{
"Name":"einInt32",
"Type":"Int32"
},
{
"Name":"einInt64",
"Type":"Int64"
},
{
"ValueSuggestions": [
{
"Value": "String-1",
"Description": "001 (Wert: String-1)"
},
{
"Value": "String-2",
"Description": "002 (Wert: String-2)"
},
{
"Value": "String-2",
"Description": "003 (Wert: String-3)"
}
],
"Name":"einString",
"Type":"String"
}
],
"OutArguments": [
{
"Name": "Geschaeftspartnernummer",
"Type": "SuccestReference"
}
],
"Messages":"Found 10 InArgument(s) for testcase 'test InArguments'.\r\nFound 1 OutArgument(s) for testcase 'test InArguments'."
}
Antwort (Testfall nicht gefunden)
HTTP-StatusCode 404
{
"InArguments":[
],
"OutArguments":[
],
"Messages":"Exception: No testcase found with id 00000000-1111-2222-3333-444444444444"
}
Testlauf für einen Testfall starten
POST http://tcr.your-company.local/TestcaseExecutionApi/StartTestRun
Ein Testlauf kann hiermit gestartet werden. Dabei können Werte für die InArgumente mitgegeben werden. Als Antwort erhält man eine RunId; diese wird zum Abfragen des Status benötigt.
Zusätzlich enthält die Antwort noch zwei Listen: ExpectedArguments und UnusedParameters. Erstere enthält die Namen aller nicht gesetzten InArgumente. Letztere enthält die Namen aller übergebener Parameter, die keinem InArgument zugewiesen werden konnten.
Anfrage (erfolgreich)
{
"testcaseId":"02de5e62-3f0c-46d9-8ca1-a2586073b779",
"inArguments":[
{
"Key":"einDecimal",
"Value":"123.4"
},
{
"Key":"einChar",
"Value":"C"
},
{
"Key":"GibtsNicht",
"Value":"Hallo Welt!"
}
]
}
Antwort (erfolgreich)
HTTP-StatusCode 200
{
"RunId":"db32fc47-7648-4209-bb75-b5ef98c1061a",
"ExpectedArguments":[
"einBool",
"einString",
"einDateTime",
"eineGuid",
"einInt32",
"einInt16",
"einInt64",
"einDouble"
],
"UnusedParameters":[
"GibtsNicht",
],
"Messages":"Testcase 'test InArguments' has been queued for execution on position 1. "
}
Anfrage (ungültige testcaseID)
{
"testcaseId":"Hallo Welt"
}
Antwort (ungültige testcaseID)
HTTP-StatusCode 500
{
"RunId":"00000000-0000-0000-0000-000000000000",
"ExpectedArguments":[
],
"UnusedParameters":[
],
"Messages":"Exception: GUID muss 32 Ziffern mit 4 Bindestrichen enthalten (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."
}
Anfrage (Testfall nicht gefunden)
{
"testcaseId":"00000000-1111-2222-3333-444444444444"
}
Antwort (Testfall nicht gefunden)
HTTP-StatusCode 404
{
"RunId":"00000000-0000-0000-0000-000000000000",
"ExpectedArguments":[
],
"UnusedParameters":[
],
"Messages":"Exception: No testcase found with id 00000000-1111-2222-3333-444444444444"
}
Status bzw. Ergebnis eines Laufes auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetTestRunResult?runId=70272b12-9c6e-42eb-b2ce-944284db69d0
Der Status eines Testlaufs kann hiermit ausgelesen werden. Die benötigte RunId wurde beim Start des Testlaufs zurückgegeben. Ein Testlauf ist erst beendet, wenn der Status auf "Finished" steht. Wenn der Testfall OutArgumente hat, dann werden diese hier mit ausgegeben.
Antwort
HTTP-StatusCode 200
{
"IdsReturnedFromTestrun":{
"einInt64MalZwei":[
"128"
],
"einStringDoppelt":[
"Hallo Welt! Hallo Welt! "
],
"einDecimalMalZwei":[
"24,68"
],
"einInt32MalZwei":[
"64"
],
"eineListe":[
"False",
"Hallo Welt! Hallo Welt! ",
"23.04.2011 20:25:43",
"f20acd10-0e50-43a7-ada9-000000000000",
"64",
"256",
"128",
"24,68",
"2469,1356",
"XX"
],
"einBoolInvertiert":[
"False"
],
"einDoubleMalZwei":[
"2469,1356"
],
"eineGuidNullenAmEnde":[
"f20acd10-0e50-43a7-ada9-000000000000"
],
"einDateTimeMinusEinJahr":[
"23.04.2011 20:25:43"
],
"einCharDoppelt":[
"XX"
],
"einInt16Doppelt":[
"256"
]
},
"Status":"Finished",
"Messages":"Got 20 ids in 11 OutArguments from run"
}
Antwort (Nicht alle Testfallschritte erfolgreich)
HTTP-StatusCode 200
{
"IdsReturnedFromTestrun": {},
"Status": "Finished",
"RunErrorMessages": [
"Mindestens ein Testschritt war fehlerhaft\r\n----------------------------------------------\r\n| Customer\r
\n----------------------------------------------\r\n<contentAsXml>\r\n <root>\r\n <Errors>\r\n
<Code>DuplicateEntity</Code>\r\n <Key>EMail</Key>\r\n <Value>There already is an account
with the id 'susi.sorglos@succest.de'.</Value>\r\n </Errors>\r\n </root>\r\n </contentAsXml>\r
\n<statusCode>422</statusCode>"
],
"Messages": "Not all test steps finished succesfully, please check the history in the TCR"
}
Antwort (ungültige runId)
HTTP-StatusCode 500
{
"IdsReturnedFromTestrun":[
],
"Status":null,
"Messages":"Exception: GUID muss 32 Ziffern mit 4 Bindestrichen enthalten (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."
}
Antwort (Testlauf nicht gefunden)
HTTP-StatusCode 404
{
"IdsReturnedFromTestrun":[
],
"Status":null,
"Messages":"Exception: No test run found for id 00000000-1111-2222-3333-444444444444"
}
Komplettes Protokoll eines Testlaufs auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetTestRunFileLog?runId=70272b12-9c6e-42eb-b2ce-944284db69d0
Über diese Schnittstelle kann das Protokoll eines Testlaufs ausgelesen werden. Das Protokoll wird als Dateistream zum Download bereitgestellt und beinhaltet u.a. die von succest übermittelten Daten an das Testsystem, die InArgumente und die Antwort vom Testsystem (dies können Listen, Nachrichten, Rückgabewerte, etc. sein).
Antwort
HTTP-StatusCode 200
========================================================================================================================
Testschritt: XMLTest
Erwartetes Ergebnis: Erfolg erwartet
Status: Passed
Letzter Schritt: False
========================================================================================================================
------------------------------------------------------------------------------------------------------------------------
Testcase execution step report including details on loading data and execution results
---------------------------------
Testrun id: 9b15c96e-0fa7-4e88-862d-5dfda5b805bd
Runtime: 2021-03-01 15:38:41 - 2021-03-01 15:38:45 (duration: 0 00:00:03)
Testcase name: SUC2-T410-3 Mehrere XML-Schritte ohne XML-ID append
Testcase id: da284285-35b6-4e6b-8c42-2ebe4843b1f6
Teststep name: XMLTest
Teststep id: 56cbaca9-26ee-4a7f-a802-46505b8f0ea8
Target system: stdfc://File
Calculation base: SystemDate
Calculation value: 01.03.2021
Generation template: 0-Amarijke-SUC2-T419-1 root
Result template: Erfolg erwartet
Testcase arguments:
------------------------------------------------------------------------------------------------------------------------
Loadingfile: D:\SUCCEST-TCR\LoadingFiles\9b15c96e0fa74e88862d5dfda5b805bd\c3RkZmM6Ly9GaWxl_SD20210301_XML_9b15c96e0fa74e88862d5dfda5b805bd_060_1538447127.xml.txt
<!--
00S00000000da28428535b64e6b8c422ebe4843b1f656cbaca926ee4a7fa80246505b8f0ea8-->
<!--
00S00000000da28428535b64e6b8c422ebe4843b1f6d6ef7572afef4a49b55c15554cec89d6-->
<CATALOG>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CATALOG>
---------------------------------
Logfile: D:\SUCCEST-TCR\Logs\9b15c96e0fa74e88862d5dfda5b805bd\56cbaca926ee4a7fa80246505b8f0ea8.log
;S;Entry was successfully delivered to file consumer.
LoadingFileName: XMLFile_FILEID_1_9b15c96e0fa74e88862d5dfda5b805bd.xml
----------------------------------------------
Response has to contain substring ";S;".
Response may not contain substring ";E;".
----------------------------------------------
...
Liste von Datenquellen auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetDatasources
Gibt eine Liste von allen verfügbaren Datenquellen aus, inklusive ID und Name.
Antwort
HTTP-StatusCode 200
[
{
"Id": "9214422d-a06e-4ae5-b4f4-53c39c826b86",
"DatasourceName": "Bankleitzahlen"
},
{
"Id": "4f1966ff-937e-443d-9e12-6237161529a0",
"DatasourceName": "Vornamen"
},
{
"Id": "29946801-20db-4fb7-aa97-a2e43789916d",
"DatasourceName": "Nachnamen"
}
]
Spalten einer Datenquellen auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetDatasourceColumns?datasourceid=4f1966ff-937e-443d-9e12-6237161529a0
Gibt eine Liste aller Spaltennamen für die Datenquelle mit der angegebenen ID aus.
Antwort
HTTP-StatusCode 200
[
"Vorname",
"Geschlecht",
"Anrede"
]
Antwort (Datenquelle nicht gefunden)
HTTP-StatusCode 404
{
"Messages": "Exception: No datasource found with id 00000000-1111-2222-3333-444444444444"
}
Werte einer Spalter einer Datenquellen auslesen
GET http://tcr.your-company.local/TestcaseExecutionApi/GetDatasourceColumnContent?datasourceid=4f1966ff-937e-443d-9e12-6237161529a0&columnName=Vorname
Gibt eine Liste aller Werte einer Spalte für die Datenquelle mit der angegebenen ID aus.
Antwort
HTTP-StatusCode 200
[
"Sabine",
"Sabrina",
"Sandra",
"Sarah",
"Saskia",
"Selina"
]
Antwort (Datenquelle nicht gefunden)
HTTP-StatusCode 404
{
"Messages": "Exception: No datasource found with id 00000000-1111-2222-3333-444444444444"
}
Antwort (Spalte nicht gefunden)
HTTP-StatusCode 500
{
"Messages": "Exception: Der angegebene Schlüssel war nicht im Wörterbuch angegeben."
}