Testy

W dzisiejszej inżynierii programowania, jak nigdy wcześniej, testy zaczęły odgrywać kluczową rolę. Stabilność i funkcjonalność oprogramowania, jak nigdy wcześniej stoi teraz w centrum procesu produkcji oprogramowania. Metodyki jak np. TDD (Test Driven Development) czy BDD (Behaviour Driven Development) pokazują wyraźnie kierunek dalszego rozwoju inżynierii programowania. My widzimy testy w jeszcze szerszym kontekście – BDR (Behaviour Driven Relation).

Testy można podzielić na wiele różnych typów – w zależności od ich przeznaczenia, sposobu budowy aplikacji, czasu wykonywania testu czy sposobu wykonywania testu. W związku z powyższym można sobie wyobrazić test który z jednej strony będzie testem funkcjonalnym, z drugiej strony częścią testu akceptacyjnego, ale dla części producentów oprogramowania będzie też elementem testu regresji.

Jakkolwiek nazewnictwo testów determinuje ich konstrukcję i logikę – to nie ma sensu wdawać się w zbyt daleko posunięte akademickie dywagacje. Uważamy, że taki czy inny test powinien być nade wszystko narzędziem pozwalającym na stworzenie, utrzymanie i wykorzystanie coraz lepszego jakościowo systemu. I w tych kategoriach należy rozważać proces testowania.

OFERTARozwiń

Nasza oferta obejmuje testowanie systemów informatycznych działających w środowisku windows, linux, aplikacji przeglądarkowych jak i aplikacji działających na terminalach do autoryzacji kart płatniczych, także w opcji outsourcingu.

W naszym podejściu proponujemy podział testów ze względu na czas wytworzenia testowanych fragmentów aplikacji. W takim ujęciu testy dzielimy na:

  • Testy manualne w odniesieniu do nowo wytworzonej części systemu – obejmujące zarówno testy funkcjonalne jak i niefunkcjonalne, integracyjne itd. w obszarze aktualnego sprintu/ewolucji/prototypu/iteracji
  • Automatyczne testy regresji w odniesieniu do części systemu wytworzonych w poprzednich sprintach/ewolucjach/prototypach/iteracjach przetestowane w sposób manualny w poprzednich cyklach

Przeprowadzenie takich testów oznacza objęcie swoim zakresem całego systemu – we wszystkich obszarach. Skupiamy się na funkcjonalnych testach blackbox (czarnoskrzynkowych) z poziomu interfejsu użytkownika (WWW), gdyż naszym zdaniem najpełniej odpowiadają one na obecne zapotrzebowanie rynku. Ale ze względu na nasze kwalifikacje deweloperskie wykonujemy też strukturalne testy white-box (białoskrzynkowe), testy integracyjne i oczywiście wydajnościowe.

PROCEDURA TESTOWANIARozwiń

Cykliczna procedura testowania wygląda najczęściej w następujący sposób:

  1. Tworzone są scenariusze testowe
  2. W czasie produkcji oprogramowania za pomocą odpowiednio skonteneryzowanych środowisk dostarczamy usługę Continuous Testing – realizowaną za pomocą testów automatycznych
  3. Po zakończeniu danego fragmentu produkcji oprogramowania jeszcze raz przeprowadzany jest proces testów automatycznych (jako testy regresji) a następnie…
  4. … przeprowadzamy testy manualne w oparciu o zdefiniowanie wcześniej scenariusze testowe – po skutecznym zakończeniu testów aplikacja jest gotowa jakościowo do wdrożenia produkcyjnego gdyż testy mogą pełnić też rolę testów akceptacyjnych
  5. Na tym etapie wyznaczane są scenariusze testowe, które nadają się do automatyzacji i następuje proces ich implementacji tak by przy kolejnym przebiegu były elementem automatycznych testów regresji

Cykl taki jest powtarzany dla każdego kolejnego sprinta/ewolucji/prototypu czy iteracji. Efektem jest powstawanie coraz szerszej bazy testów automatycznych, które mogą być używane w procesie Continuous Testing. Oczywiście testy takie są objęte usługą utrzymania – a to w szczególności oznacza dostosowywanie ich przebiegu do zmian systemu.

OUTSOURCING TESTÓW APLIKACJIRozwiń

Oferujemy współpracę w zakresie pełnego outsourcingu procesu testowania aplikacji poprzez:

  • Prowadzenie procesu definiowania scenariuszy testowych z uwzględnieniem odpowiedniego pokrycia aplikacji. Ściślej mówiąc chodzi tu nie tylko o sam przebieg testu ale również o konkretny zestaw danych (czy nawet szerzej – bazę danych) niezbędną do przebiegu scenariusza
  • Zarządzania scenariuszami testowymi z uwzględnieniem pokrycia aplikacji – poprzez dbanie o ich aktualność, przydatność oraz utrzymywanie zgodności z wersją systemu
  • Tworzenie i zarządzanie pełną infrastrukturą konteneryzacyjną (Docker/Kubernetes) pozwalającą na dynamiczne tworzenie i usuwanie dowolnej liczby środowisk testowych w celu:
    • Dostarczania infrastruktury do testów automatycznych na poziomie deweloperów w procesie Continuous Testing
    • Dostarczania infrastruktury do testów automatycznych na poziomie klienta
    • Dostarczania infrastruktury do testów manualnych
  • Instalacja w takim środowisku wszelkich elementów niezbędnych do działania systemu  (dodatkowe aplikacje, serwery bazodanowe, systemy kolejkujące, serwery aplikacyjne itd.)
  • Tworzenie wszelkich elementów integracyjnych niezbędnych do przeprowadzania testów (np. symulatory czy też mockup’ów aplikacji z którymi dany system się integruje)
  • Tworzenie, zarządzanie i utrzymanie testów automatycznych działających na poziomie interfejsu użytkownika lub API systemu w celu:
    • udostępnienia Continuous Testing – wraz z pełnym mechanizmem raportowania deweloperów wyników testów
    • wykonywania testów automatycznych jako fragmentu procedury akceptacji sprintu/ewolucji/prototypu/iteracji
  • Koordynacja wszystkich elementów procesu

W efekcie oferujemy pełen outsourcing testów aplikacji – nawet tych najbardziej złożonych – w skomplikowanych środowiskach systemowych.

Współpracę realizujemy w oparciu o metodologię Agile – zapewniając klientowi daleko idącą elastyczność w prowadzeniu współpracy oraz pełne dostosowanie się do zmian oczekiwań i otoczenia biznesowego.

Idź do góry