sobota, 18 marca 2017

ROZWIĄZANIE ZAGADKI


Zagadka była taka:

Jesteś analitykiem testów w projekcie, wytwarzającym oprogramowanie dla pomp, instalowanych na dnie morza pod norweskimi platformami wiertniczymi. Niektóre funkcje tego oprogramowania są zaklasyfikowane jako krytyczne dla bezpieczeństwa, a niektóre - nie. Kierownik całego projektu ma na imię Björn, włosy blond i jego dotychczasowe doświadczenie jest głównie z dziedziny gier komputerowych, aplikacji na Android oraz programowania w PHP.

Klient - główny producent pomp - stawia wymaganie, aby oprogramowanie było zgodne z normą ISO 26262, która zawiera między innymi wskazówki, dotyczące wymaganego poziomu pokrycia kodu w kontekście konkretnego przepływu sterowania przez punkty decyzyjne, które ma być kalkulowane przez podzielenie liczby wyników decyzji pokrytych przez (zaprojektowane lub wykonane) przypadki testowe przez liczbę wszystkich wyników decyzji znajdujących się w testowanym kodzie.

Uczestniczysz w nisko-formalnym przeglądzie koleżeńskim tekst krótkiego memoriału, skierowanego do kierownictwa projektu i mającego uzasadnić, dlaczego potrzebne jest więcej czasu, aby przetestować dostarczany kod zgodnie z tymi wytycznymi. Poniżej znajduje się pięć zdań, wybranych z tego memoriału:

i. Istnieją techniki jeszcze mocniejsze niż pokrycie decyzji, na przykład pokrycie warunków lub wielokrotne pokrycie warunków, wymagające zwykle wykonania większej liczby testów, niż pokrycie instrukcji; [T]

ii. W testowaniu integracyjnym odsetek modułów, komponentów lub klas, które zostały przetestowane przez zestaw testów można wyrazić jako pokrycie instrukcji,
decyzji lub ścieżek. [F]

iii. Gałęzie zaczynają się w punktach decyzyjnych i pokazują przekazanie sterowania do różnych modułów lub systemów. Testowanie gałęzi różni się od testowania decyzji przez to, że skupia się na samych decyzjach. [F]

iv. W technice testowania strukturalnego projektuje się przypadki testowe, tak by wykonać określone instrukcje, zwykle po to żeby zwiększyć pokrycie modułowe. [F]

v. Pokrycie instrukcji oblicza się przez podzielenie liczby wykonywalnych instrukcji pokrytych przez (zaprojektowane lub wykonane) przypadki testowe, przez liczbę wszystkich wykonywalnych instrukcji w testowanym kodzie. [T]

A. (iii), (iv) i (v) są fałszywe, (i) i (ii) są prawdziwe
B. (v) jest prawdziwe, (i), (ii), (iii) i (iv) są prawdziwe
C. (i) i (v) są prawdziwe, (ii), (iii) i (iv) są fałszywe.
D. (i), (v) i (ii) są prawdziwe, (iii) i (iv) są fałszywe.
Rozwiązanie:

i. Zdanie "Istnieją techniki jeszcze mocniejsze niż pokrycie decyzji, na przykład pokrycie warunków lub wielokrotne pokrycie warunków, wymagające zwykle wykonania większej liczby testów, niż pokrycie instrukcji;" jest po prostu, zwyczajnie prawdziwe, pod warunkiem, że rozumiemy tajemnicze słówko "mocniejsza" w odniesieniu do techniki [pierwszy akapit 4.4.3 w sylabusie].

ii. Zdanie "W testowaniu integracyjnym odsetek modułów, komponentów lub klas, które zostały przetestowane przez zestaw testów można wyrazić jako pokrycie instrukcji decyzji lub ścieżek." jest przeróbką poprawnego zdania (akapit drugi 4.4.3) z podmienieniem słów "można wyrazić jako pokrycie modułów, komponentów lub klas" (poprawne) na słowa "pokrycie instrukcji decyzji lub ścieżek" (dobre dla pokrycia kodu, niedobre dla pokrycia modułów czy klas).

iii. Zdanie "Gałęzie zaczynają się w punktach decyzyjnych i pokazują przekazanie sterowania do różnych modułów lub systemów. Testowanie gałęzi różni się od testowania decyzji przez to, że skupia się na samych decyzjach." jest wszechstronną przeróbką z kilkoma błędami autentycznego zdania z sylabusa: "Gałęzie zaczynają się w punktach decyzyjnych i pokazują przekazanie sterowania do różnych miejsc w kodzie. Testowanie gałęzi różni się od testowania decyzji przez to, że skupia się na samych gałęziach.". W oryginale jest "Branches originate from decision points in the code and show the transfer of control to different locations in the code" - dodatek "Testowanie gałęzi różni się od testowania decyzji przez to, że skupia się na samych gałęziach." to już inwencja tłumaczy :) fajna skądinąd, takie "skupienie się na gałęziach" brzmi godnie i tajemniczo ;) Jeśli kogoś różnica, prócz "skupienia na gałęziach", interesuje, to jest fajny opis tutaj: https://quorum.akademiq.pl/discussion/225/testowanie-decyzji-vs-testowanie-rozgalezien/p1.

iv. Prosty numerek, w zdaniu "W technice testowania strukturalnego projektuje się przypadki testowe, tak by wykonać określone instrukcje, zwykle po to żeby zwiększyć pokrycie modułowe."  słowo "instrukcji" zamineiłem na słowo "modułowe". Ha, ha!

v. To po prostu cytat z sylabusa: "Pokrycie instrukcji oblicza się przez podzielenie liczby wykonywalnych instrukcji pokrytych przez (zaprojektowane lub wykonane) przypadki testowe, przez liczbę wszystkich wykonywalnych instrukcji w testowanym kodzie." 

Miłęj zabawy!


Brak komentarzy:

Prześlij komentarz