Close

Testowanie oprogramowania w ramach procesu ciągłego dostarczania

Poznaj korzyści płynące z testowania oprogramowania oraz jego rolę w procesie ciągłego dostarczania.


Testowanie oprogramowania jest procesem organizacyjnym realizowanym w ramach działów odpowiedzialnych za tworzenie oprogramowania, w którym oprogramowanie krytyczne dla firmy jest weryfikowane pod kątem poprawności, jakości i wydajności. Proces ten ma na celu zapewnienie, że opracowywane systemy biznesowe i funkcje produktów działają w prawidłowy, zgodny z oczekiwaniami sposób.

Testowanie oprogramowania może być procesem ręcznym lub zautomatyzowanym.

  • Ręczne testowanie oprogramowania to proces prowadzony przez zespół lub osobę, który lub która ręcznie obsługuje oprogramowanie i upewnia się, że działa ono zgodnie z oczekiwaniami.
  • Zautomatyzowane testowanie oprogramowania obejmuje wiele różnych narzędzi, które oferują różnorodne możliwości — od izolowanego sprawdzania poprawności kodu do symulowania pełnego, prowadzonego przez człowieka testowania ręcznego.

Różne rodzaje testowania oprogramowania

Porównaj różne rodzaje testowania oprogramowania, takie jak m.in. testowanie jednostkowe, testowanie integracyjne, testowanie funkcjonalne czy testowanie akceptacyjne.

Testowanie eksploracyjne

Dowiedz się, na czym polega testowanie eksploracyjne i jaka jest jego historia. Odkryj zalety i wady testów eksploracyjnych i dowiedz się, kiedy najlepiej z nich korzystać.

Pokrycie kodu — wprowadzenie

Dowiedz się, czym jest pokrycie kodu i jak znaleźć odpowiednie narzędzie do jego obliczania.

Samouczek dotyczący testowania integracyjnego

Z tego samouczka dowiesz się, jak przeprowadzać testy integracyjne za pomocą Bitbucket Pipelines.

Korzyści wynikające z testowania oprogramowania


Testowanie oprogramowania pozwala organizacji zaoszczędzić czas i pieniądze poprzez zmniejszenie kosztów jego tworzenia i utrzymania. Proces ten daje gwarancję stabilności podczas opracowywania nowych funkcji. Testowanie zapewnia, że dana funkcja działa zgodnie z oczekiwaniami, a użytkownicy nie napotykają błędów.

Określenie zestawu przypadków testowych, do których nowa funkcja musi pasować, aby została uznana za kompletną i możliwą do dostarczenia, pozwala skrócić czas potrzebny na rozwój nowych funkcji. Dzięki temu programiści mają jasno określony cel, co pozwala na dokładniejsze oszacowanie harmonogramu pracy i zmniejszenie liczby nowych błędów. Po wprowadzeniu tych przypadków testowych obniża się całkowity koszt utrzymania. Testy można przeprowadzić na już dostarczonej funkcji, aby upewnić się, że nadal działa ona zgodnie z oczekiwaniami.

Poziomy testowania oprogramowania


Istnieje kilka podstawowych poziomów testowania oprogramowania. Na każdym z nich funkcjonalność oprogramowania jest badana z innej perspektywy procesu rozwoju. Przyjrzyjmy się po kolei poszczególnym rodzajom testów i przeanalizujmy ich praktyczne zastosowanie.

Testowanie jednostkowe

Podstawowym poziomem testowania oprogramowania jest testowanie jednostkowe. Testowanie jednostkowe polega na instrumentacji kontroli poprawności danych wejściowych i wyjściowych w odniesieniu do poszczególnych jednostek kodu. Jednostką pomiaru w tym przypadku są samodzielne funkcje lub metody kodu.

Podczas testowania jednostkowego funkcje kodu produkcyjnego są wykonywane w środowisku testowym z wykorzystaniem symulowanych danych wejściowych. Następnie dane wyjściowe funkcji są porównywane z oczekiwanymi danymi wyjściowymi dla tych danych wejściowych. Jeśli są z nimi zgodne, wynik testu jest pozytywny. Jeśli nie, kończy się on niepowodzeniem. Testy jednostkowe to świetny sposób na sprawdzenie poprawności funkcji danych pochodnych.

Oto hipotetyczny przykład historyjki użytkownika dotyczącej testów jednostkowych: „funkcja 2VAL, przy 2 wartościach x i y, zawsze zwraca x+y”. Następnie w ramach testu jednostkowego zostałaby wykonana funkcja 2VAL z dwiema wartościami w celu potwierdzenia, że dane wyjściowe to x+y. Testy jednostkowe świetnie sprawdzają się przy potwierdzaniu poprawności kodu działającego na wartościach pieniężnych.

Poziomy testowania oprogramowania: jednostkowe, integracyjne, funkcjonalne i eksploracyjne

Testowanie integracyjne

Kiedy przypadek testowy oprogramowania obejmuje więcej niż jedną jednostkę, jest uważany za test integracyjny. Podczas opracowywania przypadku testowego oprogramowania testy jednostkowe mogą szybko przekształcić się w testy integracyjne. Często można opracować test jednostkowy, który działa na podstawie zależności kodu innych firm. Samej zależności nie trzeba testować, a integracja z nią jest symulowana lub pozorowana.

Testowanie funkcjonalne lub kompleksowe

Przypadki testowe, w ramach których symulowane jest pełne doświadczenie na poziomie użytkownika, nazywane są testami funkcjonalnymi lub kompleksowymi. Testy kompleksowe bazują na narzędziach, które symulują prawdziwe zachowania użytkowników. Typowe kroki w teście kompleksowym:

  • Kliknij ten przycisk
  • Przeczytaj ten tekst
  • Prześlij ten formularz

Ze względu na swoją kompleksowość testy kompleksowe weryfikują poprawność we wszystkich warstwach stosu oprogramowania.

Testowanie eksploracyjne

Testowanie eksploracyjne to ćwiczenie testowe, w ramach którego testerzy otrzymują luźno zdefiniowane zadanie do wykonania przy użyciu testowanego oprogramowania. Można się wówczas wiele dowiedzieć się o sposobie, w jaki użytkownicy korzystają z produktu. W trakcie sesji testów eksploracyjnych można nawet motywować użytkowników, oferując nagrody za największą liczbę zgłoszeń, najlepszy defekt lub zrobienie czegoś nieoczekiwanego z produktem.

Jedną z zalet eksploracyjnych testów oprogramowania jest to, że każdy może pomóc w testowaniu, ponieważ wszystko, co trzeba zrobić, to swobodne poruszanie się po produkcie. Testy eksploracyjne nie są przypadkowe, ale nie są też oskryptowane jak testy ręczne.

Testowanie oprogramowania w ramach procesu ciągłego dostarczania


W procesie ciągłego dostarczania wykorzystuje się wszystkie wyżej wymienione strategie testowania, aby utworzyć płynny pipeline zapewniający automatyczne dostarczanie ukończonych zadań związanych z kodem. Optymalna konfiguracja pozwoliłaby programiście wypchnąć niedawno ukończony kod do pipeline'u ciągłego dostarczania w celu oceny. Następnie pipeline uruchomiłby ten kod na poszczególnych poziomach testowania. Jeśli kod pomyślnie przejdzie testy, zostanie automatycznie scalony i wdrożony do produkcji. Jeśli jednak kod nie przejdzie testów, zostanie odrzucony, a programista automatycznie powiadomiony o krokach do poprawienia.

Popularne ekosystemy rozwoju języków oprogramowania mają swoje własne ekosystemy testowania podzbiorów. Dostępnych jest wiele narzędzi, które pomagają w instrumentacji i rozwijaniu zestawów testów. Narzędzia te są zwykle instalowane za pośrednictwem menedżera pakietów specyficznego dla języka programowania używanego w projekcie.

Dostępne są również narzędzia do wykonywania i rozwijania testów. Można zainstalować różne programy testowe, aby uzyskać dane wyjściowe z zestawu testów. Powszechną praktyką jest mierzenie „pokrycia testami” w całym projekcie. Aby określić, jak duża część bazy kodu jest odpowiednio pokryta, można użyć narzędzia do obliczania pokrycia kodu.

Kiedy zestaw testów został już opracowany i działa poprawnie w projekcie lokalnym, zazwyczaj łatwo jest go zintegrować z pipeline'em CD. W przypadku większości hostowanych systemów CD/CI dostępne są przewodniki po integracji zestawu testów z pipeline'em.

Jak sprawić, by testowanie stało się częścią pipeline'u CD


Skuteczny i wartościowy pipeline CD jest zbudowany na bazie solidnych testów. Wszystko zaczyna się od ręcznych przypadków testowych, które ewoluują w rozwiązania zautomatyzowane.

Kładź nacisk na jakość na każdym etapie pipeline'u

Wszyscy — programiści, testerzy itd. — odpowiadają za jakość relacji z klientem. Każdy wiersz kodu może ulepszyć lub pogorszyć środowisko klienta. Zestaw testów w pipeline'ie CD to wielopłaszczyznowe narzędzie pozwalające tworzyć poprawny kod wysokiej jakości. Podczas fazy projektowania produktu zestaw testów może być przydatny przy wstępnym planowaniu rozwoju danej funkcji. Zestaw testów służy przede wszystkim do usprawniania procesu rozwoju, ale można z niego również korzystać w celu zagwarantowania jakości w środowiskach stagingowych i produkcyjnych.

Zapewnij programistom możliwość udowodnienia jakości funkcji

Według tradycyjnej metodologii testowanie jest oddzielnym procesem, którego nie obsługuje programista. Fakt, że programiści nie uczestniczą w procesie zapewniania jakości, sprzyja brakowi empatii dla klienta z ich strony. Co więcej, powoduje to, że problemy dłużej utrzymują się w bazie kodu, a ich naprawianie jest bardziej kosztowne. Metodologia ta wiąże się również z wysokimi kosztami organizacyjnymi w zakresie pracowników, ponieważ zachęca do zatrudnienia osobnego zespołu QA, który bierze na siebie odpowiedzialność.

Ciągłe dostarczanie zwiększa świadomość programistów i empatię w stosunku do użytkownika końcowego. Zadaniem programistów jest zapewnienie pokrycia testami tworzonych przez nich funkcji oraz nadzorowanie ich przejścia ze środowiska rozwojowego do produkcyjnego. Daje to programistom możliwość pełnego panowania nad daną funkcją i udowodnienia jej jakości.

Uwzględniaj opinie klientów

Ciągłe dostarczanie umożliwia szybkie wdrażanie i aktualizowanie projektu oprogramowania. Pozwala to na natychmiastowe uwzględnienie opinii klientów w kolejnym wydaniu. W przypadku problemu zgłoszonego przez użytkownika można skorzystać z zestawu testów pipeline'u CD, aby zawęzić zakres możliwych wektorów problemu. Zespoły programistów i testerów, które szybko reagują na opinie klientów, odnoszą większe sukcesy.

Chcesz stworzyć własne środowisko ciągłego dostarczania? Pomożemy Ci rozpocząć ten proces.

Zbuduj solidną strategię testowania oprogramowania


Podczas opracowywania strategii testowania oprogramowania najlepiej jest mieć na uwadze ogólny produkt, jego użytkowników oraz strategie biznesowe. Trzeba rozważyć, jakie są najważniejsze elementy, które należy pokryć testami.

W idealnym świecie w ramach projektu oprogramowania dąży się do 100-procentowego pokrycia testami, co gwarantuje, że kod jest wolny od błędów i działa zgodnie z oczekiwaniami. Niestety w prawdziwych warunkach biznesowych, które charakteryzują się harmonogramami i ograniczeniami budżetowymi, cel ten jest raczej nie do osiągnięcia.

Wybór strategii testowania powinien być uzależniony od rodzaju dostarczanego oprogramowania. Jeśli oprogramowanie jest aplikacją opartą na graficznym interfejsie użytkownika, bardzo cenne będą testy kompleksowe o wysokim poziomie szczegółowości. W przypadku oprogramowania bez interfejsu użytkownika należy zrezygnować z testowania kompleksowego i korzystać z testów jednostkowych.

Ogólna strategia dotycząca aplikacji opartych na graficznym interfejsie użytkownika jest następująca.

  1. Instrumentacja testów kompleksowych wszystkich głównych przepływów użytkownika, logowania, rejestracji, wyewidencjonowania itp.
  2. Instrumentacja testów jednostkowych wszystkich funkcji kodu związanych z danymi wrażliwymi, takich jak np. narzędzia do obsługi transakcji pieniężnych
  3. Instrumentacja testów integracyjnych pod kątem wszelkich punktów integracji z narzędziami innych firm w celu zapewnienia przepływu danych do tych narzędzi oraz prawidłowej propagacji wszelkich błędów

Usprawnij testowanie oprogramowania dzięki ciągłemu dostarczaniu


Dążenie do wprowadzenia przepływu pracy opartego na ciągłym dostarczaniu wiąże się z wieloma korzyściami biznesowymi. Można dzięki niemu drastycznie obniżyć koszty organizacyjne związane z zatrudnianiem oddzielnych zespołów zajmujących się zapewnieniem jakości, zarządzaniem wydaniami i inżynierią testów oraz kierowaniem tymi zespołami.

Ciągłe dostarczanie zapewnia wyższy poziom jakości produktu niż przepływy pracy oparte na tradycyjnych testach QA. Testowanie CD zachęca programistów do wzięcia odpowiedzialności za środowisko użytkownika końcowego i jakość udostępnianych funkcji. CD tworzy strukturę, która ułatwia wszystkim pracownikom firmy skupienie się na jakości wydania i dyskusję na jej temat.

Wdrożenie solidnej strategii testowania oprogramowania jest podstawą ciągłego dostarczania, a automatyzacja — kluczem do udanego pipeline'u w tym zakresie.

Chcesz ulepszyć swój proces testowania oprogramowania? Dowiedz się więcej o testowaniu w środowisku CD. Możesz również dowiedzieć się, jak wykorzystać narzędzia firmy Atlassian i innych firm, aby włączyć testowanie do przepływu pracy, sięgając do naszych samouczków dotyczących testowania DevOps.

Claire Maynard
Claire Maynard

Claire is an Atlassian marketing veteran who’s worked across growth, performance, and product marketing throughout her tenure. Currently she drives brand, content, and go-to-marketing strategy for Confluence Cloud. Outside work, you can find Claire surfing, running, or trying out new restaurants in San Francisco or new cities across the globe.


Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ilustracja DevOps

Społeczność DevOps

Ilustracja DevOps

Przeczytaj blog

Ilustracja przedstawiająca mapę

Zacznij korzystać za darmo

Zapisz się do newslettera DevOps

Thank you for signing up