Pytania rekrutacyjne Flashcards
DLACZEGO TRZEBA TESTOWAĆ OPROGRAMOWANIE?
– weryfikacja czy produkt jest kompletny
– walidacja czy działa zgodnie z oczekiwaniami użytkowników
– zmniejszenie ryzyka awarii w trakcie eksploatacji
– podniesienie jakości produktu/system
– budowa zaufania do poziomu jakości systemu
– spełnienie wymagań wynikających z umów/prawa/norm itp.
KTO TO JEST TESTER?
Jest to osoba, która z pomocą odpowiednich narzędzi, materiałów oraz technik sprawdza zgodność tworzonego oprogramowania z założeniami projektowymi oraz waliduje jego działanie pod kątem oczekiwań użytkowników
CO TO JEST TESTOWANIE OPROGRAMOWANIA?
Jest elementem składowy procesu wytwarzania oprogramowania, ściśle związanym z zarządzaniem jakością oprogramowania, polegający na planowaniu, analizie, projektowaniu i implementacji testów, mających na celu weryfikację poprawności tworzonego oprogramowania oraz walidację jego działania pod kątem oczekiwań użytkowników oraz ogólnie przyjętych zasad i norm
CZY PROGRAMIŚCI POWINNI TESTOWAĆ SWÓJ KOD?
Częściowo to robią w testach białoskrzynkowych. Jeśli chodzi o pole na którym działają testerzy, to zależy od nastawienia i charakteru programisty, jednak są oni bardziej narażeni na niekorzystne w tej pracy zjawiska, takie jak chociażby efekt potwierdzenia, które źle wpływają na testy. Poza tym patrzą na kod z innego punktu (twórców), z którego ciężej jest o profesjonalny sceptycyzm. Poza tym programista ma inny skillset niż tester i jego skupienie powinno leżeć na innym etapie procesu wytwarzania oprogramowania.
Czy lepiej zatrudnić testera czy dać testować innym programistom?
Lepiej zatrudnić testera z prostego powodu – tester przygotowany jest do patrzenia na system z perspektywy użytkownika, programista natomiast, nawet inny niż autor będzie patrzył na system z perspektywy twórcy kodu i podświadomie skupiał się na tym jak od środka” wygląda i może wyglądać testowany system.”
Czy możliwe jest przetestowanie wszystkiego?
Nie. 100% pokrycie może być osiągalne ale tylko w naprawdę prostych przypadkach (mówi o tym jedna z siedmiu zasad testowania)
Jakie są typy testów?
"– Funkcjonalne – Niefunkcjonalne – Strukturalne – Testowanie związane ze zmianami: a) testy potwierdzające b) testy regresji"
Jakie są poziomy testów?
“– Testy modułowe/jednostkowe
– Testy integracyjne
– Testy systemowe
– Testy akceptacyjne”
Co to jest piramida testów?
Graficzna prezentacja relacji między ilością testów a ich poziomem, z większą liczbą testów dla niższych i mniejszą dla wyższych poziomów. W uproszczeniu piramida pokazuje jakie powinny być proporcje pomiędzy rodzajami testów, gdzie podstawą powinny być testy szybsze (dzięki czemu też tańsze), a tymi które zjadają” więcej czasu, zasobów i pracy ludzkiej (a tym samym pieniędzy). Dlatego u podstawy mamy testy jednostkowe, następnie integracyjne, a na samym szczycie akceptacyjne.”
Kiedy zacząć testowanie?
Jak najwcześniej. Tak naprawdę im wcześniej zacznie się testy (chociażby testy statyczne) tym w ogólnym rozrachunku tańszy będzie proces wytworzenia oprogramowania. Dzieje się tak zgodnie z tym, że tańsza jest zmiana w projekcie kiedy jest on jeszcze na papierze, niż w momencie gdy testujemy działającą wersję produktu. O kosztach testowania na produkcji nie warto wspominać, bo tam poza oczywistymi kosztami finansowymi dochodzi masa kosztów dodatkowych (np. wizerunkowych)
Kiedy skończyć testowanie?
Kiedy skończy się czas lub finanse na które przewidziane są testy. W bardziej optymistycznym wariancie, kiedy proces testowy spełnia zakładane w projekcie kryteria wyjścia (np. osiągnięty został odpowiedni poziom pokrycia, uzyskana została wystarczająco niska szacowana gęstość defektów, osiągnięte zostały wystarczająco wysokie wskaźniki niefunkcjonalne). Poza tym testy można zakończyć na życzenie, kiedy ryzyko wystąpienia błędu jest przez klienta znane i akceptowane.
Co to jest testowanie eksploracyjne?
Polega na wykonywaniu testów nieformalnych i dokonywania ich oceny dynamicznie, w trakcie ich wykonywania. Wykorzystuje się je w przypadku niepełnej lub niewłaściwej specyfikacji, pomagają w poznaniu testowanej aplikacji, nie opierają się na planie/dokumentacji i często stanowią uzupełnienie technik formalnych.
Co to jest przypadek testowy?
Zbiór danych wejściowych, wstępnych warunków wykonania, oczekiwanych rezultatów i końcowych warunków wykonania stworzony w określonym celu, w oparciu o warunki testowe
Jak powinien wyglądać przypadek testowy?
"Przypadek testowy powinien zawierać: – id – tytuł – krótki opis – id wymogów które sprawdza (scenariusza testowego) – priorytet – kroki/akcje – dane testowe – oczekiwany wynik – uzyskany wynik"
Jakie są korzyści z wczesnego rozpoczęcia testów?
– Mniejsze koszty wytwarzania oraz testowania oprogramowania
– Możliwość wykrycia i usunięcia defektów jeszcze na papierze
– Skrócenie czasu potrzebnego na stworzenie oprogramowania zgodnego z założeniami
– Zapobieganie różnego rodzaju niespójnościom i niejednoznacznościom, które mogą pojawić się wraz z rozwojem projektu i usprawnienie komunikacji w zespole projektowym
– obniżenie łącznego kosztu zapewnienia jakości”
Co to są testy beta?
Testy beta zalicza się do testów akceptacyjnych, używane często w przypadku oprogramowania typu COTS (Commercial–off–the–shelf) np. w przemyśle gamingowym. Polegają na udostępnieniu oprogramowania klientom lub potencjalnym klientom, którzy mogą przetestować je na swoim sprzęcie, z dowolnego miejsca na świecie. Tacy użytkownicy w trakcie testów dają feedback twórcom, na podstawie którego Ci mogą usprawniać i łatać” swój produkt.”
Co to są testy akceptacyjne?
“Są to testy które mają na celu walidację czy system jest kompletny i czy działa zgodnie z oczekiwaniami. Do tego weryfikowana jest zgodność zachowania funkcjonalnego i niefunkcjonalnego systemu ze specyfikacją, przyjętymi normami prawnymi i umowami. Celem tego typu testów nie jest wykrywanie bugów, a uzyskanie pewności że osiągnięto wcześniej wspomnianą zgodność.
Do takich testów można zaliczyć:
– testy alfa
– testy beta
– testy UAT (user acceptance testing)
– testy OAT (produkcyjne testy akceptacyjne)
– testy zgodności z umową i przepisami prawa”
Co to są testy alfa?
Rodzaj testów akceptacyjnych, używany często w przypadku oprogramowania typu COTS, polegające na wykonaniu testów w siedzibie organizacji (i w środowisku przygotowanym przez nią) wytwarzającej soft, z tą różnicą, że wykonywane są przez potencjalnych klientów/operatorów/niezależnych testerów.
Jakie są techniki projektowania przypadków testowych?
"Czarnoskrzynkowe: – metoda klasy równoważności – metoda analizy wartości brzegowych – metoda oparta o tablicę decyzyjną – metoda przejść pomiędzy stanami – metoda oparta o przypadki użycia
Białoskrzynkowe:
– na bazie pokrycia instrukcji kodu
– na bazie pokrycia decyzji
Oparte na doświadczeniu:
– zgadywanie błędów
– testowanie eksploracyjne
– w oparciu o listę kontrolną”
Co to są klasy równoważności?
“Są to grupy danych wejściowych, tworzone w taki sposób aby każda grupa zawierała elementy które z założenia mają być przetwarzane w ten sam sposób.
Przykład – input 0–500, pierwszą grupą może być –nieskończoność –> –1, drugą 0–>500, trzecią 500–>nieskończoność”
Co to są wartości brzegowe?
Wartości brzegowe, to skrajne wartości klas równoważności, czyli jej minimalna i maksymalna wartość. W bardziej rygorystycznej wersji przyjmuje się również wartość leżącą tuż przed brzegową względem danych poprawnych. Przykład input 0–500, wartościami brzegowymi które warto zbadać są –1, 0, 1 oraz 499 500 501.
Co to są testy funkcjonalne?
Testy umożliwiające ocenę systemu pod kątem funkcji jakie system powinien realizować w oparciu o specyfikacje, wymagania itp. W dużym uproszczeniu sprawdzenie tego co robi system i czy zgadza się to z założeniem.
Czym się różni testowanie czarnoskrzynkowe od białoskrzynkowego?
Testy białoskrzynkowe prowadzone są zwyczajowo przez programistów, na podstawie kodu, na poziomie struktury wewnętrznej oprogramowania. Testy czarnoskrzynkowe prowadzone są zwyczajowo przez testerów przy pomocy zewnętrznych interfejsów, bez możliwości zaglądania w kod.
Co to są testy niefunkcjonalne?
Są to testy pozwalające na ocenę tego jak” działa oprogramowanie. Skupiają się na sprawdzaniu takich cech jak użyteczność, wydajność, bezpieczeństwo itp. Często tego typu testy wymagają specjalnych umiejętności i wiedzy (chociażby przykład pentestów)”