Moram testirati sve: Kako testirati OutSystems Mobile Apps

Prije nekog vremena napisao sam članak u kojem sam razgovarao o ključnoj ulozi testiranja mobilnih aplikacija u vožnji kvalitete aplikacija i utjecaju na usvajanje korisnika i zadovoljstvo korisnika. Pregledao sam složenost testiranja mobilnih aplikacija zbog ogromnog raspona različitih mobilnih uređaja, verzija operativnog sustava i mrežnih uvjeta. Danas vas želim provesti kroz testiranje mobilnih aplikacija s OutSystemsima i AWS Device Farm.

Broj varijabli prilikom testiranja mobilnih aplikacija OutSystems, kao i kod bilo koje druge mobilne tehnologije, ogroman je, čak i na površinskoj razini. U skladu s tim, uvijek biste trebali razmotriti pogled dublje. Napokon, neispravna aplikacija samo traži deinstaliranje na licu mjesta.

Postoji samo toliko toga što možete testirati, a da ne posegnete za strašnom stvari koja može uništiti savršeno izgrađen scenarij: pravi uređaj. Testiranje na stvarnim uređajima je Pandorina kutija logistički i nešto je što progoni snove bilo kojeg mobilnog programera. Moj tim i ja izgubili smo dosta sna zbog toga. Morali smo pronaći rješenje, način da se testiramo bez da budemo pokopani pod planinom mobilnih telefona.

Postoje mnoga rješenja poput Visual Studio App Center, Perfecto ili Saucelabs. Ali, Amazon Device Farm pokazao se kao protuotrov za naše noćne more. AWS testni okvir koji omogućava programerima da učitavaju i izvode testove na stvarnim Android i iOS uređajima u AWS oblaku, Device Farm omogućuje vam izvršavanje automatiziranih testova i održavanje sesija na daljinu na određenim uređajima s vlastitim konfiguracijama, što znači da prije povezivanja na uređaj, možemo konfigurirati njegovo stanje.

AWS nudi i SDK koji se može koristiti za interakciju sa svim AWS uslugama. Na taj način možemo povezati Device Farm (ili bilo koji drugi servis) s našim unutarnjim nadzornim pločama.

Također, AWS je pokrenuo izravan pristup za privatne uređaje. S ovom novom značajkom, programeri mogu koristiti pojedinačne uređaje u svom privatnom testnom setu kao da su izravno povezani putem lokalnog računala putem USB-a.

Device Farm također podržava širok spektar okvira za automatizaciju testiranja poput Appium, Calabash, XCTest i mnogih drugih, gdje možete napisati vlastite testove.

Pa da, to je prilično impresivan alat, posebno kada vidite da djeluje.

Prljave ruke: Amazonska farma i izvan sustava

Dakle, sada ću vas provesti kroz AWS Device Farm za testiranje OutSystems aplikacija. Da bismo to vidjeli na djelu, prvo moramo kreirati testove! Koristit ćemo jednostavnu OutSystems aplikaciju i testirat ćemo stranicu za prijavu na Android uređaju. Za tehničke detalje o postavljanju testova pogledajte ove test uzorke na GitHub-u; možete pratiti i druge tutorijale za testiranje.

1. Postavljanje stroja

Ugradite okvir za automatsko testiranje koji vam najviše odgovara. Za ovaj članak ćemo se držati Appiuma. Poput Appiuma, neki okviri podržavaju više od jednog programskog jezika. Zato pazite da sve instalirate. Kao programski jezik izabrali smo Python.

2. Test postava

Započnite kreiranjem svog testirajućeg projekta. Prije nego što sve testove pošaljete na farmu uređaja, toplo preporučujem da najprije pokrenete točne testove u vašem lokalnom okruženju. Lakše je pronaći lokalni uzrok problema lokalno. Također je i manje skupo. Tako u svoju glavnu testnu datoteku dodajte sljedeće željene sposobnosti vašem testu.

desire_caps ['platformName'] = 'Android'
desire_caps ['deviceName'] = 'aPhone'
desire_caps ['appPackage'] = ''
desire_caps ['appActivity'] = ".MainActivity"

3. Planiranje i postupno testiranje

Ne stvarate test za sve. U idealnom slučaju izolirat ćete svaki dio aplikacije koji želite testirati. Dakle, prije nego što počnete kodirati svoj test, morate smisliti plan. Sjednite, opustite se i isprobajte svoju aplikaciju, tražeći glavne funkcije koje želite testirati.

4. Izrada testa

Sad kad imate plan, spremni ste započeti postavljanje testova. Započnimo stvaranjem testne datoteke u mapi s testovima i kodiranjem testnog slučaja. Kada kodirate test, prefiksirajte svoju metodu ispitivanja riječima "test"; ovo pomaže testnom okviru da identificira koja metoda sadrži naš test.

Provodimo testove interakcije, tako da je sve sekvencijalno. Prvo ćemo pokrenuti test. Zatim ćemo čekati da se događaj / stavka prikaže na zaslonu. Kad se prikaže onaj koji smo očekivali, kliknuti ćemo ga i onda ćemo ponovo pričekati da se na zaslonu pojavi novi. Ideja vam je: pokrenite test, pričekajte, kliknite, pričekajte. Ponekad ćemo možda trebati upotrijebiti stanje spavanja samo kako bismo bili sigurni da se dogodi određeni događaj ili se na ekranu pojavi određena stavka; u suprotnom ga možda ne primjećujemo.

import os
uvoz unittest
iz web aplikacije za uvoz appija
s selenium.webdriver.common.by import By
iz selenium.webdriver.support.ui uvoz WebDriverWait
iz selenium.webdriver.support uvoza očekivanih_ uvjeta kao EZ
klasa TestClass (unittest.TestCase):
  
  def setUp (self):
   self.driver = webdriver.Remote ('http://127.0.0.1:4723/wd/hub', {})
  def test_case (samo):
   ...
  Def tearDown (samo):
   self.driver.quit ()
       
  ako je __name__ == '__main__':
   unittest.main ()

Kako mogu znati da je nešto na ekranu? Kako ga kliknem? Ok, ovo je lukav dio. Sjećate se članka koji sam pisao o izradi izvornih aplikacija s OutSystems MABS-om? Ako je odgovor da, već znate da su aplikacije OutSystems hibridne. To znači da su neke promjene koje napravimo prilikom stvaranja naših programa za OutSystems preslikane u HTML. Ako uvijek postavite atribut podataka s naljepnicom, on vam pomaže identificirati elemente aplikacije u testnom slučaju, a jednostavnije je pronaći element s XPATH-om.

U prvom scenariju, kao što je prikazano u sljedećim primjerima, pokušavamo pronaći sliku. Dodali smo atribut sa vrijednošću koja predstavlja sliku (u ovom slučaju to je "SuccessImg") i tražili smo je s XPATH (// img [@ data-test-id = "SuccessImg"]). Kada se bavimo popisom, moramo biti oprezni. Da bismo pronašli određeni element na popisu, na primjer, treći, moramo se pobrinuti da imamo indeks vrijednosti. Ovdje trebamo potražiti atribut „data-test-id“ s vrijednošću „MyAttrId-2“.

Ja znam ja znam; postoje određeni scenariji u kojima ne možemo testirati određenu funkciju naše mobilne aplikacije OutSystems u Chrome pregledniku. Većina ovih slučajeva događa se zato što postoji izravna ovisnost o nekom izvornom dodatku koji mora biti instaliran u aplikaciji. Za taj specifični scenarij, moramo mobilni uređaj povezati s računalom, otvoriti Chrome i upisati chrome: // pregledati / # uređaje u URL. Otvorit će se stranica na kojoj se vide svi uređaji koji su povezani s računalom.

Sada pregledajte svoj uređaj i počnite kopati u HTML-u. Potražite gumbe, sidra ili veze koje će vam trebati za navigaciju po vašoj aplikaciji. Dobar način identificiranja gumba vaše aplikacije je korištenje HTML ID polja, ali ako iz nekog razloga taj određeni gumb nema ID, umjesto toga možete koristiti XPATH.

Ne zaboravite: iOS uređaje možete pregledati samo pomoću Safarija na Macu i omogućavanjem web inspektora na uređaju. Android se može pregledati i na osobnim računalima i na Mac računalima pomoću preglednika Chrome i omogućavanjem razvojnih alata na uređaju.

5. Ispravno grupiranje

Napravili smo test i sada smo ga spremni poslati na farmu Amazon Device Farm. Kako to možemo učiniti? To je jednostavno: izvršavanjem naredbe možemo stvoriti zip datoteku koja sadrži naš testni paket. Ovaj je testni paket važan jer sadrži test i biblioteke koje će izvoditi AWS Device Farm. Da biste poslali testove:

1. Na AWS konzoli napravite projekt u kojem ćete izvoditi svoje testove i novi pogon. Pokretanje predstavlja određenu aplikaciju s određenim nizom testova na određenom skupu uređaja. Temelji su gotovi.

2. Nakon toga, trebali biste prenijeti svoj paket aplikacija i testove. Ako nemate, AWS je pokriven s dva ugrađena testa. U ovom ćemo primjeru koristiti vlastiti.

3. Sada započinje zabava: odaberite uređaje koje želite testirati i odredite stanje uređaja (WiFi, NFC, GPS, Bluetooth). Trenutno AWS Device Farm ima 178 Android i 162 iOS uređaja. Za Android postoji 139 različitih uređaja (Motorola, Samsung, Wiko itd.) Koji rade s 23 različite verzije Androida. Za iOS postoji 26 različitih uređaja (iPad 2, iPhone 8, iPod Touch 6th Gen i tako dalje) koji rade sa 26 različitih iOS verzija.

4. Idi vrijeme! Pregledajte, pokrenite i pregledajte rezultate! Svako pokretanje izrađuje izvješće s zapisnicima uređaja, zapisnicima ispitivanja, snimkama zaslona, ​​videozapisima i još mnogo toga.

Zamotati

Farma uređaja je tako korisna. Sada možemo kontinuirano isporučivati ​​nove značajke, poboljšanja i ispravke programskih pogrešaka s visokom razinom pouzdanosti. Naši programeri sada razvijaju nove značajke i odmah ih testiraju.

Ovaj je alat također pomogao u našim slučajevima podrške. Kao što možda znate, nemoguće je imati sve različite uređaje i različite verzije OS-a. Uz ovaj alat, ne moramo gubiti noćni san zbog ovoga; AWS Device Farm svake godine dodaje nove uređaje u svoju uslugu. Dakle, svaki put kada primimo slučaj podrške za nešto što ne funkcionira kako se očekuje na uređajima Lava Iris, Ulefone ili Mlais, možemo zatražiti udaljeni pristup Device Farm, a aplikaciji možemo pristupiti i testirati na uređaju u stvarnom vremenu ,

Izazivam vas da ga isprobate, a sada je na vama! To nije tako jednostavno kao niski kod, ali također nije tako komplicirano kako se čini. Povrat vašeg truda će biti vrijedan toga. I ne zaboravite da smo koristili AWS Device Farm s Appiumom, ali možete koristiti i druge farme uređaja. Također, kao što sam već spomenuo, ovdje ste objasnili sve, ovdje i ovdje. Javite nam kako je to rješenje radilo za vas!