Inleiding
Dit document beschrijft hoe u een API-verzoek (soapUI) van toepassingsprogrammeurs kunt maken en hoe u een API-test (soapUI-testcase) kunt maken die via Test-stappen loopt om de API-verzoeken om Quantum Policy Suite (QPS) te automatiseren.
De voorbeeldcase van de test in dit artikel implementeert een Test Stappen die een bestand van abonnee ID's lezen en dan een querySubscriberRequst naar QPS maken en verzenden.
Een soapUI-project maken
Voordat u met deze procedure begint, installeert u de soapUI-toepassing op uw bureaublad. U kunt de installatie soapUI van www.soapui.org downloaden.
Voordat u een API-aanvraag of een Test-case maakt, moet u eerst een soapUI-project maken. U hebt het WSDL-bestand (Web Services Description Language) en het XSD-bestand (XML Schema Description) nodig om het project te maken. De WSDL specificeert de ondersteunde API’s. U kunt de WSDL en XSD doorgaans van het QPS verkrijgen wanneer u deze opdrachten vanuit de taakbalk (LB) voert:
- http://lbvip01:8080/ua/wsdl/UnifiedApi.wsdl
- http://lbvip01:8080/ua/wsdl/UnifiedApi.xsd
Bewaar de WSDL en XSD in de zelfde folder op het desktop waar u van plan bent om de toepassing soapUI te leiden.
Voltooi deze stappen om het soapUI-project te maken:
- Bestand kiezen > Nieuw soapUI-project uit het venster soapUI:
- In het venster New soapUI Project typt u een naam voor het project in het veld Naam van het project en voert u de locatie in waar het WSDL-bestand is opgeslagen in het veld Initiële WSDL/WADL. Klik op OK wanneer u klaar bent.
Een API-aanvraag maken voor een sessie
Voltooi deze stappen om een aanvraag voor een soapUI-applicatie te maken:
- Uitbreidt het project soapUI dat u hebt gemaakt om de APIs te zien. U kunt ook één van de API's uitbreiden om het verzoek te zien.
In dit voorbeeld wordt querySubscriberApplication uitgebreid:
- Open het verzoek om het verzoekvenster met XML te zien dat de query vormt. Bewerk in het venster Aanvraag het http:// IP-adres naar het IP-adres en de poort. Dit is normaal het IP-adres en de IP-poort van lbvip01 waar u het verzoek wilt verzenden zoals dit voorbeeld aantoont:
- Wijzig de velden in XML met de gegevens die u in uw verzoek wilt verzenden. In dit voorbeeld is het verzoek een querySubscriberApplication. Wijzig de abonnee-ID voor de abonnee die u wilt vragen en stel deze in met gedetailleerde informatie op fout:
- Klik op de knop groen uitvoeren boven in het venster Aanvragen om de query uit te voeren.
Een test-case met een zeepUI maken
Deze procedure legt uit hoe een testreeks te maken die kan automatiseren wanneer APIs naar de QPS worden verzonden.
In deze voorbeeldprocedure loopt de testsuite over een lijst van abonneeid's en gebruikt deze abonneeid's vervolgens in de querySubscriberApplication en wordt deze naar QPS verzonden. De lijst van abonnee-ID’s staat elk op één regel in een tekstbestand dat subid.txt wordt genoemd.
Voltooi deze stappen om de Test Suite te maken:
- In het soapUI-project dat u hebt gemaakt, creëert u een nieuwe Test Suite. Klik met de rechtermuisknop op de soapUI en kies New TestSuite.
- Klik met de rechtermuisknop op de Test Suite en kies New TestCase.
- Klik met de rechtermuisknop op de Test Case en kies Stap > Groovy Script toevoegen om een proefstap voor Groovy Script toe te voegen. Naam it Data Source:
- In het Data Source file paste deze code aan. Deze code leest bestand C:/subid.txt dat op elke regel een abonnee-ID bevat:
import com.eviware.soapui.support.XmlHolder def myTestCase = context.testCase
def counter,next,previous,sizeFile tickerEnumFile = new File("C:/subid.txt") //subscriber
IDs sepearted by new line (CR). List lines = tickerEnumFile.readLines() size =
lines.size.toInteger() propTestStep = myTestCase.getTestStepByName("Property - Looper")
// get the Property TestStep propTestStep.setPropertyValue("Total", size.toString())
counter = propTestStep.getPropertyValue("Count").toString() counter= counter.toInteger()
next = (counter > size-2? 0: counter+1) tempValue = lines[counter]
propTestStep.setPropertyValue("Value", tempValue) propTestStep.setPropertyValue
("Count", next.toString()) next++ log.info "Reading line : ${(counter+1)} /
$lines.size"propTestStep.setPropertyValue("Next", next.toString()) log.info
"Value '$tempValue' -- updated in $propTestStep.name" if (counter == size-1) {
propTestStep.setPropertyValue("StopLoop", "T") log.info "Setting the stoploop property now..."}
else if (counter==0) { def runner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner
(testRunner.testCase, null) propTestStep.setPropertyValue("StopLoop", "F") } else{
propTestStep.setPropertyValue("StopLoop", "F") }
- Klik met de rechtermuisknop op de Test Stap en kies Stap > Eigenschappen toevoegen om een teststap van het Eigenschap toe te voegen en het Eigenschap - Looper te noemen.
- Voeg deze gebruiker bepaalde eigenschappen van de Looper teststap toe:
- Totaal
- Waarde - In ons voorbeeld is dit het nummer van de abonnee-ID die van de bestand-abonnee-ID’s is gelezen
- Aantal
- Volgende
- StopLoop
- Klik met de rechtermuisknop op de Test Step en kies Add Stap > TestApplication om een teststap voor testaanvraag toe te voegen en kies het verzoek dat u wilt inroepen:
In dit voorbeeld wordt querySubscriberApplication gebruikt.
- In het verzoek vervangt de uitbreidingscode de veldwaarden van wat u vraagt. In dit voorbeeld de ? van de SubscriberID=? in querySubscriberApplication wordt vervangen met uitbreidingscode $ {Eigenschap - Looper#Value} (soap_test_req_expansie_code):
Eigenschap - Looper is de naam van de Eigenschap TestStep die eerder is gemaakt en Value houdt de huidige abonnee-ID bij die wordt gelezen uit het bestand van abonnee-ID’s.
- Klik met de rechtermuisknop op de Test Stap en kies Stap > Groovy Script en kies de datalink:
- Plakt deze code in de Groovy Script Data Loop:
def myTestCase = context.testCase
def runner
propTestStep = myTestCase.getTestStepByName("Property - Looper")
endLoop = propTestStep.getPropertyValue("StopLoop").toString()
if (endLoop.toString() == "T" || endLoop.toString()=="True"
|| endLoop.toString()=="true")
{
log.info ("Exit Groovy Data Source Looper")
assert true
}
else
{
testRunner.gotoStepByName("Groovy Script - DataSource") //go to the DataSource
}
- In deze voorbeeldprocedure wordt een vertraging van 1000 ms tussen elke lus toegevoegd. Deze stap is optioneel.
Met de vertraging zijn er nu vijf teststappen:
- Klik op de knop groen uitvoeren om de vijf Test-stappen in het venster TestCase te uitvoeren.