interoperability testing
TRANSCRIPT
![Page 1: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/1.jpg)
Interoperability Tests
w CWMPPraktyczne uwagi
![Page 2: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/2.jpg)
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!
![Page 3: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/3.jpg)
Agenda
Ogólnie o IOT
CWMP – wprowadzenie
IOT w CWMP w przykładach
Podsumowanie
![Page 4: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/4.jpg)
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
![Page 5: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/5.jpg)
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
![Page 6: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/6.jpg)
IOT - Przykłady
Zgodność z systemem operacyjnym
Protokoły komunikacyjne (różne warstwy)
WiFi
GSM/3G/LTE…
![Page 7: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/7.jpg)
IOT – Stopnie zgodności
Kompatybilność Faktyczny standard Interoperacyjność
Źródło: http://interoperability-definition.info
![Page 8: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/8.jpg)
Gniazdka ekektryczne
![Page 9: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/9.jpg)
IOT – Kompatybilność – Przykłady
Technologie internetowe
Testy przeglądarek (CSS, JavaScript)
Rozmiary i orientacja ekranu (responsie layouts)
Typy urządzeń (komputer, tablet, smartphone)
![Page 10: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/10.jpg)
IOT – Interoperacyjność - Przykłady
Technologie bezprzewodowe
Wifi/wimax/gsm/lte
Technologie przewodowe
DSL/FTTH/DOCSIS
![Page 11: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/11.jpg)
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?
![Page 12: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/12.jpg)
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)
![Page 13: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/13.jpg)
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
![Page 14: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/14.jpg)
CWMP - Charakterystyka
Zalety Wady
![Page 15: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/15.jpg)
CWMP - Komunikacja
Źródło: http://www.qacafe.com
![Page 16: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/16.jpg)
CWMP - Stos
CWMP
SOAP/XML
HTTP
(SSL)
TCP/IP
![Page 17: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/17.jpg)
Komunikacja CWMP
Źródło: http://www.qacafe.com
![Page 18: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/18.jpg)
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
![Page 19: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/19.jpg)
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
![Page 20: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/20.jpg)
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
4\r\n
Wiki\r\n
5\r\n
pedia\r\n
E\r\n
in\r\n
\r\n
chunks.\r\n
0\r\n
\r\n
Wikipedia in
chunks.
Źródło: https://en.wikipedia.org/wiki/Chunked_transfer_encoding
![Page 21: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/21.jpg)
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>
![Page 22: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/22.jpg)
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>
![Page 23: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/23.jpg)
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>
![Page 24: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/24.jpg)
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
![Page 25: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/25.jpg)
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
![Page 26: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/26.jpg)
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>
![Page 27: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/27.jpg)
Przykłady testów – Connection Request
Mechanizm
Jak to działa?
Problemy
HTTP (digest)
Udawanie autentykacji
![Page 28: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/28.jpg)
Przykłady testów – Mechanizm Periodic
![Page 29: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/29.jpg)
Przykłady testów – Transfery plików
Sesja CWMPDownload
RPC
DownloadResponse
Koniec sesji CWMP
Transfer pliku
Aplikacja (Reboot)
Sesja CWMP z TC
Transfer Complete
Transfer Complete Response
Koniec sesji CWMP
![Page 30: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/30.jpg)
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)
![Page 31: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/31.jpg)
Przykłady testów – Diagnostyki
TR-143
Ping
Traceroute
Upload
Download
Jak działają diagnostyki w CWMP?
![Page 32: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/32.jpg)
Przykłady testów – Diagnostyki
Sesja CWMPZlecenie
diagnostykiKoniec sesji
CWMP
DiagnostykaSesja CWMP
z DCPobranie wyników
![Page 33: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/33.jpg)
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>
![Page 34: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/34.jpg)
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
![Page 35: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/35.jpg)
Przykłady testów – Bezpieczeństwo
Poprawna obsługa haseł
CPE -> ACS
ACS -> CPE
Walidacja certyfikatów
![Page 36: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/36.jpg)
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>
![Page 37: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/37.jpg)
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ń
![Page 38: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/38.jpg)
Narzędzia
Wireshark
Języki skryptowe
Python
Bash
Parsery XML (validacja XSD)
Dedykowane rozwiązanie
Pełna kontrola nad testami
Duża inwestycja
![Page 39: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/39.jpg)
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
![Page 40: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/40.jpg)
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
![Page 41: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/41.jpg)
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
![Page 42: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/42.jpg)
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
![Page 43: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/43.jpg)
Pytania?
![Page 44: Interoperability Testing](https://reader031.vdocuments.pub/reader031/viewer/2022021507/58efacf71a28abaa638b4641/html5/thumbnails/44.jpg)
Dziękuję!