Pytania rekrutacyjne Flashcards

1
Q

DLACZEGO TRZEBA TESTOWAĆ OPROGRAMOWANIE?

A

– 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

KTO TO JEST TESTER?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

CO TO JEST TESTOWANIE OPROGRAMOWANIA?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

CZY PROGRAMIŚCI POWINNI TESTOWAĆ SWÓJ KOD?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Czy lepiej zatrudnić testera czy dać testować innym programistom?

A

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.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Czy możliwe jest przetestowanie wszystkiego?

A

Nie. 100% pokrycie może być osiągalne ale tylko w naprawdę prostych przypadkach (mówi o tym jedna z siedmiu zasad testowania)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Jakie są typy testów?

A
"– Funkcjonalne
– Niefunkcjonalne
– Strukturalne
– Testowanie związane ze zmianami:
 a) testy potwierdzające 
 b) testy regresji"
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jakie są poziomy testów?

A

“– Testy modułowe/jednostkowe
– Testy integracyjne
– Testy systemowe
– Testy akceptacyjne”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Co to jest piramida testów?

A

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.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kiedy zacząć testowanie?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Kiedy skończyć testowanie?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Co to jest testowanie eksploracyjne?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Co to jest przypadek testowy?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Jak powinien wyglądać przypadek testowy?

A
"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"
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Jakie są korzyści z wczesnego rozpoczęcia testów?

A

– 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”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co to są testy beta?

A

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.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Co to są testy akceptacyjne?

A

“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”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Co to są testy alfa?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Jakie są techniki projektowania przypadków testowych?

A
"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ą”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Co to są klasy równoważności?

A

“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ść”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Co to są wartości brzegowe?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Co to są testy funkcjonalne?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Czym się różni testowanie czarnoskrzynkowe od białoskrzynkowego?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Co to są testy niefunkcjonalne?

A

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)”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Jakie są rodzaje testów niefunkcjonalnych?

A

Testy niefunkcjonalne to bardzo ogólny termin do którego można zaliczyć testy wydajnościowe, obciążeniowe, przeciążeniowe, użyteczności, pielęgnowalności, niezawodności, przenaszalności, lokalizacji,globalizacji, bezpieczeństwa, konfiguracji itp.

26
Q

Co to są testy jednostkowe?

A

Są to testy białoskrzynkowe pojedynczych elementów/funkcji/modułów kodu oprogramowania. Prowadzone przez programistów

27
Q

Kto powinien pisać testy jednostkowe?

A

W związku z tym, że takie testy wymagają dostępu do kodu, to pisane są zwyczajowo przez samych programistów.

28
Q

Jaka jest korzyść z pisania dużej ilości testów jednostkowych?

A

Zgodnie z piramidą testów – są tańsze w produkcji”, zarówno pod względem czasochłonności jak i zaangażowania członków zespołu, dzięki czemu koszt całego projektu ulega zmniejszeniu.”

29
Q

Czym się różni walidacja od weryfikacji?

A

Weryfikacja sprawdza czy budujemy odpowiedni produkt na podstawie dokumentacji i zdefiniowanych założeń. Walidacja ma nam odpowiedzieć na pytanie czy produkt budujemy odpowiednio z perspektywy użytkownika/klienta.

30
Q

Co zrobić, jeżeli znajdziemy błąd w aplikacji?

A

Na początek należy spróbować zreplikować wywołaną anomalię. Jeśli udało się ją zreplikować i przy pomocy dokumentacji zweryfikować iż jest ona defektem, który wcześniej nie został zgłoszony, należy zgłosić go do naprawy.

31
Q

Jak upewnisz się, że to, co znalazłeś, to defekt w aplikacji?

A

Upewnię się na podstawie dokumentacji czy rzeczywiście to na co patrzę jest defektem, w przypadku braku dokumentacji postaram się zaczerpnąć informacji od np. kierownika testów, lub kogoś kto jest bardziej doświadczony.

32
Q

Jak powinno wyglądać zgłoszenie defektu?

A

“Kluczowymi elementami zgłoszenia powinny być:
– identyfikator
– tytuł i opis defektu
– informacje o osobie zgłaszającej defekt
– opis środowiska testowego na którym znaleziony został defekt
– kroki prowadzące do reprodukcji znalezionego defektu
– rezultat wykonanych kroków
– oczekiwany wynik testu wraz z podstawą w dokumentacji (lub przypadku testowego)
– priorytet i ważność znalezionego defektu
– informacja na temat powtarzalności”

33
Q

Co zrobisz, jeżeli zostało mało czasu, a Ty już wiesz, że nie zdążysz czegoś przetestować?

A

Na pewno poinformuję o tym kierownika testów oraz będę prowadził testy zgodnie z ustalonym priorytetem. Niemożność dowiezienia wszystkiego na 100% jest jednym z ryzyk tworzenia i testowania oprogramowania, dlatego decyzja co teraz” nie powinna w takiej sytuacji należeć do mnie, a do osoby która zarządza zespołem.”

34
Q

Co to są testy regresji?

A

Testy regresyjne to ponowne uruchamianie testów funkcjonalnych i niefunkcjonalnych, aby upewnić się, że wcześniej opracowane i przetestowane oprogramowanie nadal działa po zmianie (na przykład po wydaniu nowej wersji). Samą regresją nazywamy powstawanie defektów w związku ze zmianami w oprogramowaniu.

35
Q

Czym się różnią testy regresji od re–testów?

A

Retesty polegają na weryfikacji, czy defekty poprawione przez programistę nie występują już w aplikacji. Obszar testów ograniczony jest do tego, co opisane jest w krokach testowych. Testy regresywne najczęściej dotyczą całego systemu i wykonywane są w oparciu o przypadki testowe w momencie zmian w systemie (np. przy okazji aktualizacji)

36
Q

Czym się różni błąd od defektu?

A

Błąd jest rzeczą popełnioną przez człowieka. Defekt natomiast może być efektem popełnionego przez człowieka błędu.

37
Q

Czym się różni defekt od awarii?

A

Awaria to nieprawidłowe działanie systemu na produkcji (na przykład błędna wypłata bankomatu) pod wpływem czynników zewnętrznych lub defektu w kodzie oprogramowania. Sam defekt jest wynikiem błędu popełnionego w trakcie tworzenia oprogramowania.

38
Q

W jakiej kolejności należy wykonywać testy?

A

Zgodnie z wyznaczonym przez kierownika testów priorytetem.

39
Q

Co to jest test end–to–end?

A

Jest to metoda testowania oparta na sprawdzeniu całego workflow aplikacji od początku do końca. Metoda ta celuje w zreplikowanie scenariuszy prawdziwych użytkowników, w celu sprawdzenia integracji systemu oraz jej współpracy w różnych warunkach i ze wszystkimi modułami które ma wykorzystywać.

40
Q

Co to jest UX?

A

User experience – całość wrażeń jakich doświadcza użytkownik podczas korzystania z produktu

41
Q

Czym się różni plan testów od zestawu przypadków testowych?

A

Zestaw przypadków testowych jest jednym z wielu elementów planu testów. Plan testów zbiorem dokumentów w których zawarte są min. harmonogram testów, kryteria wejścia/wyjścia, podział ról w procesie testowania itp. Zestaw przypadków testowych jest natomiast zbiorem przypadków testowych używanych np. przy testowaniu sekwencji wyborów w jakimś systemie (chociażby ciąg logowanie–>pobranie elementu–>wylogowanie) lub przy testowaniu regresji w konkretnych obszarach oprogramowania

42
Q

Opowiedz o największym błędzie w aplikacji, z jakim się spotkałeś?

A

Nie tyle błędzie co defekcie – najgorsze czego byłem świadkiem to defekt przez który wszystkie produkty w serwisie zaciągały cenę jednego, konkretnego produktu. Z perspektywy wszystkich działów było to zdecydowanie trudniejsze do obsłużenia niż brak działającej głównej funkcjonalności (tj. zakupu) i o ile udało się zfixować błędny kod dość szybko, o tyle straty wizerunkowe i koszty w czasie wszystkich były dużo większe.

43
Q

Co to jest automatyzacja testów?

A

Jest to automatyzacja zadań wykonywanych w ramach testów manualnych. Pozwala na szybkie i powtarzalne wykonanie zadanych scenariuszy oraz ocenę ich rezultatów. Środkiem do automatyzacji są gotowe narzędzia, które można wykorzystywać.

44
Q

Czy wszystkie testy należy automatyzować?

A

Nie. Mimo wielu zalet i dużej grupie obszarów w której testy automatyczne sprawdzają się znakomicie, nie wszystkie testy powinny być zautomatyzowane. Czasami koszty zaprogramowania testu są niepotrzebnym wydatkiem, zarówno od strony finansowej (narzędzia kosztują), jak i od strony czasu jaką należy poświęcić na automatyzację. Ponadto automat (jeszcze) nie jest w stanie podrobić intuicji oraz wyobraźni testera, może być jednak świetnym uzupełnieniem dla niego.

45
Q

Proszę opisać cykl życia defektu?

A

Cykl życia defektu możemy opisać w kolejności zgodnej ze statusami jakie nadaje się bugom. Kolejno: 1.Nowy 2.Przydzielony 3.Otwarty 4.Naprawiony 5.Oczekujący na retest 6.Retestowany 7.Sprawdzony 8. Ponownie otwarty 9. Zamknięty. Ponadto po przypisaniu może zostać uznany za: 1.Powielony 2. Odrzucony 3. Odroczony 4. Nie jest bugiem

46
Q

Co to jest priorytet defektu?

A

Priorytet defektu określa jak szybko powinien zostać dany defekt naprawiony.

47
Q

Co to jest poważność defektu?

A

Jest to informacja na temat tego jak poważne skutki dla działania aplikacji ma dany defekt

48
Q

Podaj przykład defektu z wysokim priorytetem ale niską poważnością?

A

Literówka w nazwie firmy na home page.

49
Q

Podaj przykład defektu z niskim priorytetem ale wysoką poważnością?

A

502 przy próbie wejścia w podstronę zawartą w footerze

50
Q

Co zrobisz, jeżeli bardzo dobry programista nalega na szybkie przetestowanie jego kodu, aby kod szybko mógł być na produkcji?

A

Przyjmując, że moja praca w danym momencie jest wąskim gardłem, które blokuje deploy i jeśli będę miał możliwość przyspieszyć” (tj. zabrać się za nie w pierwszej kolejności) testy jego kodu, bez rozbijania pracy swojej i całego zespołu (nie będą znacznie wybiegały poza zakres priorytetów) to nie widzę przeciwwskazań. Ostatecznie wszystkim powinno zależeć na tym, żeby dostarczać dobry, sprawdzony kod w jak najzwinniejszym tempie, to tyczy się całego zespołu.”

51
Q

Co to są testy wydajnościowe?

A

Testy wydajnościowe są testami niefunkcjonalnymi, których celem jest sprawdzenie poprawności działania oprogramowania w ramach określonego obciążenia(np. szybkość przetwarzania). Ponadto sprawdza się szybkość, stabilność i skalowalność aplikacji.

52
Q

Co możemy sprawdzać podczas testów wydajnościowych?

A

“– szybkość oprogramowania
– stabilność
– skalowalność aplikacji (zdolność do sprawnego działania w warunkach stale rosnącej liczby użytkowników lub zwiększającej się objętości przetwarzanych danych)”

53
Q

Co to są testy bezpieczeństwa?

A

W ramach testowania bezpieczeństwa dokonywana jest ocena podatności systemu na zagrożenia (zarówno działania aplikacji jak i danych)

54
Q

Co to są testy użyteczności?

A

Testy użyteczności pozwalają dowiedzieć się w jaki sposób serwis, aplikacja są używane, jakie budzą emocje, jakie wywołują reakcje, jakie nastawienia powodują. Jakie przeszkody klienci napotykają, wchodząc na daną stronę.

55
Q

Co to jest negatywny i pozytywny przypadek testowy?

A

Pozytywny przypadek testowy, to taki, którego egzekucja powinna dać wynik pozytywny tj. przejście do kolejnego okna/logowanie się itp. Negatywny przypadek testowy projektowany jest po to, aby wywołać dokładnie przeciwne działanie systemu – wprowadzamy błędne dane, aby sprawdzić co się stanie – jakie powiadomienia o wprowadzeniu złych danych się pojawią/jak wyglądają komunikaty itp.

56
Q

Co to jest testowanie integracyjne?

A

Testy integracyjne to etap, który ma na celu sprawdzenia wspólnego działania dwóch i więcej modułów. Główny nacisk kładzie się na komunikację i interakcje pomiędzy testowanymi elementami systemu.

57
Q

Co to jest jakość?

A

Pewien stopień doskonałości na który składa się wiele pojedynczych czynników. W przypadku produktu można wymienić min. funkcjonalność, praktyczność, niezawodność, trwałość, bezpieczeństwo

58
Q

Co to są dane testowe?

A

To dane, które istnieją (przykładowo w bazie danych) przed wykonaniem testu, i które mają wpływ na testowany moduł lub system, lub na które wywiera wpływ testowany moduł lub system.

59
Q

Skąd brać dane testowe?

A

– z dokumentacji (np. z przypadków testowych)
– z bazy danych
– utworzyć z pomocą technik projektowania przypadków testowych

60
Q

Czym są testy dymne (smoke test)?

A

Testy dymne wykonuje się, by upewnić się, że krytyczne funkcje aplikacji działają zgodnie z oczekiwaniami. Analiza nie jest pełna, a przypadki testowe ograniczone. Ten rodzaj analizy może zostać przeprowadzony przed udostępnieniem wersji testowej by upewnić się, że kompilacja jest wystarczająco stabilna do przeprowadzenia w dalszej kolejności testów szczegółowych.

61
Q

Czym są testy racjonalności (sanity test)?

A

Sanity testy zwykle przeprowadzane są, gdy z kodu usunięty zostanie jakiś błąd lub gdy nastąpiła zmiana w funkcjonalności. Jest to rodzaj testowania oprogramowania przeprowadzany głównie przez testerów, by zapewnić funkcjonalność zgodną z oczekiwaniami. Sanity test powinien dać odpowiedź na pytanie, czy logika aplikacji jest zgodna z wymaganiami biznesowymi produktu.