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:
- Tworzone są scenariusze testowe
- W czasie produkcji oprogramowania za pomocą odpowiednio skonteneryzowanych środowisk dostarczamy usługę Continuous Testing – realizowaną za pomocą testów automatycznych
- Po zakończeniu danego fragmentu produkcji oprogramowania jeszcze raz przeprowadzany jest proces testów automatycznych (jako testy regresji) a następnie…
- … 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
- 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.