SlideShare a Scribd company logo
1 of 44
Download to read offline
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ę!

More Related Content

What's hot

Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
XSolve
 

What's hot (14)

Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?
 
Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)
 
[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
 
Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010
 
JMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatkiJMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatki
 
JMeter – narzędzie testera
JMeter – narzędzie testeraJMeter – narzędzie testera
JMeter – narzędzie testera
 
Dodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowychDodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowych
 
Awk
AwkAwk
Awk
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
 
Automation of functional tests using JMeter Part II (in Polish)
Automation of functional tests using JMeter Part II (in Polish)Automation of functional tests using JMeter Part II (in Polish)
Automation of functional tests using JMeter Part II (in Polish)
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 

Viewers also liked

Data science project presentation
Data science project presentationData science project presentation
Data science project presentation
Kevin Bluer
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
Wiktor Żołnowski
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Geek Girls Carrots Poznan
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
Wiktor Żołnowski
 

Viewers also liked (20)

Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
 
Preface to a Strategic Plan for Data Science at the NIH
Preface to a Strategic Plan for Data Science at the NIHPreface to a Strategic Plan for Data Science at the NIH
Preface to a Strategic Plan for Data Science at the NIH
 
TestowanieIoT2016
TestowanieIoT2016TestowanieIoT2016
TestowanieIoT2016
 
Data science project presentation
Data science project presentationData science project presentation
Data science project presentation
 
My First Data Science Project (Data Science Thailand Meetup #1)
My First Data Science Project (Data Science Thailand Meetup #1)My First Data Science Project (Data Science Thailand Meetup #1)
My First Data Science Project (Data Science Thailand Meetup #1)
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guide
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika Braun
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
 
selenium grid & docker
selenium grid & dockerselenium grid & docker
selenium grid & docker
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
 
Artur Górski - How many defects are left
Artur Górski - How many defects are leftArtur Górski - How many defects are left
Artur Górski - How many defects are left
 
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
 
BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1) BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1)
 

Similar to Interoperability Testing

Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
Wojciech Lichota
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
bartlomiej.szafko
 

Similar to Interoperability Testing (20)

ASP.NET MVC - najważniejsze założenia
ASP.NET MVC - najważniejsze założeniaASP.NET MVC - najważniejsze założenia
ASP.NET MVC - najważniejsze założenia
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
 
CQRS, ES, Scala @ Confitura 2012
CQRS, ES, Scala @ Confitura 2012CQRS, ES, Scala @ Confitura 2012
CQRS, ES, Scala @ Confitura 2012
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
 
Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!
 
university day 1
university day 1university day 1
university day 1
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
 
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
 
Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Torquebox
TorqueboxTorquebox
Torquebox
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
 

More from kraqa

More from kraqa (20)

RestAssured w sluzbie testow API
RestAssured w sluzbie testow APIRestAssured w sluzbie testow API
RestAssured w sluzbie testow API
 
Postman - podstawy testowania REST API
Postman - podstawy testowania REST APIPostman - podstawy testowania REST API
Postman - podstawy testowania REST API
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20
 
Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek
 
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir RadzyminskiKontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
 
KraQA#41 - PageFactory
KraQA#41 - PageFactoryKraQA#41 - PageFactory
KraQA#41 - PageFactory
 
KraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowKraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testow
 
Hyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakeHyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shake
 
Wybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowWybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testow
 
Continuous security
Continuous securityContinuous security
Continuous security
 
Let s meet inside
Let s meet insideLet s meet inside
Let s meet inside
 
O wezu przy kawie
O wezu przy kawieO wezu przy kawie
O wezu przy kawie
 
Strategia do automatów
Strategia do automatówStrategia do automatów
Strategia do automatów
 
Z czym do api
Z czym do apiZ czym do api
Z czym do api
 
Jenkins pipelines
Jenkins pipelinesJenkins pipelines
Jenkins pipelines
 
Testy UI
Testy UITesty UI
Testy UI
 
Tester w pułapce myślenia
Tester w pułapce myśleniaTester w pułapce myślenia
Tester w pułapce myślenia
 
Kiedy tester zostaje managerem
Kiedy tester zostaje manageremKiedy tester zostaje managerem
Kiedy tester zostaje managerem
 
KraQA#32 - RODO
KraQA#32 - RODOKraQA#32 - RODO
KraQA#32 - RODO
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 

Interoperability Testing

  • 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…
  • 7. IOT – Stopnie zgodności Kompatybilność Faktyczny standard Interoperacyjność Źródło: http://interoperability-definition.info
  • 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
  • 15. CWMP - Komunikacja Źródło: http://www.qacafe.com
  • 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>
  • 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: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>
  • 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  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