Testowanie w czasie rzeczywistym
Testowanie w czasie rzeczywistym to proces testowania systemów komputerowych czasu rzeczywistego .
Testowanie oprogramowania jest przeprowadzane w celu wykrywania i poprawiania błędów (błędów) w oprogramowaniu komputerowym. Testowanie polega na zapewnieniu nie tylko, że oprogramowanie jest wolne od błędów, ale także, że zapewnia użytkownikowi wymaganą funkcjonalność. Statyczne i konwencjonalne metody testowania mogą wykryć błędy, ale takie techniki mogą nie zapewnić poprawnych wyników w systemach oprogramowania czasu rzeczywistego. Systemy oprogramowania czasu rzeczywistego mają ścisłe ograniczenia czasowe i mają deterministyczne zachowanie. Systemy te muszą planować swoje zadania w taki sposób, aby spełnione były nałożone na nie ograniczenia czasowe. Konwencjonalny statyczny sposób analizy nie jest odpowiedni do radzenia sobie z takimi ograniczeniami czasowymi, dlatego ważne jest dodatkowe testowanie w czasie rzeczywistym.
Strategia
Projekt przypadku testowego do testowania w czasie rzeczywistym można zaproponować w czterech krokach
- Testowanie zadań
- Na pierwszym etapie każde zadanie jest testowane indywidualnie za pomocą konwencjonalnych testów statycznych. To testowanie jest wykonywane tylko w celu wykrycia błędów w logice lub składni programu. Kolejność zdarzeń nie ma znaczenia, ponieważ testowanie zadań nie dotyczy ograniczeń czasowych i właściwości czasowych zdarzeń.
- Testy behawioralne
- Korzystając z modeli systemu zaprojektowanych za pomocą zautomatyzowanych narzędzi testujących, możliwe jest symulowanie zachowania systemu czasu rzeczywistego oraz wpływu współbieżnych zdarzeń zewnętrznych na jego zachowanie.
- Testy międzyzadaniowe
- Po zakończeniu testowania z indywidualnym zadaniem, zadanie powinno być wolne od błędów w kodowaniu i obszarze behawioralnym. Ograniczenia związane z czasem są testowane za pomocą testów międzyzadaniowych. Aby wykryć błędy w komunikacji, testuje się zadania asynchroniczne ze zmienną szybkością transmisji danych i różnymi ładunkami.
- Testowanie systemu
- W tym testowaniu oprogramowanie i sprzęt są integrowane i przeprowadzany jest pełny zakres testów systemowych w celu wykrycia ewentualnych błędów podczas łączenia oprogramowania i sprzętu .
Narzędzia do testowania w czasie rzeczywistym
Ponieważ testowanie systemów czasu rzeczywistego staje się coraz ważniejsze, istnieje kilka narzędzi zaprojektowanych do takiego testowania.
MSC
Message Sequence Charts to międzynarodowo akceptowany standard przechwytywania wymagań. MSC zapewnia graficzny język 2-D, często wymagany do zbierania wymagań w ramach niektórych scenariuszy interakcji.
SDL
Specyfikacja i język opisu to standard używany do projektowania i analizy. SDL obsługuje specyfikację złożonych systemów oprogramowania i jest szeroko stosowany w wielu dziedzinach, od telekomunikacji , automatyki , po ogólne tworzenie oprogramowania
TTCN
Testing and Test Control Notation to jedyny międzynarodowy standard języka testowania. TTCN3 zapewnia szersze zastosowanie w porównaniu z wcześniejszymi wersjami TTCN, które koncentrowały się głównie na protokołach OSI .
Te trzy standardy razem są używane do testowania aplikacji czasu rzeczywistego. Konieczne jest, aby te modele spełniały wymagania, a generowane przypadki testowe obejmowały informacje funkcjonalne i informacje w czasie rzeczywistym potrzebne do testowania systemów. Również zmiany wymagań projektowych i nowe informacje o właściwościach systemów w czasie rzeczywistym powinny być wprowadzane do modeli, aby można było poznać ich wpływ.
Aby dokładnie uchwycić właściwości danego systemu testowego w czasie rzeczywistym i upewnić się, że wymagania i modele są wykorzystywane do generowania realistycznych i możliwych do wyegzekwowania informacji o taktowaniu, istotne jest, aby sam język (TTCN-3) miał dobrze zrozumiały i semantycznie poprawny model czas.
TTCN-3
Tło
TTCN-3 jest jedynym obecnie dostępnym, znormalizowanym na poziomie międzynarodowym językiem testowym. Przed TTCN3 jego wcześniejsze wersje miały ograniczoną funkcjonalność i ograniczony zakres protokołu OSI. Ale TTCN3 jest wersją zaawansowaną i ma szersze zastosowanie. Charakterystyka TTCN3 to:
- możliwość określenia dynamicznego testowania współbieżnego
- operacje komunikacji opartej na komunikatach i procedurach
- możliwość określania szablonów danych i podpisów z potężnymi mechanizmami dopasowywania
- parametryzacja typu i wartości
- przydzielanie i obsługa werdyktów testowych
- parametryzację zestawów testów i mechanizmy wyboru przypadków testowych
Powodem używania TTCN3 do testowania w czasie rzeczywistym są jego timery. Te liczniki czasu są zdefiniowane w zestawach testów funkcji . W TTCN3 nie ma żadnych globalnych liczników czasu. Te timery można uruchamiać, zatrzymywać i sprawdzać za pomocą prostych funkcji, takich jak timer.start, timer.stop i timer.read.
Snapshot Semantics to technika w TTCN3 (również w TTCN2), która zajmuje się komunikatem przekazywanym podczas komunikacji między systemem lub testowaną implementacją. Gdy testowany system otrzyma serię odpowiedzi, wykonywana jest migawka i są one oceniane w kolejności ich nadejścia. Tak więc za każdym razem, gdy zestaw atrybutów jest tworzony, wykonywana jest migawka i oceniane są tylko te zdarzenia, które są obecne w migawce.
Ale ta technika nie jest wydajna, ponieważ niektóre zdarzenia i informacje o ich atrybutach mogą zostać utracone podczas wykonywania migawki. Niektóre zdarzenia mogą zostać zarejestrowane w kolejce przetwarzania, ale nie w migawce. Takie zdarzenia nigdy nie mogą zostać przetworzone. Ponadto, jeśli sprzęt wykonujący testy nie jest wystarczająco szybki, nie może prawidłowo komunikować się z testowanym systemem. Tak więc błędy mogą zostać wygenerowane podczas takiej oceny testu.
narzędzia linuksowe
- testy rt: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/
- test cyklu firmy SUSE : https://documentation.suse.com/sle-rt/15-SP1/html/SLE-RT-all/art-slert-hwtest.html
Zobacz też
- Linux czasu rzeczywistego
- Wbudowany Linuks
- System operacyjny czasu rzeczywistego
- Systemy krytyczne dla bezpieczeństwa
- ^ Tsai, JJP; Fang, K.-Y.; Bi, Y.-D. (1990). „O testowaniu i debugowaniu oprogramowania w czasie rzeczywistym”. Proceedings., Czternasta doroczna międzynarodowa konferencja dotycząca oprogramowania i aplikacji komputerowych . s. 512–518. doi : 10.1109/CMPSAC.1990.139423 . ISBN 978-0-8186-2054-6 .
- ^ Pressman, Roger S. (2005). Inżynieria oprogramowania: podejście praktyka (wyd. 6). Boston, Massachusetts: McGraw-Hill. ISBN 0-07-285318-2 . OCLC 53848343 .
- ^ TTCN-3 Generowanie przypadków testowych z wykresów sekwencji komunikatów (PDF) .
- ^ „Towarzystwo Forum SDL - strona główna” . sdl-forum.org . Źródło 2021-03-08 .
- Bibliografia _ _ TTCN-3 . Źródło 2021-03-08 .
- ^ Dahlke, Patrick (2018-02-06). „Linux czasu rzeczywistego” . średni . Źródło 2021-03-10 .
- ^ „Najlepsze praktyki testowania w czasie rzeczywistym - eLinux.org” . elinux.org . Źródło 2021-03-10 .