Czym jest DevTestOps?

Czym jest DevTestOps?
Zapewne znacie DevOps, czyli kulturę wytwarzania oprogramowania bazującą na silnej współpracy działu wytwarzania oprogramowania oraz jego utrzymania. A czy słyszeliście o DevTestOps, który do dwóch wspomnianych dokłada jeszcze ciągłe testowanie (ang. Continuous Testing)?

Oryginalna definicja DevOps, ukuta przez praktyków Lena Bassa, Ingo Webera i Liming Zhu, to:

Jest to zestaw praktyk, które pomagają skrócić czas między wprowadzeniem zmiany w systemie, a wprowadzeniem zmiany na produkcję – przy jednoczesnym zapewnieniu wysokiej jakości.

Niestety, "zapewnienie wysokiej jakości" jest tym, czego ciągle brakuje wielu firmom, a jest to fraza kluczowa. W DevOps, by w pełni wykorzystać jego potencjał, potrzebujesz ciągłych testów. W rezultacie otrzymujesz to, co jest znane jako DevTestOps.

Ciągłe testowanie burzy silosy i kontestuje tradycyjny sposób tworzenia oprogramowania, w którym produkt był przekazywany testerom dopiero po zakończeniu pracy przez programistów. Główny problem z tym podejściem polega na tym, że testowanie często było czynnością ad hocową i wykonywaną w pośpiechu. Coraz więcej firm zaczęło "przesuwać się w lewo", co oznacza przesunięcia testowania na wcześniejsze etap cyklu tworzenia oprogramowania. Zaangażowanie testera od samego początku na etapie zbierania wymagań eliminuje problemy, które pojawiają się, gdy testowanie jest wykonywane zbyt późno.

Ostatecznym celem jest uzyskiwanie ciągłej informacji zwrotnej poprzez ciągłe rozmowy z programistami o jakości ich kodu, tak by można było wskazać problemy już w możliwie najwcześniejszym etapie procesu i dzięki temu zmniejszyć ryzyko. DevTestOps to w zasadzie połączenie wszystkich technik i podejść wymienionych powyżej. Pomaga zacierać granice między programistami, testerami i inżynierami operacyjnymi.

DevTestOps wymaga również, aby organizacje przyjęły wszystkie formy testowania i jest to połączenie testowania eksploracyjnego, testowania manualnego i automatyzacji.

W całym procesie nie możemy zapomnieć o automatyzacji i optymalnego zbioru narzędzi. Poniżej propozycja takiego zbioru. 
 

czym-jest-devtestops-1.png

*) Grafika z https://www.clearvision-cm.com/blog/test-management-tools-for-agile-projects-qasymphony/


Wdrożenie polityki zakładającej oprogramowanie wolne od defektów zapewnia, że wszelkie defekty zgłoszone w systemach produkcyjnych i w dowolnym momencie sprintu muszą zostać ocenione, zaadresowane i zamknięte w minimalnym możliwym czasie bez wpływu na biznes klienta.

Organizacje zdały sobie sprawę, że DevOps minus ciągłe testowanie to po prostu szybsza droga do tworzenia oprogramowania z defektami. Właśnie dlatego DevTestOps, jako koncepcja, zyskuje na popularności. W efekcie promuje kulturę współpracy między wszystkimi zespołami zaangażowanymi w rozwój – od operacji, przez programistów, po testerów i analityków biznesowych.


Mity na temat DevTestOps:

  • Ciągłe testowanie wymaga 100% automatyzacji. Jak wszyscy wiemy, 100% automatyzacja aplikacji jest niemożliwa, stąd wiele skryptów uruchamianych jest ręcznie w procesie ciągłego testowania.
  • Duże organizacje nie odnoszą korzyści z ciągłego testowania, ponieważ mają ogromne zespoły ds. rozwoju i kontroli jakości, które utrudniają koordynację. Ciągłe testowanie od samego początku było rewolucyjne zarówno dla testerów, jak i programistów. Deweloperzy zbliżają się do klientów, aby dopasowywać rozwiązanie do użytkownika zgodnie z ich zmieniającymi się potrzebami, podczas gdy testerzy są teraz bliżej programistów i analityków biznesowych, biorąc udział w SDLC od wczesnych etapów.
  • To jest drogie. Tak, jest to jednorazowa inwestycja, ale po uzbrojeniu zespołu w odpowiednie narzędzia, zwrot z inwestycji jest ogromny ze względu na:
    • Lepszą jakość kodu, ponieważ każdy commit jest testowany.
    • Deweloper otrzymuje natychmiastową informację zwrotną o produkcie od testera, co pomaga w znalezieniu pierwotnej przyczyny problemu i łatwej naprawy defektów w krótszym czasie.
    • Ponieważ defekty są wykrywane wcześnie, koszt naprawy jest niższy.
    • Błędny ludzkie są eliminowane, ponieważ większość procesu jest zautomatyzowana.

Dobre praktyki w ciągłym testowaniu dla DevTestOps:

  • Więcej automatyzacji testów: nie skupiaj się tylko na automatyzacji przypadku testowego, ale także na powtarzalnym procesie. Pomaga to zaoszczędzić dużo czasu.
  • Integracja narzędzia: wybór narzędzia powinien być dokonany mądrze, aby testowanie było efektywne, szybsze i łatwiejsze.
  • Przejrzysta komunikacja: komunikacja i zrozumienie między wszystkimi zespołami powinny być skuteczne. Pozwala to uniknąć zamieszania i zapewnia dobrą produktywność.
  • Testowanie wydajności: powinno odgrywać istotną rolę podczas cyklu dostarczania, aby uniknąć problemów z awariami, które mogą wynikać z dużego wzrostu użytkowników.
  • Wykonywanie testów wielowarstwowych: wszystkie rodzaje testów, takie jak integracja, API, GUI, testowanie baz danych powinny być włączone podczas cyklu dostarczania, a maksymalnie dużo typów testów powinno być zautomatyzowane.
Źródła:
https://dzone.com/articles/what-you-need-to-know-about-devtestops-1
https://testsigma.com/blog/what-is-devtestops-role-of-devtestops-in-continuous-testing/

To powinno Cię zainteresować