ios app testing beginners guide with practical approach
Basiskennisverzameling voor het testen van iOS-apps:
'Weet je, iedereen heeft een mobiele telefoon, maar ik ken niemand die zijn mobiele telefoon leuk vindt. Ik wil een telefoon maken waar mensen dol op zijn. ' - Steve Jobs.
Dat ging over de iPhone van Steve Jobs. Steve heeft Apple er echt toe aangezet om van hun mobiele apparaat een favoriet aller tijden te maken voor iedereen.
Gebruikers zijn altijd al dol geweest op mobiele apparaten van Apple, of het nu de iPhone, de iPod Touch of de iPad is. Volgens de huidige gegevens zijn er wereldwijd bijna 1 miljard Apple-apparaten operationeel die op iOS draaien.
Dat zijn er een heel miljard.
Hieronder volgt de analyse van het marktaandeel van iPhones in 2016:
[beeld bron
Wat je leert:
- iOS
- iOS-testen
- Typen iOS-applicatietests
- Handmatig testen - Apparaat gebruiken
- Handmatig testen - Emulator gebruiken
- iOS-automatisering
- Praktische tips om iOS-apps te testen
- iOS-automatiseringsframeworks
- Gevolgtrekking
- Aanbevolen literatuur
iOS
iOS is een mobiel besturingssysteem dat speciaal door Apple is ontworpen voor hun apparaten, vaak iDevices genoemd. Sinds 2007, toen de iOS alleen voor de iPhones werd gemaakt, is het besturingssysteem geëvolueerd om ook de Touch-apparaten en de iPads te ondersteunen.
Huidig onderzoek meldt dat iOS het op een na populairste mobiele besturingssysteem op de markt is. Android draait op apparaten die door verschillende fabrikanten zijn gebouwd, maar het mooie van iOS is dat het alleen beperkt is tot Apple-hardware, wat duidelijk de populariteit van het besturingssysteem aangeeft.
iOS heeft in de loop der jaren in totaal 10 grote releases gezien en heeft bij elke release opmerkelijke functie-updates aangeboden.
Dit iOS-besturingssysteem staat bekend om zijn gebruiksvriendelijkheid, vlotte bediening, crashvrije apps enz. Terwijl we de APP's bespreken, is de Apple iTunes App Store voor iOS nogal te rijk met een aantal apps die tot 2,2 miljoen kunnen schieten. Het downloaden van apps is snel gestegen tot maar liefst 130 miljard.
iOS is een besturingssysteem dat niet wordt beperkt door enige zone- of taalbarrière. Dit is een van de belangrijkste factoren van dit besturingssysteem dat in slechts 10 jaar van zijn ontwikkeling zo beroemd wordt. Het ondersteunt 40 verschillende talen.
Niet alleen de talen, zelfs de gebruikersinterface van iOS-apparaten is ook erg aantrekkelijk en stijlvol in vergelijking met de Android-apparaten.
Terwijl we in detail over de applicaties praten, worden hieronder enkele statistieken vermeld:
- De Apple iTunes App Store ontvangt elke dag bijna 1000 nieuwe aanvragen.
- Ongeveer 1/3rdvan de totale applicaties in de Apple iTunes App Store zijn gratis te downloaden.
- De betaalde iOS-applicatiekosten variëren gemiddeld van 1,10 tot 1,30 $.
- De gemiddelde prijs voor een iOS-game varieert van 0,55 tot 0,65 $.
Hoeveel applicaties heb je gebruikt op je iPhone, iPod Touch of iPad?
Een flinke handvol! Rechtsaf? Van Gmail en Facebook tot Clash of Clans en Asphalts. Dit soort applicaties, de aantallen en de verscheidenheid aan gebruikers brengen softwaretesters tot serieuze zaken. Is dat niet zo?
Als tester moet niet alleen de functionaliteit, maar ook een diepgaande UI-test worden gedaan om de app op iPhone, iPod en iPad te verifiëren vanwege de variatie in hun afmetingen.
iOS-testen
Zoals eerder besproken, is iOS alleen beperkt tot Apple-hardware of door Apple gemaakte apparaten. Dat is inderdaad een enorme opluchting. Er zijn echter tal van Apple-apparaten en hun versies die iOS ondersteunen.
Waar het op neer komt is dat Apple een gesloten systeem heeft, in tegenstelling tot Android, dat een open systeem is. De releases van OS of apparaten zijn goed gepland.
Dit is een bijkomend voordeel omdat:
- De grootte van de apparaten die beschikbaar zijn of zullen worden uitgebracht, staan vast en als QA moeten we een heel duidelijk idee hebben van wat alle apparaten uit de markt zijn. Het wordt voor een QA gemakkelijk om de testopstelling voor testen te bepalen
- Net als apparaten hoeven we geen diepgaande analyse uit te voeren voor het besturingssysteem, aangezien het een gesloten systeem is, kost het minder tijd (en moeite) om te beslissen over de testbank voor het testen van het besturingssysteem.
- Apple heeft een grote verscheidenheid aan eigen automatiseringstools, hoewel ze een beetje lastig te leren zijn.
- Ik herinner me dat ik voor het testen van GPS voor Android 2-3 dagen moest besteden aan het maken van dummy-scripts om een neplocatie te verzenden. Maar het was heel eenvoudig en duidelijk in iOS omdat het een ingebouwde functionaliteit heeft om nep-GPS te verzenden voor wandelen, hardlopen, fietsen enz.
- Voor de eerste test wordt het niet aanbevolen om de gps te testen door middel van een veldtest, het verzenden van dummy gps-gegevens is aan te raden en het bespaart ook tijd.
- Apple heeft strikte richtlijnen voor het indienen van een aanvraag, dit is in zekere zin een grote hulp in plaats van afgewezen te worden na indiening en een goede kans op succes, in tegenstelling tot andere besturingssystemen waar geen strikte richtlijnen zijn.
- De functionaliteit van het apparaat en het besturingssysteem zelf is vast en eenvoudig, waardoor de kans kleiner is dat u de manieren mist waarop een app kan werken. In iOS is er geen manier om een app geforceerd te stoppen, terwijl we apps op Android kunnen doden en stoppen. Aldus worden de complexiteiten voor het testen hier verminderd.
Dit zijn enkele van de voordelen die we ontlenen aan Apple-producten, maar niet noodzakelijk dat dit de voordelen zijn van elk product of elke app. Terwijl voor de apps die in Cross-platform zijn ontwikkeld, iOS moeilijk te hanteren is.
De hoog niveau classificatie is zoals hieronder weergegeven:
De eerste stap bij het testen van iOS-applicaties is om na te denken over het type implementatie.
De applicatie-implementatie kan een van de onderstaande 3 typen zijn:
1) Webgebaseerde applicaties: Dit zijn de applicaties die zich op dezelfde manier gedragen als de ingebouwde iOS-applicaties. Dit zijn de normale websites die een gebruiker opent in de Safari-browser van de iPhone.
2) Native applicatie: Een applicatie die is ontwikkeld met behulp van de iOS SDK [Software Development Kit] draait native op de ondersteunde iOS-apparaten zoals VLC, Flipboard, Uber etc.
3) Hybride toepassing: Dit is het mengsel of de hybride van beide bovengenoemde typen. Dit geeft toegang tot de webcontent via een weergavegebied voor webcontent en heeft ook enkele gebruikersinterface-elementen voor iOS. Bijv. Zomato, Twitter, Gmail enz
Typen iOS-applicatietests
De verschillende soorten testen van iOS-applicaties [zoals het wordt gedaan in typische omstandigheden] kunnen als volgt zijn:
- Handmatig testen - Apparaat gebruiken
- Systeemtesten
- UI / UX-testen
- Beveiligingstests
- Veldtesten
- Handmatig testen - Emulator gebruiken
- Testen van een eenheid
- Integratietesten
- UI testing
- Automatiseringstesten
- Regressietesten
- BVT-testen
- Compatibiliteitstesten
- Prestatietests
Voorbeeld van een applicatie:
Laten we, voordat we ingaan op de verschillende aspecten van iOS-testprocessen, een voorbeeld nemen van een typische iOS-applicatie.
Laten we eens kijken naar een inzamelingsaanvraag voor een sportteam. De applicatie heeft een login voor een sociaal account [Google / Facebook] en een betaalpagina.
Voordat u naar de betalingspagina gaat, moet er een optie zijn om de door het systeem gedefinieerde bedragen te selecteren of een aangepast veld om het bedrag in te voeren. Zodra de betaling is voltooid, moet een PDF-certificaat op het scherm worden weergegeven en tegelijkertijd moet de PDF ook worden gemaild naar het e-mailaccount van de gebruiker die momenteel is aangemeld.
Handmatig testen - Apparaat gebruiken
a) Systeemtesten:
Dit type iOS-tests wordt op het systeem uitgevoerd om te controleren of de verschillende componenten van het systeem samenwerken.
In dit testproces wordt de iOS-applicatie gestart op een echt Apple-apparaat, gevolgd door de interactie met de gebruikersinterface om een specifieke set of sets gebruikersactie (s) te activeren. Typische gebruikersacties kunnen een aanraakbediening of een veegbeweging op het scherm zijn.
Ten slotte wordt het resultaat getoetst aan het verwachte resultaat.
Voor onzeVoorbeeldhierboven gegeven, kan een typische systeemtest uit de volgende stappen bestaan:
- Meld u aan bij het iOS-sportteam en de inzamelingsapplicatie met behulp van de Facebook-accountaanmelding met open verificatie.
- Selecteer een vooraf gedefinieerd systeembedrag van $ 10 uit de gegeven opties.
- Ga verder naar de betalingsgateway.
- Selecteer PayTm mobiele portemonnee-optie voor het betalingsproces.
Systeemtests zijn de bewerkingen die meestal de verschillende end-to-end-stromen in het systeem omvatten. Elke test moet worden uitgevoerd met de verschillende beschikbare configuraties. En het hangt ook af van het apparaat en de iOS-versie waarop de applicatie is geïnstalleerd.
wat is een goede mp3-downloader
b) Testen van de iOS-gebruikersinterface
De UI / UX van de iOS-apparaten was een sleutelelement in hun succesverhaal.
UI / UX-testen op iOS-apparaten kunnen in de volgende categorieën worden ingedeeld:
- Ingangen: Het testen van de Touchscreen-functionaliteiten [zoals Long / Short touch, 3D touch, scrolling], knopgroottes, positionering van de knoppen, kleur van de lettertypen en hun grootte etc., vallen in deze categorie.
- Harde sleutels: Native applicaties werken naadloos samen met de ingebouwde hardwaretoetsen / harde toetsen die aanwezig zijn op het apparaat, zoals de Home Key, Sound-knoppen enz. De te testen applicatie zou ook op een vergelijkbare manier met de harde toetsen moeten communiceren.
- Soft Keys / Soft Keyboard: Hoe vervelend is het als het toetsenbord niet verschijnt als je op je Whatsapp-berichtenpagina bent? Het uiterlijk van een toetsenbord, de mogelijkheid om te verbergen wanneer je het niet nodig hebt, ondersteuning voor smileys, symbolen, alle karakters / symbolen etc. zijn noodzakelijk.
- In onze Voorbeeld , het toetsenbord kan op meerdere plaatsen in beeld komen, zoals het invoeren van het aangepaste bedrag, het intoetsen van de inloggegevens / kaartgegevens in de betalingsgateway enz.
- Scherm: Als de toepassing op meerdere apparaten wordt ondersteund, moet de oriëntatie op alle apparaten worden getest. Er kunnen enkele resolutiewijzigingen zijn op basis van het apparaat dat is gekozen voor het testproces. Tegelijkertijd moeten er ook tests worden uitgevoerd voor portret- / landschapsmodi en het gebruik van het toetsenbord in elk van de gevallen.
Als uw app niet alleen voor iOS is gemaakt, zijn er enkele tips die specifiek voor iOS moeten worden getest, zoals:
- Lijsten: Als er in iOS een lijst moet worden weergegeven, wordt deze altijd op een geheel nieuw scherm weergegeven, in tegenstelling tot Android waar een pop-up verschijnt.
Hieronder volgt een voorbeeld van hetzelfde:
bron
- Berichten: Als een app crasht, is het bericht dat wordt weergegeven in iOS anders dan in een Android. Ook als je hebt waargenomen, flitsen kleine berichten op Android-telefoons wanneer je geheugen vrijmaakt, zoals ‘# GB geheugen vrijgemaakt’ enz., Maar we kunnen nooit flash-berichten zien in iOS.
Hieronder volgt een voorbeeld:
bron
- Bevestiging verwijderen: Als u een iOS-app nauwkeurig observeert, staat in een pop-up met bevestigingsbevestiging de actie Annuleren links van de optie Verwijderen. In Android of een ander besturingssysteem is het andersom.
Dit zijn enkele van de voorbeelden die afzonderlijke testcases en testen vereisen, aangezien iOS een standaard gebruikersinterface, berichten enz. Heeft, die niet kunnen worden gewijzigd.
c) Beveiligingstests:
In onze voorbeeld hebben we een applicatie met een betalingsgateway en een inlogpagina die wordt ondersteund door integratie van sociale pagina's.
Bijvoorbeeld , laten we aannemen dat u een ICICI-app op uw telefoon heeft en dat wanneer u zich aanmeldt in plaats van uw accountgegevens, de gegevens van iemand anders worden weergegeven of als u een geldoverboeking uitvoert en de app de OTP naar een ander telefoonnummer verzendt dat niet van u is kunt u zich voorstellen wat er zal gebeuren. Beveiligingstesten zijn dus een must.
Gegevens in termen van inloggen op sociale media en de betalingsgateway moeten worden gecodeerd of beveiligd om de applicatie te beschermen tegen hacks.
d) Veldtesten:
Er wordt een veldtest uitgevoerd om het gedrag van de app op het datanetwerk van de telefoon te verifiëren.
Deze test wordt meestal gedaan wanneer de app een stabiel stadium bereikt en niet crasht wanneer deze intern wordt getest en alle functionaliteitsproblemen zijn opgelost. Dit wordt voornamelijk gedaan om de prestaties van de app op het trage datanetwerk te testen.
Handmatig testen - Emulator gebruiken
a) Testen van eenheden:
Dit wordt meestal gedaan door het ontwikkelteam / individuele ontwikkelaar. Deze test controleert of een bepaalde module van de broncode naar verwachting functioneert of niet.
Ontwikkelaars ontwerpen unit-testcases voor een enkele component, d.w.z. een geïsoleerde module waarop ze werken. Deze test bewijst dat de individuele module functioneert, waarna deze in de broncode wordt geïnjecteerd om te werken als een element van de geïntegreerde architectuur. Zoals de header zegt, is dit meestal een handmatige testrun en gedaan met behulp van testemulatie.
b) Integratietesten:
In de vorige stappen hebben we meer besproken over het testen van eenheden. Nu we zeker zijn van de functionaliteit van de individuele units / modules, wordt het noodzakelijk om ook de integratie te controleren. Deze test wordt uitgevoerd om de problemen met betrekking tot verschillende integratiepunten te achterhalen.
In onze Voorbeelden , kunnen we de login als een module en de betalingsgateway als een andere module noemen.
Unit testing omvat het testen van beide afzonderlijk. Bij integratietests wordt echter de integriteit van beide modules getest.
c) UI-testen:
Zoals hierboven uitgelegd, moet een UI-test worden uitgevoerd voor een app, omdat dit een sleutelfactor is voor het succes van de app.
Het kopen van alle telefoonmodellen om te testen is praktisch niet mogelijk omdat het veel zou kosten. Daarom is het gebruik van de emulator de beste optie, omdat het gratis is en ook voor de hand liggende UI-bugs gemakkelijk op emulators kunnen worden opgemerkt.
iOS-automatisering
a) Regressietesten:
In de steeds veranderende omgeving worden continu wijzigingen aangebracht om de applicatie te verbeteren of om de problemen op te lossen die in de vorige versie ervan zijn aangetroffen. Tijdens het implementeren van de wijzigingen, bestaat de kans dat de wijzigingen die aan de applicatie worden aangebracht, de bestaande functionaliteit kunnen wijzigen.
In eenvoudige bewoordingen kunnen de aangebrachte wijzigingen een nieuwe reeks problemen in de toepassing introduceren.
Om te controleren of de applicatie op dezelfde manier presteert, zelfs nadat de wijzigingen zijn geïmplementeerd, moet een regressietest worden uitgevoerd. En aangezien het een repetitieve activiteit is, is automatisering handig voor dit soort testruns.
b) BVT-testen:
Het is een goede gewoonte om een geautomatiseerde suite te laten draaien op de nieuwe build die is vrijgegeven om te testen, omdat het veel tijd bespaart en als de basisfunctionaliteiten crashen, wordt dit onmiddellijk gerapporteerd. In vergelijking met een handmatige inspanning kunnen de resultaten van geautomatiseerde basisverificatietests om een build te accepteren of afwijzen binnen enkele minuten worden uitgevoerd.
c) Compatibiliteitstesten:
Zoals besproken, zijn er tal van apparaten / typen die door Apple worden uitgebracht. Om precies te zijn, er zijn 15 verschillende soorten iPhones, 6 iPod Touch-modellen, 10 iPad-modellen en 2 iPad Pro-modellen op de markt.
Wanneer nu een app zoals de onze [toepassing voor inzamelingsacties voor sportteams] wordt ontwikkeld, zou deze door alle bovengenoemde apparaten moeten worden ondersteund. Dat houdt één ding in dat: Alle testcases moeten op al deze apparaten worden uitgevoerd.
Nu is handmatige inspanning niet mogelijk als het aantal apparaten zo groot is. Voor compatibiliteit hebben automatiseringstests de voorkeur.
d) Prestatietests:
Enkele daarvan die worden getest in prestatietests zijn:
- Hoe de applicatie zich gedraagt als deze operationeel wordt gemaakt of erg lang draait. Laat de applicatie tijdens de operationele periode communiceren / communiceren / inactief blijven.
- Dezelfde bewerking moet elke keer worden uitgevoerd met een verschillend aantal ladingen.
- Hoe het systeem zich gedraagt als de gegevensoverdracht echt enorm is.
Deze gevallen zijn repetitief van aard en worden meestal gedaan met behulp van automatisering.
Praktische tips om iOS-apps te testen
Het testen van iOS-applicaties kan moeilijk, lastig en uitdagend zijn, tenzij het correct wordt gedaan.
Om het testen van de iOS-app in de goede richting te krijgen, kunnen de volgende praktijken worden geïmplementeerd:
# 1) Vergeet emulators: In de meeste gevallen hebben emulators de voorkeur boven de echte apparaten. Maar dat is niet het ideale geval. Zaken als gebruikersinteracties, batterijverbruik, netwerkbeschikbaarheid, prestaties bij gebruik, geheugentoewijzing kunnen niet worden getest op de emulators. Probeer dus de hele tijd op echte apparaten te testen.
# 2) Automatiseer dingen in plaats van handmatig te doen: Hoe snel doe je een specifieke taak? In de wereld van vandaag maakt iedereen zich vooral zorgen over de bestede tijd. Automatisering vermindert niet alleen de uitvoeringstijd, maar verhoogt ook de effectiviteit, efficiëntie en de dekking van het testen van software.
# 3) Deel het werk: Deel de tests met teams, inclusief het ontwikkelingsteam. We kunnen de hulp krijgen in termen van het handmatig uitvoeren van de testcases, evenals de hulp van het ontwikkelteam in termen van het automatiseren van de handmatige testcases.
# 4) Bekijk de crashlogboeken: De applicatie voor iOS kan onder bepaalde omstandigheden vastlopen of crashen. Om het probleem op te lossen, spelen crashlogboeken een cruciale rol.
De volgende stappen kunnen worden uitgevoerd om de crashlogboeken vast te leggen:
- Voor MacOS:
- Synchroniseer het iOS-apparaat met de computer [Mac].
- Voor Mac OS: houd de Option-toets ingedrukt om de menubalk te openen.
- Ga naar Menu Ga en klik op Bibliotheek.
- Navigeer naar ~ / Library / Logs / CrashReporter / MobileDevice //.
- De naam van het logbestand moet beginnen met de naam van de applicatie.
- Voor Windows OS:
- Synchroniseer het iOS-apparaat met de computer [Windows].
- Navigeer naar C: Users AppData Roaming Applecomputer Logs CrashReporter MobileDevice \
- De naam van het logbestand moet beginnen met de naam van de applicatie.
# 5) De consolelogboeken vastleggen:
Consolelogboeken geven de algemene informatie van de applicaties op het iOS-apparaat.
Dit kan gedaan worden met tools zoals iTools. Klik in de iTools-applicatie op het pictogram 'Toolbox' wanneer het iOS-apparaat is verbonden met het systeem waarop iTools draait. Door op “Real-Time log” te klikken, wordt het real-time consolelogboek weergegeven.
# 6) Scherm vastleggen: Het wordt gemakkelijk om het probleem te begrijpen en daarom is het gemakkelijk op te lossen als de stappen visueel zijn.
Het is raadzaam om het scherm op te nemen of screenshots van de problemen te maken, zodat het ontwikkelingsteam ze beter begrijpt. De schermafbeelding kan worden gemaakt met behulp van de ingebouwde functie door tegelijkertijd op de aan / uit-knop en de startknop te drukken.
De opname van een scherm kan worden gedaan door Quick Time Player-opname te gebruiken terwijl het iOS-apparaat met de Mac is verbonden met de bliksemkabel.
iOS-automatiseringsframeworks
Enkele van de meest gebruikte automatiseringsframeworks worden hieronder vermeld:
# 1) tijdperken;
Appium gebruikt Selenium Web-driver om het testen van iOS-applicaties te automatiseren.
Dit platform is onafhankelijk en kan zowel op internet als op mobiele apparaten worden gebruikt [zowel Android als iOS]. Dit is een Open source-versie en is niet beperkt door taal. Applicatiewijzigingen of toegang tot de broncode zijn niet vereist voor automatisering met Appium.
Appium werkt naadloos onafhankelijk van het applicatietype: native, hybride of web.
# 2) Kalebas:
Calabash is een open source platformonafhankelijk framework dat zowel Android- als iOS-automatiseringstests ondersteunt.
websites om youtube-video's naar mp3 te converteren
Kalebas-tests zijn geschreven in komkommer, wat vergelijkbaar is met die van een specificatie en gemakkelijk te begrijpen is. Calabash bestaat uit bibliotheken waarmee de gebruiker kan communiceren met zowel native als hybride applicaties. Het ondersteunt interacties zoals gebaren, beweringen, screenshot enz.
# 3) Earl Grey:
Earl Grey is het eigen interne UI-testraamwerk van Google. Dit is gebruikt voor het testen van YouTube, Google Foto's, Google Play Muziek, Google Agenda etc.
Earl Grey is onlangs open source gemaakt. Enkele van de belangrijkste voordelen van Earl Grey zijn: ingebouwde synchronisatie, zichtbaarheidscontroles vóór interacties, echte gebruikersinteractie [tikken, vegen enz.]. Dit lijkt erg op Espresso van Google, dat wordt gebruikt voor Android UI-automatisering.
# 4) UI-automatisering:
UI Automation is ontwikkeld door Apple en lijkt sterk op UI Automator voor Android. De API's zijn gedefinieerd door Apple en de tests zijn geschreven in JAVA.
# 5) HOE:
KIF staat voor 'Keep it Functional'. Dit is een open source framework van een derde partij.
Dit is een iOS-integratietestframework dat nauw verwant is aan en wordt gebruikt voor XCTest-testdoelen. KIF is eenvoudig te configureren of te integreren met het Xcode-project en daarom zijn extra webserver of aanvullende pakketten niet vereist. KIF heeft een brede dekking qua iOS-versies.
Gevolgtrekking
Het testen van iOS-applicaties kan een zeer uitdagende taak zijn. Ik hoop dat je via dit artikel een goed begrip had van het testen van iOS-applicaties.
Het selecteren van de juiste aanpak, het best mogelijke testproces, methodologieën, tools, emulators / apparaten, enz. Zal het testen van iOS-applicaties echter zeer succesvol maken.
Onze aanstaande tutorial zal u alle basisconcepten die bij betrokken zijn, inlichten Tutorial voor het testen van Android-apps
Aanbevolen literatuur
- Beste softwaretesttools 2021 [QA Test Automation Tools]
- Gids voor het testen van draagbaarheid met praktische voorbeelden
- Alfatesten en bètatesten (een complete gids)
- Functioneel testen versus niet-functioneel testen
- Maak een Appium-test voor een iOS-app
- Primer eBook downloaden testen
- Wat is vroeg testen: vroeg testen, vaak testen MAAR hoe? (Een praktische gids)
- Tutorials voor het testen van mobiele apps (een complete gids met meer dan 30 tutorials)