Automatisering av UI-testning på iOS har blivit lika enkelt som att skriva enhetstester ända sedan Apple introducerade XCUI-ramverket. I det här inlägget kommer jag att prata om hur XCUI, i kombination med skiktad design, kan hjälpa till att enkelt automatisera applikationer, särskilt de med flera anpassade UI-element. En sådan applikation där vi använt detta flitigt är VMware Boxer, en företagsapplikation från VMware som samlar tre viktiga funktioner – e-post, kalender och kontakter. VMware Boxer använder flera typer av UI-element, från inbyggd UITableView till mycket anpassade visuella element.
Det förutsätts att läsaren har en grundläggande förståelse för Xcode, Objective C, Swift, XCUI-ramverket och Apples utvecklingsekosystem i allmänhet. Om du är ny i XCUI bör du först börja här.
Likt alla andra UI-automatiseringsprojekt började vårt team med en fråga om vilket automatiseringsramverk som skulle användas. Vi hade använt SeeTest. Vi såg dock detta som ett tillfälle att se över vår automationsstrategi med tanke på den nya, komplexa funktionalitet som lagts till i VMware Boxer, antalet produkter i VMwares ekosystem och integrationstestning mellan dessa produkter. Nedan följer de val som vi övervägde-
1. Fortsätt med SeeTest
2. Earl Grey
3. XCUI
Medan SeeTest hade förmågan att hantera våra omedelbara behov av automatisering fanns det en oberoende utmaning att hantera. Det krävde att vi antog en ny teknikstack. Detta skulle kräva ytterligare utbildning för iOS-utvecklare och dedikerade experter för att underhålla automationssystemet.
Hur är det med Appium? Vi övervägde inte Appium av samma skäl som nämns ovan för SeeTest. Appium är ett bra val om vi hade hybridappar eller betydande delad kod mellan Android och iOS.
Earl Grey 1 var ett möjligt val, med tanke på att det gjorde det möjligt för oss att stanna i Xcode och Apples utvecklingsverktyg och att det var baserat på XCTest. Earl Grey 1 automation körs dock i samma process som applikationen som testas. Å andra sidan körs Apples XCUI-ramverksbaserade automatisering i en separat process än applikationen som testas. Detta är att föredra eftersom applikationen som testas inte bör vara något annat än en svart låda för den enhet (en automatiseringsprocess eller en slutanvändare) som testar dess användargränssnitt.
Har den automatiserande (den som testar) processen isolerad från den faktiska applikationen som testas. Den applikation som testas bör inte vara något annat än en svart låda för automatiseringsprocessen.
Varje nytt verktyg i Apples ekosystem som inte överensstämmer med Apples tillvägagångssätt (t.ex. Earl Grey 1) kan misslyckas utan förvarning. Ett sådant tillvägagångssätt kan kräva stora ansträngningar att underhålla för att fortsätta att fungera med nyare eller framtida erbjudanden från Apple.
Early Grey 2 lade till möjligheten att interagera med XCUI. Det var ett försök att anpassa sig till XCUI, men det hade dessa kända problem.
Till slut blev XCUI det föredragna valet. Med detta kommer en utvecklare att ha mer kontroll över automatiseringen och kommer att vara den omedelbara mottagaren av alla innovationer i Apples ekosystem.
Applikation under test och XCUI-automatiseringsmodul
Innan vi går in på detaljerna är det viktigt att upprepa att automatiseringsmodulen som använder XCUI körs som en oberoende process från applikationen som är under test. Till att börja med lade vi till en ny modul som vi i fortsättningen kommer att referera till som Automation Module(AM). AM är en arbetsyta som innehåller en samling klasser och datastrukturer som används för automatisering av VMware Boxer med hjälp av XCUI.
Accessibility Identifiers
Det är viktigt att applikationen utvecklas med dess testbarhet i åtanke. Ett av utvecklarens ansvarsområden är att se till att varje element i användargränssnittet som exponeras för slutanvändaren har en tillgänglighetsidentifierare som har ställts in under utvecklingen. Tillgänglighetsidentifieraren är länken mellan den testade applikationen och XCUI-automatiseringsprocessen.
Tillgänglighetsidentifieraren är länken mellan den testade applikationen och XCUI-automatiseringsprocessen.
Designmönster
Som tidigare nämnts är VMware Boxer en enorm applikation. Valet av designmönster som skulle användas gjordes med tanke på att testerna skulle vara lätta att implementera, lätta att underhålla, återanvändbara, robusta och skalbara. Innehållet nedan förklarar skikten i XCUI Automation-modulens arkitektur för VMware Boxer:
Följande figur visar de grundläggande byggstenarna: