Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

Podobne dokumenty
Zwiększanie wiarygodności systemów wykorzystujących układy programowalne

Testowanie oprogramowania. Piotr Ciskowski

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

Dlaczego testowanie jest ważne?

Szybkie prototypowanie w projektowaniu mechatronicznym

Testowanie oprogramowania. Testowanie oprogramowania 1/34

Maciej Oleksy Zenon Matuszyk

Optymalizacja Automatycznych Testów Regresywnych

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Zapewnienie bezpieczeństwa w całym cyklu życia aplikacji (czyli dlaczego lepiej zapobiegać chorobom, niż leczyć je w zaawansowanym stadium)

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Zasady organizacji projektów informatycznych

Etapy życia oprogramowania

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Elementy cyfrowe i układy logiczne

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Techniki (automatyzacji) projektowania testów. Adam Roman WarszawQA, 24 II 2016

Systemy zabezpieczeń

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Application Security Verification Standard. Wojciech Dworakowski, SecuRing

Testowanie i walidacja oprogramowania

Tworzenie przypadków testowych

Kontrola jakości artefaktów

Testujemy dedykowanymi zasobami (ang. agile testers)

mgr inż. Tadeusz Andrzejewski JTAG Joint Test Action Group

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Testowanie oprogramowania

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Jakość w procesie wytwarzania oprogramowania

Weryfikacja i walidacja. Metody testowania systemów informatycznych

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Sposoby projektowania systemów w cyfrowych

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Analiza i Synteza Układów Cyfrowych

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

Inżynieria oprogramowania (Software Engineering)

Microsoft Test Manager

Krótkie wprowadzenie do ModelSim i Quartus2

UPEDU: Implementacja (ang. Implementation discipline)

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

Systemy bezpieczne i FTC. dr inż. Krzysztof Berezowski 220/C3 tel

Jak efektywnie wykrywać podatności bezpieczeństwa w aplikacjach? OWASP The OWASP Foundation

Technologie informacyjne - wykład 12 -

Język opisu sprzętu VHDL

Algorytmy i struktury danych

WPROWADZENIE DO UML-a

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Wykład 1 Inżynieria Oprogramowania

Narzędzia CASE dla.net. Łukasz Popiel

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL

Luki w bezpieczeństwie aplikacji istotnym zagrożeniem dla infrastruktury krytycznej

Testy poziom po poziomie

Podstawy metodologiczne symulacji

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Metody Programowania

DiaSter - system zaawansowanej diagnostyki aparatury technologicznej, urządzeń pomiarowych i wykonawczych. Politechnika Warszawska

Cele oraz techniki tworzenia prototypów systemów infromatycznych. Inżynieria Oprogramowania

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Testowanie oprogramowania w środowisku IBM Rational Software Architect

PROGRAMOWALNE STEROWNIKI LOGICZNE

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

REFERAT PRACY DYPLOMOWEJ

Spis treúci. 1. Wprowadzenie... 13

Projektowanie oprogramowania

Praktyka testowania dla początkujących testerów

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

RAPORT. Gryfów Śląski

Cykle życia systemu informatycznego

ZARZĄDZANIE PROCESEM TESTOWYM (SQAM Test Manager) 7-8 luty 2008, Warszawa Zdobądź z nami certyfikat SQAM Test Manager.

Projektowanie systemów informatycznych. wykład 6

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

UPEDU: Testowanie (ang. Testing discipline)

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Testowanie scalania. Maciek Osiński Tomek Wysocki. Seminarium Bazy Danych. Testowanie scalania p.1/93

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

Wykaz osób w postępowaniu o udzielenie zamówienia publicznego nr 32-CPI-WZP-2244/13. Podstawa do dysponowania osobą

O autorze... 9 Wprowadzenie... 11

Systemy wbudowane. Paweł Pełczyński

Programowanie Zespołowe

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

DOKUMENTACJA. Przeznaczenie dokumentacji użytkowej. Użytkownicy końcowi Administratorzy SKŁADNIKI DOKUMENTACJI. Synteza Dokumentacja.

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Transkrypt:

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe) dr inż. Krzysztof Berezowski 220/C3 tel. +48 71 320 27-59 krzysztof.berezowski@pwr.wroc.pl 1

Testowanie i diagnostyka systemów cyfrowych dr inż. Krzysztof Berezowski 220/C3 tel. +48 71 320 27-59 krzysztof.berezowski@pwr.wroc.pl 2

Testowanie a diagnostyka testowanie - wykrywanie istnienia uszkodzeń diagnostyka - wykrywanie lokacja uszkodzeń oraz typu uszkodzenia 3

Gdzie leży problem? Sprzęt! max. liczba tranzystorów w układach podwaja się co 18 miesięcy (co najmniej do 2018) dzisiejszy procesor: ~10 10 tranzystorów/egz. cała sprzedaż żarówek na świecie: ~10 10 sztuk rozdzielczość technologiczna: ~22nm (22E-9 metra) częstotliwość pracy: ~3-5GHz (3-5E9Hz) 4 Number of Transistors 1.E+09 1.E+08 1.E+07 1.E+06 1.E+05 1.E+04 1.E+03 1.E+02 1.E+01 1.E+00 S S I M S I LSI VLSI 1960s 1970s 1980s 1990s 2000s Jeden wadliwy tranzystor to jeden niepoprawnie działąjący układ!

Gdzie leży problem? Oprogramowanie! Growth in Code Size for Human and Robotic Missions Non-Comment Source Lines (log scale) NCSL (log scale) 10000000 1000000 100000 10000 1000 100 10 1 1968 1970 1972 1974 1976 1978 1980 1982 1984 1986 1988 1990 Year of Mission 1992 1994 1996 1998 2000 2002 2004 Robotic unmanned Human manned Expon. (unmanned) Expon. (manned) 1969 Mariner-6 (30) 1975 Viking (5K) 1977 Voyager (3K) 1989 Galileo (8K) 1990 Cassini (120K) 1997 Pathf inder (175K) 1999 DS1 (349K) 2003 SIRTF/Spitzer (554K) 2004 MER (555K) 2005 MRO (545K) 1968 Apollo (8.5K) 1980 Shuttle(470K) 1989 ISS (1.5M) Źródło: NASA Study on Flight Software Complexity, http://www.nasa.gov/pdf/418878main_fswc_final_report.pdf Złożoność oprogramowania rośnie wykładniczo 5

Gdzie leży problem? Oprogramowanie! SLOC%(Million)% 1993" 1994" 1996" 2000" 2001" 2003" Windows"Server"2003" Windows"XP" Windows"2000" Windows"NT"4.0" Windows"NT"3.5" Windows"NT"3.1" 0" 10" 20" 30" 40" 50" 60" 6

Gdzie leży problem? Reguła 10X Koszt wykrycia uszkodzenia $1 $10 $100 $1000 7

Czym jest testowanie? kontrolowane i systematyczne użytkowanie produktu z jednoczesnym analizowaniem jego odpowiedzi, własności i funkcji celem sprawdzenia czy w procesie wytwarzania bądź użytkowania nie pojawiły się w nim uszkodzenia. Specification Design Implementation Manufacturing Production Test Validation Verification Review Inspection Simulation Test Preparation System Integration Testing System Test Operation and Maintenance 8 Źródło: Zebo Peng, http://www.ida.liu.se/~zebpe/teaching/test/lec1.pdf

Główne problemy testowania VLSI miniaturyzacja - dostęp fizyczny do podzespołów jest utrudniony wysoki koszt aparatury testującej złożoność - objętość danych testowych i czas ich wykonania ograniczona liczebność portów we/wy - czas testowania wysoka prędkość działania - skomplikowane mechanizmy uszkodzeń testowanie zabiera od 30% do 50% czasu rozwoju aplikacji projektowanie dla testowania - design for test 9

Główne problemy testowania oprogramowania luki w specyfikacji, niewyspecyfikowane założenia niefunkcjonalne, nieuchronność błędów kodowania, złożoność - ilość stanów wewnętrznych i kombinacji we/inicjacyjnych testowanie zabiera od 30% do 50% czasu rozwoju aplikacji projektowanie dla testowania - programowanie defensywne źródło: McConnell, Steve (2004). Code Complete (2nd ed.). Microsoft Press. p. 29. ISBN 0-7356-1967-0. 10

Architektura testowania VLSI test jest sekwencją wzorców testowych (wektorów) zaaplikowaną na wejście testowanego układu przy jednoczesnym monitorowaniu jego wyjść w poszukiwaniu znanej z góry, poprawnej odpowiedzi Pobudzenie wejściowe (zestawy testowe) Testowany układ Odpowiedź układu pass fail 11

Generacja wektorów testowych testowanie wyczerpujące - zaaplikowanie wszystkich możliwych kombinacji stanów wewnętrznych i wejściowych testowanie funkcjonalne - testowanie każdej tablicy prawdy w części kombinacyjnej układu Żadne z w/w podejść: nie jest praktyczne dla większości układów nie skaluje się (wykładnicza zależność od wielkości testowanego układu) Pokrycie uszkodzeń (ang. fault coverage) w praktyce jest miarą jakości zestawu testowego pokrycie uszkodzeń = 12 liczba wykrytych uszkodzeń ca lkowita liczba uszkodzeń

Generacja wektorów testowych cel: znaleźć minimalny zestaw wektorów testowych dający maksymalne pokrycie uszkodzeń w zakresie danego modelu uszkodzeń symulacja uszkodzeń (ang. fault simulation) jest używana aby określić pokrycie uszkodzeń (wymaga modeli uszkodzeń aby zbudować symulacje) dobry model uszkodzeń: jest wydajny obliczeniowo (łatwość/szybkość symulacji) dokładnie odzwierciadla zachowanie defektów nie istnieje uniwersalny model uszkodzeń 13

Modele uszkodzeń raz jeszcze model uszkodzeń jest k stanowy - modeluje k uszkodzeń w układzie jest n punktów uszkodzenia pojedyncze uszkodzenie: wielokrotne uszkodzenie: n k (k + 1) n 1 zwykle używa się modeli uszkodzeń pojedynczych 14

Generacja wektorów testowych optymalizacja zestawów wektorów testowych polega na ich scalaniu minimalne zestawy testowe różne modele uszkodzenia mogą być testowane tym samym zestawem wektorów - uszkodzenia równoważne (symulujemy tylko jedno uszkodzenie z klasy ekwiwalent.) Testowanie uszkodzenia nie musi wymagać pełnego wyczerpującego zbioru wektorów Zbiory wektorów testujące różne uszkodzenia mogą się pokrywać znajdowanie minimalnego zbioru zestawów testowych to problem znajdowania minimalnego pokrycia mniejszy zbiór - niższa cena użycia ATE (kilka /test) 15

Projektowanie zorientowane na testowanie niektórych potencjalnych uszkodzeń na węzłach wewnętrznych może nie dać się pobudzić w trakcie testowania czyli: układ może być nietestowalny specjalne techniki projektowania pozwalają to zmienić, ale nic nie odbywa się bez kosztu, wymaga zasobów potrzebnych do zwiększenia: obserwowalności i sterowalności węzłów wewnętrznych podejścia: techniki ad-hoc boundary scan (scan chain) Build-In-Self-Test (BIST) 16

Ad-hoc DFT przede wszystkim nakierowane na zwiększenie obserwowalności i kontrolowalności trudnych węzłów wewn. każdy przypadek rozważany osobno problem: multipleksery pojawiają się na ścieżkach krytycznych Normal system data Test data input Test mode select 0 1 Internal node to be controlled Normal system data Internal node to be observed Test mode select 0 1 Primary output controllability test point observability test point Źródło: Hank Walker, Texas A&M Univ. 17

Scan chain: testowanie struktur wewnętrznych możliwość funkcjonalnego pobudzenia wszystkich bloków kombinacyjnych umożliwia: wsuwanie pobudzeń wysuwanie odp. wsparcie narzędzi automatycznej syntezy wsparcie urządzeń ATPG (ang. automatic test pattern generators) Primary Inputs D i Clk Combinational Logic FFs FF Q i Primary Outputs 1 2 D i 0 1 Q i-1 Scan Mode Primary Inputs Clk Scan Data In FF FFs Q i Combinational Logic Primary Outputs Scan Data Out Źródło: Hank Walker, Texas A&M Univ. 18

Boundary scan: testowanie we/wy i PCB Łańcuch scan-chain założony na buforach we/wy Używany do testowania PCB, na którym chip został zamontowany dostępu do wewnętrznych struktur skanujących IEEE standard - test access port (TAP) Scan Out tri-state control from IC Control BS Cell Input Scan In Shift 0 1 Output BS Cell capture FF update FF 0 1 Output Pad Capture Update input data to IC Input BS Cell Źródło: Hank Walker, Texas A&M Univ. 19

Built-in Self Test Układ uzupełniany jest o tryb testowy zawierający: test pattern generator - generator wzorców testowych output response analyser - analizator odpowiedzi Przykład: PC Primary Inputs TPG 0 1 Circuit Under Test Primary Outputs BIST Mode ORA Pass Fail 20 Źródło: Hank Walker, Texas A&M Univ.

Testowanie oprogramowania dr inż. Krzysztof Berezowski 220/C3 tel. +48 71 320 27-59 krzysztof.berezowski@pwr.wroc.pl 21

Testowanie oprogramowania Testing is the process of executing a program with the intent of finding errors. - Glen Myers Testing shows the presence, not the absence of bugs. 22 - E. W. Dijkstra

Testowanie oprogramowania 23

Poziomy wiarygodności testowania 1.Testowanie nie różni się od debuggowania 2.Celem testowania jest wykazanie poprawności 3.Celem testowania jest wykazanie, że program nie działa 4.Celem testowania jest zredukowanie ryzyka związanego z użyciem programu 5.Testowanie jest procesem wdrożonym aby pomóc zespołowi wytwarzać wysokiej jakości oprogramowanie 24

L0: Testing is debugging nie rozróżnia pomiędzy nieprawidłowym zachowaniem a błędami projektowymi/implementacyjnymi nie wspiera konstrukcji wiarygodnego i bezpiecznego oprogramowania 25

L1: Wykazywanie poprawności poprawność jest niemożliwa do osiągnięcia/wykazania brak nieprawidłowości nie oznacza dobrego oprogramowania może za to oznaczać słabe testy testerom na tym poziomie brakuje: jasnych procedur postępowania celu testowania (kryterium zakończenia testowania) szybkich technik formalnych i automatycznych 26

L2: Wykazywanie niepoprawności negatywne podejście do problemu napięcia w zespole - testerzy są wrogami programistów brak anomalii tworzy niezdefiniowaną sytuację 27

L3: Redukowanie ryzyka użycie oprogramowania wiąże się z ryzykiem ryzyko jak i jego konsekwencje może być niewielkie albo wręcz przeciwnie programiści i testerzy pracują wspólnie nad redukcją ryzyka 28

L4: Testowanie sterowane jakością testowanie jest (jednym z) sposobem podniesienia jakości testerzy dostają odpowiedzialność technologiczną jakość oprogramowania jest mierzalna i może podlegać poprawie programiści i testerzy pracują wspólnie nad redukcją ryzyka Back to square one: czyli tradycyjna inżyneria w służbie testowania oprogramowania 29

Przestrzeń projektowa testowania If you don t know where you re going you might not get there - Lawrence Peter Yogi Berra zdokumentowane cele testowania (ang. test objectives) planowany poziom pokrycia (ang. coverage) planowany koszt testowania! planowany termin zakończenia testowania testowanie jest kosztowne, ale nie-testowanie jest jesze kosztowniejsze! 30

Obserwowalność uszkodzeń oprogramowania Obserwowalność uszkodzeń oprogramowania 1.Osiągalność - lokacja w programie zawierająca uszkodzenie musi być osiągalna aby błąd się aktywował 2.Aktywacja - na skutek osiągnięcia w/w lokacji stan programu musi zmienić się na błędny 3.Propagacja - aktywny błąd musi się spropagować do wyjść programu aby program był uznany za niepoprawny 31

Miary testowalności uszkodzeń oprogramowania 1.Obserwowalność - łatwość z jaką można obserwować zachowanie programu poprzez obserwację jego wyjść czy interacjii ze środowiskiem 3.Kontrolowalność - łatwość z jaką możemy dostarczyć wejść (wartości, wyborów, etc.) aby sprowokować dane zachowanie programu 32

Metodologie testowania oprogramowania 1.Testowanie black-box - konstruowanie testów wyłącznie w oparciu o informację o wymaganiach stawianych oprogramowaniu i jego specyfikacji projektowej 2.Testowanie white-box - konstruowanie testów w oparciu o wewnętrzną strukturę programu, jego kod źródłowy informację o implementacji (szczególnie wykorzystując informację o ścieżkach wykonania, rozgałęzieniach, skokach, etc.) 3.Testowanie oparte na modelu (ang. model-based) - konstruowanie testów w oparciu o model oprogramowania (np. diagramy UML, etc.) 33

Cel testowania 1.Zdefiniowanie modelu oprogramowania, a następnie 2.Zaprojektowanie sposobu pokrycia wszystkich jego stanów Wymagania testu: funkcjonalność(lub inne metryki), która musi być spełniona lub pokryta podczas testowania. Kryterium testu: zbiór reguł i procesów definiujących wymagania testu. 34

Kryteria testowania oparte na strukturze 1.Grafy (przepływu danych i przepływu sterowania) weryfikacja vs. diagramy przypadków użycia, maszyn stanów, kodu źródłowego 2.Wyrażenia logiczne i arytmetyczne vs. warunki i punkty decyzyjne 3.Charakteryzacja dziedzin wejścia i wyjścia vs. dziedzina problemu 4.Składnia i struktury składniowe vs. gramatyka języka opisu 35

Cykl życia testów 1.Testy jednostkowe testowanie izolowanych komponentów oprogramowania 2.Testy integracji testowanie interfejsów między komponentami 3.Testy regresji testowanie istniejącego oprogramowania po zmianach 36

Testy jednostkowe 1.metoda testowania indywidualnych jednostek kodu: metod, klas, modułów, etc. 2.służy przede wszystkim testowaniu: 1.jednostek kodu (komponentów) 2.poprawności integracji hierarchicznej 3.automatyzacji 3.nie służy testom systemowym! 4.Tester decyduje o przypadkach i procedurach użycia, wejściach testowych i ostatecznej decyzji pass/fail 5.Test jednostkowy jest w pewnym sensie dopełnieniem funkcjonalności testowanego obiektu 37

Testy integracji Proces testowania interfejsów pomiędzy komponentami i ich integracji 1.bottom-up approach: 1.zaczynamy od małej liczby dobrze zdefiniowanych i przetestowanych klas 2.testujemy połączenia między nimi 3.dodajemy więcej klas, powtarzamy proces Artefakty testów integracji: Szkielety (ang. scaffold) - komponenty szkieletowe Namiastki (ang. stub) - puste, niezaimplementowane metody Imitacja (ang. mock) - symulatory funkcjonalności Sterownik (ang. driver) - aktuatory funkcjonalności 38

Testy regresji Proces ponownego testowania oprogramowania po modyfikacji 1.Większość oprogramowania istnieje i podlega jedynie niewielkim zmianom, poprawkom i adaptacjom. 2.Nowe aplikacje istniejącego oprogramowania tworzą nowe przypadki użycia, nowe wejścia 3.Nowe oprogramowanie tworzone jest poprzez integrację istniejących komponentów. W rezultacie: 4.Pozornie niezwiązane ze sobą obiekty mogą pozostawać we współzależności, która może uaktywnić błąd po zmianie. Testy regresji są zazwyczaj duże - wymagana automatyzacja 39

Wyzwania dla testowania Embedded software Ubiquity Enterprise software Complexity Real-time software safety cricitality Bezpieczeństwo systemów jest zdominowane przez uszkodzenia oprogramowania Oprogramowanie bezpieczne to oprogramowanie wiarygodne 40