Mjukvarutestning och Automatisering
Innan en mjukvaruapplikation når slutanvändaren går den igenom ett flertal utvecklingsfaser.
Testning är en central komponent i SDLC (Software Development Life Cycle), då den identifierar felaktigheter och verifierar att applikationen fungerar enligt specifikationerna.
Tidigare förlitade sig mjukvarutestare på manuella metoder. Manuella tester kan dock vara tidskrävande och medför en rad utmaningar. Selenium skapades för att automatisera mjukvarutestning.
Idag är Selenium marknadsledande och flitigt använt av mjukvarutestare. För den som söker jobb inom mjukvarutestning är kunskap om de vanligaste Selenium-intervjufrågorna en stor fördel.
Här följer ett antal vanliga frågor och svar som du kan stöta på i en intervju:
Vad innebär automatiserad testning?
I grunden är automatiserad testning processen att med hjälp av automatiserade testsviter eller verktyg skriva och utföra mjukvarutester utan manuell intervention. Det ger testare möjlighet att använda dedikerade verktyg för att utföra testuppgifter upprepade gånger.
Vilka fördelar ger automatiserad testning?
- Tids- och kostnadsbesparingar. Manuella tester kan vara kostsamma. Automatiserade tester kan på sikt vara ett mer kostnadseffektivt alternativ.
- Återanvändbarhet av kod. Testerna kan konfigureras en gång och sedan exekveras upprepade gånger.
- Minskning av mänskliga fel och ökad noggrannhet.
- Lämpligt för större applikationer. Mindre applikationer kan testas manuellt, men automatiserade testverktyg är praktiska när applikationen växer.
Vad är Selenium?
Selenium är en kostnadsfri, öppen källkodssvit för automatiserad testning av webbgränssnitt, utvecklad av Jason Huggins 2004. Tack vare ett starkt community har Selenium blivit en av de mest populära testsviterna för automatiserad mjukvara. Selenium stöder ett flertal webbläsare och plattformar.
Vilka olika delar ingår i Selenium?
Selenium är inte bara ett testverktyg, utan en samling verktyg. Följande delar ingår i Selenium:
- Selenium Integrated Development Environment (IDE)
- Selenium WebDriver
- Selenium Remote Control (RC)
- Selenium Grid
Vilka programmeringsspråk stöds av Selenium?
- Python
- Java
- C#
- JavaScript
- Ruby
- PHP
- Perl
Vilka typer av tester stöds av Selenium?
Selenium är i första hand inriktat på automatisering av funktionella tester.
Vad är Selenium WebDriver?
Selenium WebDriver ansvarar för kommunikationen med webbläsare. Verktyget utnyttjar webbläsarnas egen funktionalitet för att automatisera uppgifter.
Vad är Selenium IDE?
Selenium IDE är ett plugin för Firefox som fungerar som ett verktyg för inspelning och uppspelning av tester. Pluginet skapades för att snabba upp skapandet av automatiseringsskript.
Vad är Selenium Grid?
Med detta verktyg kan användare distribuera testkörningar till flera miljöer och plattformar samtidigt.
Vad är Selenium RC (Remote Control)?
RC är ett verktyg som ger användare möjlighet att skapa testskript på valfritt programmeringsspråk. Verktyget gör det även möjligt att köra testskript i ett stort antal webbläsare.
Vad menas med Selenese?
Selenium IDE använder ett språk som heter Selenese för att skriva kommandon. Dessa kommandon hjälper Selenium att förstå vilka operationer som ska utföras.
Vilka typer av Selenese-kommandon finns?
- Åtgärder. Kommandon som påverkar applikationens tillstånd, exempelvis ”Skriv i den här rutan” eller ”Klicka på den här länken”.
- Tillbehör. Kommandon som kontrollerar applikationens tillstånd och lagrar resultatet i variabler.
- Påståenden. Kommandon som gör det möjligt för testaren att verifiera applikationens tillstånd.
Vilka metoder finns för att lokalisera ett element i Selenium?
- ID
- Klassnamn
- Namn
- Taggnamn
- Länktext
- PartialLinkText
- XPath
- CSS-väljare
- DOM
Vad är en XPath?
En XPath lokaliserar ett webbelement baserat på dess sökväg i Extensible Markup Language. XML används för att organisera och transportera data.
”/” och ”//” i XPath. Vad är skillnaden?
”/” (enkelt snedstreck) skapar en XPath med en absolut sökväg, där sökningen börjar från rotnoden.
”//” (dubbelt snedstreck) används för att skapa en XPath med en relativ sökväg. Sökningen kan då starta var som helst i dokumentet.
Vad är en absolut XPath?
En absolut XPath börjar med ett enkelt snedstreck ”/” och anger hela sökvägen från rotnoden till elementet.
Vad är skillnaden mellan findElement() och findElements()?
- findElements(): returnerar en lista över alla webbelement som matchar den givna lokaliseringsmekanismen.
- findElement(): returnerar det första webbelementet som matchar den givna lokaliseringsmekanismen.
Vilka typer av annotationer används i Selenium?
- @BeforeSuite
- @BeforeTest
- @BeforeClass
- @BeforeMethod
- @Test
- @AfterMethod
- @AfterClass
- @AfterTest
- @AfterSuite
Vad är påståenden i Selenium?
Påståenden verifierar att applikationen fungerar som förväntat. Om ett påstående misslyckas kommer testfallet att avbrytas.
Vad är kommandona Assert och Verify?
- Assert: Om villkoret är sant fortsätter testkörningen. Om villkoret är falskt avbryts exekveringen.
- Verify: Testkörningen fortsätter oavsett om villkoret är sant eller falskt.
Vad är ”same-origin policy” och hur hanterar Selenium den?
Same-origin policy är en säkerhetsmekanism som begränsar hur ett skript eller dokument som laddats från en specifik källa kan interagera med resurser från en annan källa. Syftet är att isolera skadliga skript.
Selenium använder en proxy-injektionsmetod för att hantera detta. Selenium Server fungerar som en HTTP-proxy mellan den applikation som testas och webbläsaren. Proxyn maskerar webbplatsen under testning genom en fiktiv URL.
Vad är pausfunktionen i Selenium IDE?
Paus är ett kommando i Selenium IDE som fördröjer utförandet av automatiserade tester under en angiven tid (i millisekunder).
Varför misslyckas Selenium IDE-tester?
- Asynkrona webbplatser. Selenium-tester skapas i en specifik ordning. Vissa webbplatser använder en asynkron arkitektur, och svar kan därför komma i fel ordning.
- Timeouts. Selenium kan misslyckas om det väntar för länge på att en komponent ska laddas. Detta kan hanteras med ”väntetider”.
- Buggar. Även om Selenium ständigt förbättras kan buggar uppstå och orsaka att tester misslyckas.
- Små ändringar i källkoden. Om en lokaliserare ändras kan alla tester som använder den misslyckas.
Vad är TestNG och vilka funktioner har det?
TestNG är ett ramverk för testautomatisering, inspirerat av JUnit och NUnit. Det är ett gratis verktyg med öppen källkod.
Några funktioner i TestNG:
- Stöd för olika typer av påståenden.
- Möjlighet att köra tester parallellt.
- Möjlighet att skapa beroenden mellan tester med hjälp av attributen ’dependsOnMethods’ och ’dependsOnGroups’.
- Stöd för datadrivna tester.
- Möjlighet att gruppera tester.
Vad är skillnaden mellan ”implicit wait” och ”explicit wait”?
- Implicit wait instruerar WebDriver att vänta en viss tid innan ett undantag skapas. Standardvärdet är 0, och när en väntetid har ställts in kommer WebDriver att vänta innan det skapas ett undantag.
- Explicit wait instruerar WebDriver att vänta på specifika villkor (ExpectedConditions) innan ett ”ElementNotVisibleException”-undantag skapas. Explicit wait är en mer intelligent väntan som endast gäller för specifika element.
Vad är ett objektförråd?
Ett objektförråd är en samling av nyckel-värdepar i automatiserade GUI-testskript som minskar underhållsbehovet för testskript. Nyckeln är ett logiskt namn som identifierar objekt, och värdena innehåller unika egenskaper som identifierar objekt på skärmen.
Det är en central plats för lagring och hantering av testdata.
Vilka undantag kan uppstå i Selenium WebDriver?
Ett undantag är en oväntad händelse som kan uppstå under körning av en applikation och som påverkar programmets vanliga flöde.
Vanliga undantag i Selenium WebDriver:
- NoSuchWindowException. WebDriver försöker växla till ett ogiltigt fönster.
- NoSuchElementException. Ett element kunde inte hittas.
- NoAlertPresentException. Ett undantag uppstår när man försöker växla till en varning som inte finns.
- TimeoutException. Ett kommando avslutades inte inom den angivna tiden.
- ElementNotVisibleException. Ett element är inte synligt.
- ElementNotSelectableException. Ett element är inte valbart (kan inte klickas) trots att det är tillgängligt i DOM.
- SessionNotFoundException. WebDriver agerar efter att webbläsaren har stängts ned.
Lista olika typer av lokaliserare
- ID
- Namn
- Klassnamn
- Taggnamn
- Länktext
- PartialLinkText
- CSS-väljare
- XPath
Vad är brytpunkter och startpunkter?
- Startpunkter markerar var exekveringen av kod ska börja. De kan användas för att starta ett testskript från en specifik punkt.
- Brytpunkter används för att stoppa kodexekveringen och verifiera att koden fungerar som förväntat.
Sammanfattning
Ovanstående är några av de vanligaste frågorna som kan dyka upp under en anställningsintervju för testautomatiseringsroller. Det är viktigt att ha god kunskap inom området för att vara väl förberedd inför en sådan intervju.
Tyckte du om den här artikeln? Dela den gärna med andra!