- co to jest testowanie automatyki?
- dlaczego testowanie automatyki ma kluczowe znaczenie w cyklu życia oprogramowania?
- czy oprogramowanie może testować inne oprogramowanie?
- jakie testy powinny być zautomatyzowane?
- pierwsze kroki z testowaniem automatyki
- przykład automatyzacji testów
- jak przejść od testów manualnych do testów automatyki
- Co Zautomatyzować?
- jak zautomatyzować?
- Konserwacja automatyzacji testów
co to jest testowanie automatyki?
jak sama nazwa wskazuje. automation testing zajmuje się testowaniem oprogramowania i wykonuje je za pomocą zestawu narzędzi lub frameworka automatyzacji. W prostych słowach jest to rodzaj testowania, w którym narzędzie automatycznie wykonuje zestaw zadań w określonym wzorze.
odciąża ręcznych testerów i pozwala im skupić się na zadaniach o wyższej wartości-testach rozpoznawczych, przeglądaniu wyników testów itp. Zasadniczo maszyna przejmuje i wdraża przyziemne, powtarzalne, mylące w czasie zadania, takie jak testy regresyjne. Testowanie automatyzacji jest niezbędne do osiągnięcia większego zakresu testów w krótszych terminach, a także większej dokładności wyników.
dlaczego testowanie automatyki ma kluczowe znaczenie w cyklu życia oprogramowania?
wyobraź sobie.
pierwszego dnia jako QA musisz przetestować aplikację, która zawiera około 100 pól, które wymagają wprowadzenia. Podczas przeprowadzania testów rozpoznawczych należy ręcznie wstawiać dane wejściowe w każdym polu. Zajmuje to około 10 minut, jeśli jesteś naprawdę szybki.
wciskasz Submit. Zostanie wyświetlony komunikat o błędzie. Wygląda na nieobsługiwany wyjątek. Zgłaszasz błąd i czujesz się naprawdę dobrze z dobrze wykonaną pracą. Powtarzasz proces, znajdujesz jeszcze kilka błędów i masz ogólnie produktywny pierwszy dzień.
następnego dnia programista rozwiązuje problemy i musisz przetestować nową wersję oprogramowania, powtarzając te same kroki, co dzień wcześniej. Naprawiono błąd. Dobra robota. Dzięki twoim wysiłkom zapewniono dobre wrażenia użytkownika.
trzeciego dnia Programiści wydali nowszą wersję z nowszymi funkcjami. Ale aby upewnić się, że nowe funkcje nie złamały starszych funkcji roboczych, musisz powtórzyć proces ponownie. Nie znaleziono żadnych problemów.
po miesiącu Programiści wydają nowsze wersje w sposób ciągły, co oznacza, że musisz testować oprogramowanie, powtarzając ten sam proces (wstawianie pola wejściowego) za każdym razem. Jesteś znudzony i zmęczony. Twoja dokładność zaczyna się wahać,w wyniku czego w końcu tracisz błąd – być może raczej oczywisty.
Wierzcie lub nie, jest to dość powszechny scenariusz dla większości QAs. Nie jest możliwe, aby robić to samo w kółko i być doskonałym w tym za każdym razem. W tym miejscu pojawia się testowanie automatyzacji.
czy oprogramowanie może testować inne oprogramowanie?
tak. O to właśnie chodzi w testowaniu automatyzacji. Jeśli chodzi o testowanie regresji, inwestowanie wysiłku ręcznego jest daremne i marnotrawne. Zamiast oczekiwać, że ludzie będą powtarzać te same kroki z taką samą szybkością, dokładnością i energią, o wiele bardziej logiczne jest zaprogramowanie Maszyny do tego samego.
jakie testy powinny być zautomatyzowane?
zanim stworzymy strategię automatyzacji testów, przyjrzyjmy się, które testy są najbardziej wykonalne dla automatyzacji:
- testy regresyjne: zestawy regresji stale się powiększają i wymagają wielokrotnego wypełniania tych samych zmiennych, aby nowe funkcje nie ingerowały w Starsze funkcje. Można to łatwo zautomatyzować.
- testowanie złożonych funkcjonalności: zautomatyzuj wszystkie testy wymagające złożonych obliczeń, coś podatnego na błędy ludzkie.
- testowanie dymu: Uruchom automated suites, aby zweryfikować jakość głównych funkcji. Pozwala to zaoszczędzić czas, oferując szybką analizę tego, czy budowa wymaga bardziej dogłębnych testów.
- testowanie oparte na danych: automatyzuj testy w celu weryfikacji funkcjonalności, które muszą być wielokrotnie testowane za pomocą wielu zestawów danych.
- testowanie wydajności: automatyzuj testy monitorujące wydajność oprogramowania w różnych okolicznościach. Wykonywanie tego ręcznie byłoby niezwykle żmudne i czasochłonne.
- testy funkcjonalne: Za każdym razem, gdy programista przesyła PR, testy funkcjonalne muszą zostać przeprowadzone szybko i dostarczyć natychmiastową informację zwrotną. Jest to niemożliwe do osiągnięcia bez automatyzacji, zwłaszcza w miarę zwiększania skali organizacji.
pierwsze kroki z testowaniem automatyki
przechodząc z testowania ręcznego na testowanie automatyki, pamiętaj o następujących kwestiach:
- nie dążyć do 100% automatyzacji testów. Nie wszystkie testy mogą być zautomatyzowane. Nawet wśród testów, które mogą być zautomatyzowane, nie ustawić początkowy cel pełnej automatyzacji.
- wyznacz realistyczny cel. Na przykład zacznij od przeniesienia kilku testów do automatyzacji. Napisz mniejsze przypadki testowe, które mogą być łatwo ponownie wykorzystane w przyszłych testach tego samego oprogramowania. Mapuj przypadki testowe z odpowiednimi funkcjami, aby zapewnić lepszy zasięg testu. Oznaczaj przypadki testowe, aby zespoły mogły jasno określić, co zautomatyzować, a także efektywniej raportować.
- Poznaj nowe obszary aplikacji dzięki automatyzacji. Opracowując strategie automatyzacji, upewnij się, że wymagania biznesowe są traktowane tak samo poważnie, jak względy techniczne.
- wiedz, czego nie automatyzować. Pomaga to decydować o zakresie automatyzacji na wczesnym etapie procesu ideacji. Poniższe testy najlepiej pozostawić do ręcznego pokrycia:
- User experience testing: narzędzia nie mogą replikować żadnej podróży Użytkownika w całości. Algorytm nie jest w stanie przewidzieć, w jaki sposób poszczególni użytkownicy będą wchodzić w interakcje z aplikacją. Aby faktycznie ocenić jakość doświadczenia użytkownika, trzymaj się ludzkich testerów. Spróbuj użyć ręcznych interaktywnych narzędzi testujących, takich jak BrowserStack Live.
- testy dostępności: Podczas testowania dostępności aplikacji nie ma substytutu użycia przez człowieka. Narzędzie nie może mierzyć dostępności, ponieważ ludzie często mają różne opinie na temat tego, co liczy się jako dostępne. Nie jest możliwe, aby narzędzie rozpoznało, czy przepływ pracy oprogramowania zapewnia łatwy dostęp dla rzeczywistych ludzi.
- wybierz odpowiednie narzędziytestowanie automatyki jest całkowicie zależne od narzędzi. Oto, co należy wziąć pod uwagę przy wyborze odpowiedniego narzędzia:
- charakter oprogramowania: czy aplikacja jest testowana przez Internet czy przez urządzenia mobilne?
aby przetestować te pierwsze, użyj narzędzia takiego jak Selenium do automatyzacji testów. Dla tego ostatniego Appium jest jednym z najlepszych możliwych narzędzi do automatyzacji. - doświadczenie programisty: Wybierz struktury, Języki i narzędzia, które pasują do komfortu i doświadczenia testerów. Niektóre z najpopularniejszych języków używanych do testowania automatyzacji to Java, JavaScript, Ruby, C# itp.
- Open Source czy nie: w zależności od ograniczeń budżetowych, można użyć narzędzi open-source, takich jak Selenium lub Appium do celów automatyzacji. Jednak ważne jest, aby pamiętać, że wszystkie narzędzia open-source nie są gorsze od ich komercyjnych odpowiedników. Na przykład Selenium Webdriver jest narzędziem open-source, które jest najbardziej preferowane przez zautomatyzowanych testerów na całym świecie.
- wybierz właściwą siatkę testową
siatka testowa odnosi się do infrastruktury, na której będą uruchamiane wszystkie automatyczne testy. Zawiera szereg urządzeń, przeglądarek i systemów operacyjnych (wiele wersji), na których oprogramowanie ma być testowane. Zawsze najlepiej jest zautomatyzować testy na prawdziwych urządzeniach i przeglądarkach. Zapewni to, że oprogramowanie jest testowane w rzeczywistych warunkach użytkownika.
dodatkowo idealna siatka testowa powinna umożliwiać testowanie równoległe. Oznacza to, że testerzy powinni mieć możliwość przeprowadzania wielu testów na wielu urządzeniach jednocześnie. Skraca to czas testów, przyspiesza wyniki i oferuje Wyniki w krótszych terminach.
trzeba jeszcze zdecydować, czy siatka testowa powinna być hostowana lokalnie, czy w chmurze. Należy pamiętać, że konfiguracja i konserwacja infrastruktury lokalnej jest prawie zawsze kosztowna. Wymaga śledzenia nowych urządzeń, przeglądarek i systemów operacyjnych, aktualizacji i utrzymania ich odpowiednio. Jest to wyzwanie, ponieważ wiele wersji każdej z nich jest wydawanych co miesiąc.
z drugiej strony testowanie na siatce opartej na chmurze jest łatwiejsze, ponieważ aktualizacją i konserwacją zajmowałaby się organizacja oferująca siatkę. Na przykład BrowserStack oferuje sieć Selenium w chmurze, która jest podłączona do ponad 2000 rzeczywistych urządzeń i przeglądarek do testowania. Użytkownicy muszą po prostu zarejestrować się i rozpocząć testowanie na solidnej siatce Selenium, która jest stale aktualizowana, aby uzyskać najlepsze możliwe wyniki.
prawdziwa Chmura urządzeń BrowserStack zapewnia ponad 2000 rzeczywistych przeglądarek i urządzeń do natychmiastowego testowania na żądanie. Chmura zapewnia również integrację z popularnymi narzędziami CI / CD, takimi jak Jira, Jenkins, TeamCity, Travis CI i wiele innych. Ponadto istnieją wbudowane narzędzia do debugowania, które umożliwiają testerom natychmiastowe identyfikowanie i rozwiązywanie błędów. BrowserStack ułatwia również testowanie Cypress na ponad 30 wersjach przeglądarek z natychmiastową, bezproblemową równoległością.
Wypróbuj testowanie automatyzacji za darmo
przykład automatyzacji testów
podczas ręcznego testowania oprogramowania tester używa uchwytu i klawiatury do interakcji z nim. Skrypty i Narzędzia automatyzacji krok po kroku powielają tę interakcję.
w tym przykładzie testowany jest kalkulator, aby sprawdzić, czy może dodać dwie liczby i wyświetlić wynik. Ręcznie, kroki, aby to zrobić, będą następujące:
Krok 1: Uruchom Kalkulator
Krok 2: Naciśnij 2
Krok 3: Naciśnij +
Krok 4: Naciśnij 3
Krok 5: Naciśnij =
Krok 6: ekran wyświetli 5
Krok 7: Zamknij Kalkulator
narzędzie automatyzacji może wykonać te same kroki za pomocą następującego skryptu:
//the example is written in MS Coded UI using c# language.public void TestCalculator(){//launch the applicationvar app = ApplicationUnderTest.Launch("C:\Windows\System32\calc.exe");//do all the operationsMouse.Click(button2);Mouse.Click(buttonAdd);Mouse.Click(button3);Mouse.Click(buttonEqual); //evaluate the resultsAssert.AreEqual("5", txtResult.DisplayText,"Calculator is not showing 5");//close the applicationapp.Close();}
podczas wykonywania powyższego skryptu wyświetlany jest dokładnie ten sam wynik (5). Zamiast przechodzić przez ręczne kroki, po prostu napisz skrypt i pozwól narzędziu zająć się resztą.
jak przejść od testów manualnych do testów automatyki
na początek: zadaj dwa pytania.
- co zautomatyzować?
- jak zautomatyzować?
Co Zautomatyzować?
- automatyzuj testy niezbędne do częstego cyklu zwalniania. Może to obejmować testy dymu, testy regresji i tym podobne. Zasadniczo automatyzuj testy, które przyspieszają cały cykl testowy. Pamiętaj, że niższa interwencja ręczna oznacza szybsze wyniki.
- automatyzuj testy w oparciu o priorytet techniczny i biznesowy. Pomyśl tak: czy automatyzacja tego testu pomoże firmie? Czy automatyzacja tego testu pomoże uprościć złożoność techniczną? Jeśli odpowiedź brzmi ” tak ” na którekolwiek z pytań, automatyzuj.
- automatyzuj w oparciu o użyteczność. Niektóre testy, takie jak testy zgodności między przeglądarkami, po prostu działają lepiej, gdy są wykonywane ręcznie. Zależność narzędzia może również ograniczyć potencjał automatyzacji dla określonego zespołu testującego lub organizacji.
Czytaj więcej: 10 najlepszych praktyk automatyzacji testów do naśladowania
jak zautomatyzować?
na początek pamiętaj, że nie wszystkie testy mogą być zautomatyzowane. Stosując się do trzech strategii z poprzedniej sekcji, łatwiej jest zainicjować automatyczne testowanie w praktyczny sposób.
- zacznij od małego. 100% automatyzacja nie jest celem, a także nie jest możliwa. Pisz mniejsze przypadki testowe, ponieważ są łatwiejsze w utrzymaniu i ponownym użyciu. Przenieś niewielką liczbę testów na platformę automatyzacji, uruchom testy, przeanalizuj wyniki i zdecyduj, czy proces okazał się korzystny dla procesu tworzenia oprogramowania.
- jeśli operacja przyniesie znaczące korzyści, przenieś więcej testów do automatyzacji. Rozpocznij przenoszenie testów nie tylko objętościowo, ale także zwiększ rodzaj automatycznych testów. Pamiętaj, że jest to wciąż etap eksperymentalny. Możliwe, że niektóre testy okażą się nieefektywne w automatyzacji i będą musiały zostać przeniesione z powrotem do testów ręcznych.
- Mapuj przypadki testowe z każdą metodą lub funkcją w celu uzyskania lepszego zasięgu testu. Oznaczaj przypadki testowe w celu łatwiejszej identyfikacji, aby zespół mógł szybko wiedzieć, które testy zautomatyzować. Pomaga to również wdrożyć lepsze raportowanie.
- rozpoczynając testowanie automatyzacji rozpocznij od ręcznego zbadania nowych obszarów aplikacji. Następnie stwórz plan ryzyka, który wyszczególni, co należy zautomatyzować, w oparciu o priorytety biznesowe i techniczne.
- użyj analityki, aby określić preferencje użytkownika końcowego. Utwórz listę przeglądarek i urządzeń, z którymi użytkownicy mają największy dostęp do oprogramowania. Pomaga to w testowaniu automatyzacji obejmującym odpowiednie interfejsy i optymalizuje wydajność oprogramowania na właściwych ścieżkach użytkownika.
Wypróbuj automatyczne testowanie na prawdziwej chmurze urządzeń
Konserwacja automatyzacji testów
po opracowaniu zestawy do testowania automatyzacji muszą zostać utrzymane. Wraz z rozwojem oprogramowania i rozwojem bazy kodu Skrypty automatyzacji muszą być modyfikowane i aktualizowane w celu włączenia nowych funkcji i funkcji. Nawet niewielkie zmiany w interfejsie użytkownika mogą zakłócić testy i spowodować ich niepowodzenie. Podczas projektowania przypadków testowych testerzy automatyzacji muszą uwzględniać wysiłek i koszty konserwacji.
podejście do utrzymania automatyzacji testów działa z dwóch głównych perspektyw:
- błąd testu: podczas debugowania nieudanych testów wyszukuje możliwe problemy z konserwacją. Czy skrypt testowy nie był odpowiednio zaktualizowany? Czy zmiana kodu oprogramowania zakłóciła działanie skryptu testowego? Jest to łatwy sposób na określenie, które obszary wymagają konserwacji.
- Zmiana zależności lub narzędzi: Czy zespół lub organizacja zmieniła interfejsy API, narzędzia raportowania, bazy danych itp.? Jeśli tak, testy mogą wymagać zmiany lub aktualizacji w celu dostosowania do nowych zestawów narzędzi. Aby to osiągnąć, Programiści i testerzy będą oczywiście musieli zostać przeszkoleni w zakresie nowej infrastruktury, aby mogli nadążyć za wysiłkami konserwacyjnymi w przyszłości.
jakie są kluczowe elementy skutecznej strategii automatyzacji testów?
testowanie Automatyki jest integralną częścią każdego ekosystemu testowania. Bez przechodzenia na konfigurację automatyzacji kompleksowe testowanie staje się trudne, podobnie jak dotrzymywanie coraz krótszych terminów. W związku z tym ważne jest, aby jak najwcześniej zainicjować protokoły testowania automatyzacji w sposób równoważący i uzupełniający testy ręczne.
Wypróbuj opisane powyżej kroki i eksperymentuj na tyle, aby dowiedzieć się, które podejścia dają optymalne wyniki. Nie martw się, że kilka razy nie uda Ci się znaleźć idealnego miejsca, które umożliwia skuteczną automatyzację bez uszczerbku dla ludzkiej walidacji.