Czy automatyzacja to testowanie?

Czy automatyzacja to testowanie?
Wynikiem procesu automatyzacji jest automat kontrolujący jakość oprogramowania. W powszechnym rozumieniu automat jest testem, a automatyzacja jest testowaniem.

W procesie testowania projektuje się testy, które uruchamiane są przez testera. W wersji najbardziej odbiurokratyzowanej nie projektuje się testów, a jedynie je uruchamia. To jest na pewno testowanie.

Czynności powtarzalne i nudne będziemy chcieli automatyzować, więc testerzy będą dążyli do stworzenia narzędzia, które część z nich zautomatyzuje. Istnieją też przypadki gdy testów nie da się uruchomić przez testera i muszą one koniecznie zostać zautomatyzowane.

Proces automatyzacji testów możemy podzielić na trzy czynności:

  • projektowanie testu,
  • kodowanie testu,
  • uruchomienie testu (z zebraniem wyników).

Projektowanie testów oraz ich uruchamianie jest jak najbardziej czynnością testową. Co jednak z kodowaniem testów? Tworzenie kodu źródłowego, który przy pomocy różnych bibliotek pozwala nam kontrolować wykonanie testowanego obiektu, a następnie zebrać informacje na temat jego zachowania, nie przypomina czynności testowej. Będąc jednak częścią całego zadania jakie realizuje tester można je traktować jako część testowania. Z drugiej strony na poziomie tworzenia aplikacji, kiedy to programista pisze testy jednostkowe do kontroli jakości wytworzonego kodu, nie przyjęło się nazywać tego automatyzacją, ale wynik pracy w postaci testu jednostkowego (ang. unit test) jest już automatem do testowania.

Osobę, która prowadzi cały proces automatyzacji, od początku do końca można nazwać testerem. Szczególnie jeśli się wie, że najwięcej defektów znajdywanych jest w procesie projektowania i próbnego uruchamiania automatów. Na późniejszym etapie automatyzacja ma jedynie potwierdzić, że nie następuje regres jakości oprogramowania.

Można powiedzieć, że automat jest narzędziem, a automatyzacja jest czynnością tworzenia automatów. Jeśli ten konkretny automat dokonuje sprawdzenia oprogramowania to jest testem. Testerzy w swojej pracy starają się używać wszelkich narzędzi, aby z największym prawdopodobieństwem potwierdzić działanie oprogramowania. Takim narzędziem jest również automatyzacja testów.

Możemy na to spojrzeć z perspektywy maszyn, które działają w obszarach produkcji. Czy kod aplikacji, sprawdzającej uszkodzenia opakowania na linii produkcyjnej, jest testem? Tak. Czy osobę, która stworzy taki kod nazwiemy testerem? Nie. Czy cały proces automatyzacji kontroli jakości produktu nazwiemy testowaniem? Tak.

Współczesna odpowiedzialność testera wymaga wyjścia poza klasyczną rolę, sprowadzającą się do uruchomienia testów oraz zweryfikowania poprawności odpowiedzi. Dziś od testera oczekuje się posiadania wiedzy, zarówno w obszarze analizy biznesowej, jak również z zakresu kodowania. Jest więc oczywiste, że znajduje on lub tworzy narzędzia, które pozwalają mu łatwiej weryfikować jakość oprogramowania.

A co z automatyzacją testowania? W tym kontekście takie określenie jest uproszczeniem i nie odzwierciedla pracy testera. Nie da się zautomatyzować całości procesu testowania, można jedynie zautomatyzować część związaną z uruchomieniem testów. Czynności, takie jak projektowanie testów czy późniejsza interpretacja wyników uruchomienia, są ciągle czynnościami wykonywanymi przez ludzi. Możemy rozważyć przypadek gdy projektowanie i kodowanie testów jest czynnością równoległą, czyli tester jednocześnie wymyśla test i go tworzy. W takim, dość częstym, przypadku oba działania przenikają się i nie ma wątpliwości, że ciągle jest to testowanie.

Podsumowując, całość wywodu możemy sprowadzić do nieformalnych definicji:

tester-automatyczny

Test automatyczny – przypadek lub scenariusz testowy stworzony w języku kodowania, służący do weryfikacji poprawności działania testowanego oprogramowania (w nomenklaturze ISTQB – skrypt testowy).

projektant-testów

Projektant testów – rola lub czynność w procesie testowania, polegająca na projektowaniu testów.

framework-testowy

Framework testowy – szkielet do budowy testów automatycznych. Definiuje strukturę testów oraz ogólny mechanizm ich działania, a także dostarcza zestaw komponentów i bibliotek ogólnego przeznaczenia do wykonywania określonych zadań.

tester-automatyzujący

Tester automatyzujący – kontroler jakości, który weryfikuje jakość oprogramowania przy pomocy stworzonych przez siebie testów automatycznych (celowo unikam pojęcia „tester automatyczny” z powodu negatywnego zabarwienia). Inaczej nazywany inżynierem automatyzacji testów.

automatyzacja-testow

Automatyzacja testów – proces tworzenia i uruchamiania testów automatycznych poprzedzony ich zaprojektowaniem.

programista-testow-automatycznych

Programista testów automatycznych – osoba, która w procesie automatyzacji testów pisze testy automatyczne zaprojektowane przez testera (czasami nazywanego projektantem testów). Programista testów będzie również odpowiedzialny za tworzenie, rozwój i utrzymanie frameworku do automatyzacji testów.
 

Ikony z xnimrodx.

To powinno Cię zainteresować