Interoperability Tests
w CWMP
Praktyczne uwagi
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!
Agenda
 Ogólnie o IOT
 CWMP – wprowadzenie
 IOT w CWMP w przykładach
 Podsumowanie
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
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 
IOT - Przykłady
 Zgodność z systemem operacyjnym
 Protokoły komunikacyjne (różne warstwy)
 WiFi
 GSM/3G/LTE…
IOT – Stopnie zgodności
Kompatybilność Faktyczny standard Interoperacyjność
Źródło: http://interoperability-definition.info
Gniazdka ekektryczne
IOT – Kompatybilność – Przykłady
 Technologie internetowe
 Testy przeglądarek (CSS, JavaScript)
 Rozmiary i orientacja ekranu (responsie layouts)
 Typy urządzeń (komputer, tablet, smartphone)
IOT – Interoperacyjność - Przykłady
 Technologie bezprzewodowe
 Wifi/wimax/gsm/lte
 Technologie przewodowe
 DSL/FTTH/DOCSIS
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?
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)
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
CWMP - Charakterystyka
Zalety Wady
CWMP - Komunikacja
Źródło: http://www.qacafe.com
CWMP - Stos
CWMP
SOAP/XML
HTTP
(SSL)
TCP/IP
Komunikacja CWMP
Źródło: http://www.qacafe.com
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
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
Przykłady testów – HTTP/S
 Autentykacja
 Simple
 Digest
 Poprawność nagłówki
 Sesja HTTP
 Poprawność metod (PUT/POST)
 Kompresja
 SSL/TLS
 Certyfikaty – dwukierunkowe!
 Algorytmy szyfrowania – kompatybilność (np. z Java)
 Chunked
4rn
Wikirn
5rn
pediarn
Ern
inrn
rn
chunks.rn
0rn
rn
Wikipedia in
chunks.
Źródło: https://en.wikipedia.org/wiki/Chunked_transfer_encoding
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>
Przykłady błędów
<cwmp:GetParameterValuesResponse>
<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[2]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.PeriodicInformIntervaal<Name>
<Value xsi:type="xsd:unsignedInt">3600</Value>
</ParameterList>
</cwmp:GetParameterValuesResponse>
Przykłady błędów - rozwiązanie
<cwmp:GetParameterValuesResponse>
<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[2]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.PeriodicInformIntervaal</Name>
<Value xsi:type="xsd:unsignedInt">3600</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:GetParameterValuesResponse>
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
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
Przykład
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:cwmp="urn:dslforum-org:cwmp-1-2" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">8084849241369529875</cwmp:ID>
<cwmp:SupportedCWMPVersions soap:mustUnderstand="0">1.0,1.1,1.2,1.3,1.4</cwmp:SupportedCWMPVersions>
</soap:Header>
<soap:Body>
<cwmp:Inform>
<DeviceId>
<Manufacturer>AAAA</Manufacturer>
<OUI>BBBB</OUI>
<ProductClass>CCCC</ProductClass>
<SerialNumber>DDDD</SerialNumber>
</DeviceId>
<Event soap-enc:arrayType="cwmp:EventStruct[2]">
<EventStruct>
<EventCode>2 PERIODIC</EventCode>
<CommandKey />
</EventStruct>
<EventStruct>
<EventCode>1 BOOT</EventCode>
<CommandKey />
</EventStruct>
</Event>
<MaxEnvelopes>1</MaxEnvelopes>
<CurrentTime>2016-04-13T06:31:39+00:00</CurrentTime>
<RetryCount>0</RetryCount>
<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[8]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
<Value xsi:type="xsd:string">10.8.33.147</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
<Value xsi:type="xsd:string">n/a</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
<Value xsi:type="xsd:string">http://10.8.33.147:12131/connreq</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
<Value xsi:type="xsd:string">1.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
<Value xsi:type="xsd:string">development</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
<Value xsi:type="xsd:string"/>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
<Value xsi:type="xsd:string"/>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceSummary</Name>
<Value xsi:type="xsd:string">…</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
</soap:Body>
</soap:Envelope>
Przykłady testów – Connection Request
 Mechanizm
 Jak to działa?
 Problemy
 HTTP (digest)
 Udawanie autentykacji
Przykłady testów – Mechanizm Periodic
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
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)
Przykłady testów – Diagnostyki
 TR-143
 Ping
 Traceroute
 Upload
 Download
 Jak działają diagnostyki w CWMP?
Przykłady testów – Diagnostyki
Sesja CWMP
Zlecenie
diagnostyki
Koniec sesji
CWMP
Diagnostyka
Sesja CWMP
z DC
Pobranie
wyników
Przykłady testów – Diagnostyki -
Problemy
 Problemy ze zleceniem diagnostyki
 Właściwa kolejność parametrów
 Brak DiagnosticComplete w Inform
 Za krótki bufor na URL – użyty adres jest za długi
 Niepoprawne rezultaty
 Min < Avg < Max
 Failure + Success = Count
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">e2adc961</cwmp:ID>
</soap:Header>
<soap:Body>
<cwmp:SetParameterValues>
<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[6]">
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.DSCP</Name>
<Value xsi:type="xsd:unsignedInt">0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.DataBlockSize</Name>
<Value xsi:type="xsd:unsignedInt">64</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.NumberOfRepetitions</Name>
<Value xsi:type="xsd:unsignedInt">10</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.DiagnosticsState</Name>
<Value xsi:type="xsd:string">Requested</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.Host</Name>
<Value xsi:type="xsd:string">10.4.0.1</Value>
</ParameterValueStruct>
<ParameterValueStruct>
<Name>Device.LAN.IPPingDiagnostics.Timeout</Name>
<Value xsi:type="xsd:unsignedInt">5000</Value>
</ParameterValueStruct>
</ParameterList>
<ParameterKey>n/a</ParameterKey>
</cwmp:SetParameterValues>
</soap:Body>
</soap:Envelope>
Przykłady testów - Datamodel
 Błędy w kluczach
 InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.Ssid
 InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID
 InternetGatewayDevice.MY_CUSTOM_Logging.LogLevel
 InternetGatewayDevice.X_0023C7_Logging.LogLevel
 InternetGatewayDevice.WLANConfiguration.1.SSID
 InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID
 Złe wartości RW
 Parametry konfiguracyjne dostępne jako RO
 Złe typy parametrów
 xsd:integer/xsd:string
Przykłady testów – Bezpieczeństwo
 Poprawna obsługa haseł
 CPE -> ACS
 ACS -> CPE
 Walidacja certyfikatów
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>
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ń
Narzędzia
 Wireshark
 Języki skryptowe
 Python
 Bash
 Parsery XML (validacja XSD)
 Dedykowane rozwiązanie
 Pełna kontrola nad testami
 Duża inwestycja
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 
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
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
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
Pytania?
Dziękuję!

Interoperability Testing

  • 1.
  • 2.
    O czym niejest 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 oIOT  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…
  • 7.
    IOT – Stopniezgodności Kompatybilność Faktyczny standard Interoperacyjność Źródło: http://interoperability-definition.info
  • 8.
  • 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 – Jakzacząć? 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 WANManagement 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ładyurządzeń  Routery – Home Gateway (DSL, DOSIS, FTTH)  DHCP, WiFi, Voice  IP Phone  WiMAX/LTE  STB – Set Tob Box  Femtocele  Smart Home Gateway
  • 14.
  • 15.
    CWMP - Komunikacja Źródło:http://www.qacafe.com
  • 16.
  • 17.
  • 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
  • 20.
    Przykłady testów –HTTP/S  Autentykacja  Simple  Digest  Poprawność nagłówki  Sesja HTTP  Poprawność metod (PUT/POST)  Kompresja  SSL/TLS  Certyfikaty – dwukierunkowe!  Algorytmy szyfrowania – kompatybilność (np. z Java)  Chunked 4rn Wikirn 5rn pediarn Ern inrn rn chunks.rn 0rn rn Wikipedia in chunks. Źródło: https://en.wikipedia.org/wiki/Chunked_transfer_encoding
  • 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>
  • 22.
  • 23.
    Przykłady błędów -rozwiązanie <cwmp:GetParameterValuesResponse> <ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[2]"> <ParameterValueStruct> <Name>InternetGatewayDevice.ManagementServer.PeriodicInformIntervaal</Name> <Value xsi:type="xsd:unsignedInt">3600</Value> </ParameterValueStruct> </ParameterList> </cwmp:GetParameterValuesResponse>
  • 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
  • 26.
    Przykład <?xml version="1.0" encoding="UTF-8"?> <soap:Envelopexmlns:cwmp="urn:dslforum-org:cwmp-1-2" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Header> <cwmp:ID soap:mustUnderstand="1">8084849241369529875</cwmp:ID> <cwmp:SupportedCWMPVersions soap:mustUnderstand="0">1.0,1.1,1.2,1.3,1.4</cwmp:SupportedCWMPVersions> </soap:Header> <soap:Body> <cwmp:Inform> <DeviceId> <Manufacturer>AAAA</Manufacturer> <OUI>BBBB</OUI> <ProductClass>CCCC</ProductClass> <SerialNumber>DDDD</SerialNumber> </DeviceId> <Event soap-enc:arrayType="cwmp:EventStruct[2]"> <EventStruct> <EventCode>2 PERIODIC</EventCode> <CommandKey /> </EventStruct> <EventStruct> <EventCode>1 BOOT</EventCode> <CommandKey /> </EventStruct> </Event> <MaxEnvelopes>1</MaxEnvelopes> <CurrentTime>2016-04-13T06:31:39+00:00</CurrentTime> <RetryCount>0</RetryCount> <ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[8]"> <ParameterValueStruct> <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name> <Value xsi:type="xsd:string">10.8.33.147</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name> <Value xsi:type="xsd:string">n/a</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name> <Value xsi:type="xsd:string">http://10.8.33.147:12131/connreq</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name> <Value xsi:type="xsd:string">1.0</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name> <Value xsi:type="xsd:string">development</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name> <Value xsi:type="xsd:string"/> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name> <Value xsi:type="xsd:string"/> </ParameterValueStruct> <ParameterValueStruct> <Name>InternetGatewayDevice.DeviceSummary</Name> <Value xsi:type="xsd:string">…</Value> </ParameterValueStruct> </ParameterList> </cwmp:Inform> </soap:Body> </soap:Envelope>
  • 27.
    Przykłady testów –Connection Request  Mechanizm  Jak to działa?  Problemy  HTTP (digest)  Udawanie autentykacji
  • 28.
    Przykłady testów –Mechanizm Periodic
  • 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)
  • 31.
    Przykłady testów –Diagnostyki  TR-143  Ping  Traceroute  Upload  Download  Jak działają diagnostyki w CWMP?
  • 32.
    Przykłady testów –Diagnostyki Sesja CWMP Zlecenie diagnostyki Koniec sesji CWMP Diagnostyka Sesja CWMP z DC Pobranie wyników
  • 33.
    Przykłady testów –Diagnostyki - Problemy  Problemy ze zleceniem diagnostyki  Właściwa kolejność parametrów  Brak DiagnosticComplete w Inform  Za krótki bufor na URL – użyty adres jest za długi  Niepoprawne rezultaty  Min < Avg < Max  Failure + Success = Count <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Header> <cwmp:ID soap:mustUnderstand="1">e2adc961</cwmp:ID> </soap:Header> <soap:Body> <cwmp:SetParameterValues> <ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[6]"> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.DSCP</Name> <Value xsi:type="xsd:unsignedInt">0</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.DataBlockSize</Name> <Value xsi:type="xsd:unsignedInt">64</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.NumberOfRepetitions</Name> <Value xsi:type="xsd:unsignedInt">10</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.DiagnosticsState</Name> <Value xsi:type="xsd:string">Requested</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.Host</Name> <Value xsi:type="xsd:string">10.4.0.1</Value> </ParameterValueStruct> <ParameterValueStruct> <Name>Device.LAN.IPPingDiagnostics.Timeout</Name> <Value xsi:type="xsd:unsignedInt">5000</Value> </ParameterValueStruct> </ParameterList> <ParameterKey>n/a</ParameterKey> </cwmp:SetParameterValues> </soap:Body> </soap:Envelope>
  • 34.
    Przykłady testów -Datamodel  Błędy w kluczach  InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.Ssid  InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID  InternetGatewayDevice.MY_CUSTOM_Logging.LogLevel  InternetGatewayDevice.X_0023C7_Logging.LogLevel  InternetGatewayDevice.WLANConfiguration.1.SSID  InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID  Złe wartości RW  Parametry konfiguracyjne dostępne jako RO  Złe typy parametrów  xsd:integer/xsd:string
  • 35.
    Przykłady testów –Bezpieczeństwo  Poprawna obsługa haseł  CPE -> ACS  ACS -> CPE  Walidacja certyfikatów
  • 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  Opistestó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ęzykiskryptowe  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
  • 43.
  • 44.