2. O czym nie jest ten wykład?
Akademicka teoria testów interoperacyjności
Nie jestem ekspertem
Gotowe rozwiązania – nic tylko kopiować!
Uwagi i inspiracje
Internet of Things
Następnym razem!
3. Agenda
Ogólnie o IOT
CWMP – wprowadzenie
IOT w CWMP w przykładach
Podsumowanie
4. IOT - Definicja
Interoperacyjność to cecha produktu lub systemu, którego interfejsy funkcjonują
w pełnej zgodności, tak by współpracować z innymi produktami lub systemami,
które istnieją, bądź mogą istnieć w przyszłości, bez jakiegokolwiek ograniczenia
dostępu lub ograniczonych możliwości implementacji
Źródło: http://interoperability-definition.info
5. Po co IOT?
Polepszenie jakości naszego produktu
Sprawdzenie jak nasz produkt wypada na tle konkurencji
Obsłużenie większej ilości przypadków brzegowych
Programy certyfikacyjna – prestiż, większa szansa sprzedaży
Ktoś płaci
6. IOT - Przykłady
Zgodność z systemem operacyjnym
Protokoły komunikacyjne (różne warstwy)
WiFi
GSM/3G/LTE…
9. IOT – Kompatybilność – Przykłady
Technologie internetowe
Testy przeglądarek (CSS, JavaScript)
Rozmiary i orientacja ekranu (responsie layouts)
Typy urządzeń (komputer, tablet, smartphone)
10. IOT – Interoperacyjność - Przykłady
Technologie bezprzewodowe
Wifi/wimax/gsm/lte
Technologie przewodowe
DSL/FTTH/DOCSIS
11. IOT – Jak zacząć?
1. Specyfikacja – Co jest przedmiotem testów?
2. Zakres testów – Które elementy będziemy testować?
3. Scenariusze – W jaki sposób będziemy testować?
4. Raportowanie – Jak będziemy raportować?
5. Automatyzacja – Co możemy zautomatyzować?
6. Usprawnianie – Jak wyniki testów wpływają na proces testowania?
12. CWMP
Customer-Premises Equipment WAN Management Protocol – protokół zdalnego
zarządzania urządzeniami. Umożliwia zmianę konfiguracji, przeprowadzanie
diagnosty, aktualizacje firmware, restartowanie, przywrócenie ustawień
fabrycznych.
Cechy:
TR-069 – dojrzały protokół, opublikowany w maju 2004
Obowiązujący standard w świecie telco
Wyspecyfikowany Data Model (np. TR-181)
13. CWMP – Przykłady urządzeń
Routery – Home Gateway (DSL, DOSIS, FTTH)
DHCP, WiFi, Voice
IP Phone
WiMAX/LTE
STB – Set Tob Box
Femtocele
Smart Home Gateway
18. CWMP - Metody
GetParameterNames – odkrywanie nazw parametrów
GetParameterValues – pobieranie wartości parametrów
SetParameterValues – zmiana wartość parametrów
GetParameterAttributes – pobieranie atrybutów
SetParameterAttributes – ustawianie atrybutów
Download/Upload – transfer plików (np. backup konfiguracji)
AddObject/DeleteObject – zarządzanie dynamicznymi tablicami (port
forewarding)
Reboot/FactoryReset – restartowanie i przywracanie domyślnej konfiguracji
19. Przykłady testów - TCP
Ilość połączeń TCP na sesje CWMP
Standard nie określa zachowania
Praktyka – Jedno połączenie TCP na sesje CWMP
Wielkość ramki TCP
Dramatyczny wzrost rozmiaru sesji (np. 200kb -> 8MB)
Retransmisje
„Urywanie” sesji CWMP
21. Przykłady testów – XML/SOAP
Poprawność XML
Zgodność z XSD
Domknięcia tagów
Znaki zabronione
np. backspace
Escepowanie wartości
Poprawność namespace’ów
<object name="InternetGatewayDevice.Time." access="readOnly" minEntries="1" maxEntries="1"
dmr:version="1.0">
<description>This object contains parameters relating an NTP or SNTP time client in the CPE.</description>
<parameter name="Enable" access="readWrite" dmr:version="1.4">
<description>Enables or disables the NTP or SNTP time client.</description>
<syntax>
<boolean/>
</syntax>
</parameter>
<parameter name="Status" access="readOnly" dmr:version="1.4">
<description>Status of Time support on the CPE. {{enum}}
The {{enum|Unsynchronized}} value indicates that the CPE's absolute time has not yet been set.
The {{enum|Synchronized}} value indicates that the CPE has acquired accurate absolute time; its current time
is
accurate.
The {{enum|Error_FailedToSynchronize}} value indicates that the CPE failed to acquire accurate absolute
time; its
current time is not accurate.
The {{enum|Error}} value MAY be used by the CPE to indicate a locally defined error condition.
</description>
<syntax>
<string>
<enumeration value="Disabled"/>
<enumeration value="Unsynchronized"/>
<enumeration value="Synchronized"/>
<enumeration value="Error_FailedToSynchronize"/>
<enumeration value="Error" optional="true"/>
</string>
</syntax>
</parameter>
24. CWMP - Sesja
Niepoprawne rozpoczynanie sesji
Inform/InformResponse i … ?
Poprawne zakańczanie sesji CWMP
Jakie niebezpieczeństwa niesie brak poprawnego zakończenia sesji?
Rozpoczynanie sesji w trakcie trwania poprzedniej
25. Przykłady testów - Inform
Podstawowa metoda – CPE rozpoczyna sesje
Poprawne parametry identyfikujące urządzanie (OUI/Serial number)
Poprawne typy Eventów
Boot/Bootstrap/Diagnostic Complete
Poprawny czas
Certyfikaty!
Obecność wymaganych parametrów
29. Przykłady testów – Transfery plików
Sesja CWMP
Download
RPC
Download
Response
Koniec sesji
CWMP
Transfer
pliku
Aplikacja
(Reboot)
Sesja CWMP
z TC
Transfer
Complete
Transfer
Complete
Response
Koniec sesji
CWMP
30. Przykłady testów – Transfery plików -
Problemy
Obsługiwane metody transferu
HTTP/S (z/bez autentykacji)
FTP (z/bez autentykacji)
Brak/niepoprawny Event w Inform
Brak TransferComplete
Niepoprawne czasy
Za krótki bufor na URL
Zła metoda HTTP (POST zamiast PUT przy Upload)
36. Format ma znaczenie
Dbaj o czytelność logów!
<ParameterValueStruct><Name>InternetGatewayDevice.ManagementServer.PeriodicInfor
mInterval</Name><Value
xsi:type="xsd:unsignedInt">3600</Value></ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.PeriodicInformInterval</Name>
<Value xsi:type="xsd:unsignedInt">3600</Value>
</ParameterValueStruct>
37. Przechowywanie wyników
Opis testów
Wewnętrzny (techniczny)
Dla klienta (marketingowy)
Reporty - template raportu
Przyśpiesza prace
Standaryzacja
Baza danych to dobry pomysł!
Statystyki
Polecanie dobrych urządzeń
38. Narzędzia
Wireshark
Języki skryptowe
Python
Bash
Parsery XML (validacja XSD)
Dedykowane rozwiązanie
Pełna kontrola nad testami
Duża inwestycja
39. Zagrożenia i wyzwania
Niedojrzała specyfikacja
Brak standardów
Niepełne standardy
Standardy pozwalające na dużą „dowolność”
Mnogość implementacji
Słaba jakość
Długi czas fixowania błedów
Odkrycie problemu -> Przygotowanie łatki w bibliotece TR-069 -> Testy ->
Inetgracja z firmware -> Testy integracji -> Testy u Operatora -> deployment
Urządzenie/systemy „chytruski”
Uwaga na wersje oprogramowania!
Dobrze jest robić MD5
40. Automaty? Tak, ale…
Dla bardzo złych CPE stopień skomplikowania testów zaczyna przeszkadzać
Pokrycie tylko znanych przypadków
Bardzo trudna weryfikacja faktycznego działania
Ręczne rozwiązywanie problemów
41. Poza IOT
Testy „Serwisowe”
Czy to naprawdę działa?
Wydajność
Jak dużo wiadomość CWMP urządzenie jest w stanie obsłużyć?
Stabilność
Czy moduł CWMP nie zawiesza się?
Programy certyfikacji
Budują zaufanie
Rozpoznawalność marki
42. Podsumwanie
IOT – ciężki kawałek chleba
CWMP – dobry protokuł managementowy (choć nie bez wad)
Przygotuj się na wszystko!
Dowolne błędy na dowolnym poziomie
Niedostatki i nieścisłości specyfikacji
Czynnik ludzki