Skip to content

Commit aefae80

Browse files
committed
Update report
1 parent 82f67a7 commit aefae80

File tree

1 file changed

+89
-78
lines changed

1 file changed

+89
-78
lines changed

ProjectAnalysisReport.md

+89-78
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66

77
### Dynamic analysis
88

9+
Dinamička analiza podrazumeva ispitivanje programa tokom njegovog izvršavanja. Za razliku od statičke analize koja radi sa izvornim kodom, dinamička analiza nam omogućava da:
10+
11+
* Proverimo stvarno ponašanje sistema u različitim scenarijima
12+
* Identifikujemo greške koje se manifestuju samo tokom izvršavanja
13+
* Izmerimo pokrivenost koda testovima
14+
15+
U kontekstu Zephyr projekta, fokusiramo se na jedinično testiranje modula za Bluetooth Channel Sounding funkcionalnost.
16+
917
#### Unit tests
1018

1119
Jedinicno testiranje je jedan od nacina dinamickog testiranja koji se fokusira na ispitivanje ispravnosti najjednostavnijih celina koda. Kad govorimo o testiranju ispravnosti, bitno je napomenuti da se testiranjem mogu pronaci greske u implementaciji, ali uspesno izvrsavanje testova ne garantuje ispravnost jedinice u celini. Naravno, cilj je da imamo sto vecu moc otkrivanja gresaka, i jedan od alata koji nam u tome moze pomoci jeste i pracenje pokrivenosti koda testovima. Alat za pokrivenost koda bice podrobnije opisan u narednim odeljcima. Jedna od razlika u odnosu na integracione testove u kontekstu ZephyrOS projekta je cinjenica da se za testiranje jedne funkcije ne ukljucuje citav projekat, odnosno samo jedan modul se kompajlira sto znacajno ubrzava proces testiranja.
@@ -189,84 +197,7 @@ Dakle, ima smisla udubiti se u kod i razmisljati na drugi nacin, odnosno ne samo
189197

190198
#### Pisanje testova - otkrivanje gresaka
191199

192-
Kao sto smo vec spomenuli, mozemo se fokusirati na nekoliko funkcija za koje smo vec napisali testove. Za ovo cemo napraviti novi folder channel_sounding_behavior u koji cemo smestiti spomenuta prosirenja. Pogledajmo prvo `bt_le_cs_security_enable` funkciju i njeno ocekivano ponasanje. Funkcija pravi bafer HCI komande, popunjava ga sa pokazivacem na konekciju i salje komandu sinhrono. Vec smo pokrili tzv. happy path, odnosno slucaj u kome je sve kao sto ocekujemo. Uz to, testirali smo i slucaj u kome `bt_hci_cmd_create` funkcija vrati nepravilan bafer (NULL). Slucajevi koje bismo jos mogli pokriti jesu kada se kao pokazivac na konekciju prosledi NULL vrednost kao i slucaj kada `bt_hci_cmd_send_sync` funkcija pukne. Ova dva slucaja su pokrivena testovima `test_sec_enable_hci_cmd_fail_null_conn` i `test_sec_enable_cmd_send_fail`. Na slican nacun su dodati i sledeci testovi:
193-
194-
### Testovi za `bt_le_cs_security_enable`
195-
196-
1. **`test_sec_enable_hci_cmd_fail`**
197-
* Provera ponašanja kada `bt_hci_cmd_create` ne uspe (vrati NULL)
198-
* Očekivano: Vraća `-ENOBUFS`
199-
***NAPOMENA**: Test je prolazio i pre izmena
200-
201-
2. **`test_sec_enable_hci_cmd_fail_null_conn`**
202-
* Provera ponašanja sa NULL parametrom za konekciju
203-
* Očekivano: Vraća `-ENOBUFS`
204-
***NAPOMENA**: Test je prolazio i pre izmena
205-
206-
3. **`test_sec_enable_cmd_send_fail`**
207-
* Provera ponašanja kada `bt_hci_cmd_send_sync` ne uspe
208-
* Očekivano: Vraća grešku sa sinhronizacije
209-
***NAPOMENA**: Test je prolazio i pre izmena
210-
211-
### Testovi za `bt_hci_le_cs_read_remote_supported_capabilities_complete`
212-
213-
4. **`test_read_remote_supported_capabilities_complete_null_buf`**
214-
* Provera ponašanja sa NULL baferom
215-
* Očekivano: Prekid bez operacija
216-
***NAPOMENA**: Test je prolazio i pre izmena
217-
218-
5. **`test_read_remote_supported_capabilities_complete_invalid_buf_len`**
219-
* Provera ponašanja sa nevalidnom dužinom bafera
220-
* Očekivano: Prekid izvršavanja
221-
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala je provera dužine)
222-
223-
6. **`test_read_remote_supported_capabilities_complete_evt_status_fail`**
224-
* Provera ponašanja kada status događaja pokazuje grešku
225-
* Očekivano: Prekid izvršavanja
226-
***NAPOMENA**: Test je prolazio i pre izmena
227-
228-
7. **`test_read_remote_supported_capabilities_complete_conn_lookup_handle_fail`**
229-
* Provera ponašanja kada pretraga konekcije ne uspe
230-
* Očekivano: Prekid izvršavanja
231-
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala je provera za NULL)
232-
233-
### Testovi za `bt_le_cs_read_remote_fae_table`
234-
235-
8. **`test_read_remote_fae_table_hci_cmd_fail`**
236-
* Provera ponašanja kada kreiranje HCI komande ne uspe
237-
* Očekivano: Vraća `-ENOBUFS`
238-
***NAPOMENA**: Test je prolazio i pre izmena
239-
240-
9. **`test_read_remote_fae_table_null_conn`**
241-
* Provera ponašanja sa NULL parametrom za konekciju
242-
* Očekivano: Vraća `-EFAULT`
243-
***NAPOMENA**: Test je prolazio i pre izmena
244-
245-
10. **`test_read_remote_fae_table_send_sync_failed`**
246-
* Provera ponašanja kada sinhronizacija komande ne uspe
247-
* Očekivano: Vraća grešku sa sinhronizacije
248-
***NAPOMENA**: Test je prolazio i pre izmena
249-
250-
### Testovi za `bt_hci_le_cs_read_remote_fae_table_complete`
251-
252-
11. **`test_bt_hci_le_cs_read_remote_fae_table_complete_invalid_buf_size_fail`**
253-
* Provera ponašanja sa nevalidnom veličinom bafera
254-
* Očekivano: Prekid izvršavanja
255-
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala provera dužine)
256-
257-
12. **`test_bt_hci_le_cs_read_remote_fae_table_complete_evt_status_fail`**
258-
* Provera ponašanja kada status događaja pokazuje grešku
259-
* Očekivano: Prekid izvršavanja
260-
***NAPOMENA**: Test je prolazio i pre izmena
261-
262-
13. **`test_bt_hci_le_cs_read_remote_fae_table_complete_conn_lookup_fail`**
263-
* Provera ponašanja kada pretraga konekcije ne uspe
264-
* Očekivano: Prekid izvršavanja
265-
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala provera za NULL)
266-
267-
_Napomena_: kod funkcija koje se zavrsavaju ranije ocekujemo da neke podfunkcije nikada nece biti pozvane. Ovaj uslov eksplicitno ukljucujemo u ocekivanja testa pomocu `zasser_` funkcija.
268-
269-
Navedeni testovi su implementirani u novom izvornom fajlu `error_handling.c`.
200+
Kao sto smo vec spomenuli, mozemo se fokusirati na nekoliko funkcija za koje smo vec napisali testove. Za ovo cemo napraviti novi folder channel_sounding_behavior u koji cemo smestiti spomenuta prosirenja. Pogledajmo prvo `bt_le_cs_security_enable` funkciju i njeno ocekivano ponasanje. Funkcija pravi bafer HCI komande, popunjava ga sa pokazivacem na konekciju i salje komandu sinhrono. Vec smo pokrili tzv. happy path, odnosno slucaj u kome je sve kao sto ocekujemo. Uz to, testirali smo i slucaj u kome `bt_hci_cmd_create` funkcija vrati nepravilan bafer (NULL). Slucajevi koje bismo jos mogli pokriti jesu kada se kao pokazivac na konekciju prosledi NULL vrednost kao i slucaj kada `bt_hci_cmd_send_sync` funkcija pukne. Ova dva slucaja su pokrivena testovima `test_sec_enable_hci_cmd_fail_null_conn` i `test_sec_enable_cmd_send_fail`. Kompletna lista testova moze se videti u sekciji [implementirani testovi](#implementirani-testovi)
270201

271202
Pokrenimo najpre skriptu sa opcijom no-coverage posto ocekujemo da ovog puta nece svi testovi proci:
272203

@@ -394,6 +325,86 @@ Vidimo da nije svuda rigorozno proveravano da li se prosledjuju ispravne vrednos
394325
395326
![Final unit test coverage](images/final_ut_coverage.png)
396327
328+
## Implementirani testovi
329+
330+
### Testovi za `bt_le_cs_security_enable`
331+
332+
1. **`test_sec_enable_hci_cmd_fail`**
333+
* Provera ponašanja kada `bt_hci_cmd_create` ne uspe (vrati NULL)
334+
* Očekivano: Vraća `-ENOBUFS`
335+
***NAPOMENA**: Test je prolazio i pre izmena
336+
337+
2. **`test_sec_enable_hci_cmd_fail_null_conn`**
338+
* Provera ponašanja sa NULL parametrom za konekciju
339+
* Očekivano: Vraća `-ENOBUFS`
340+
***NAPOMENA**: Test je prolazio i pre izmena
341+
342+
3. **`test_sec_enable_cmd_send_fail`**
343+
* Provera ponašanja kada `bt_hci_cmd_send_sync` ne uspe
344+
* Očekivano: Vraća grešku sa sinhronizacije
345+
***NAPOMENA**: Test je prolazio i pre izmena
346+
347+
### Testovi za `bt_hci_le_cs_read_remote_supported_capabilities_complete`
348+
349+
4. **`test_read_remote_supported_capabilities_complete_null_buf`**
350+
* Provera ponašanja sa NULL baferom
351+
* Očekivano: Prekid bez operacija
352+
***NAPOMENA**: Test je prolazio i pre izmena
353+
354+
5. **`test_read_remote_supported_capabilities_complete_invalid_buf_len`**
355+
* Provera ponašanja sa nevalidnom dužinom bafera
356+
* Očekivano: Prekid izvršavanja
357+
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala je provera dužine)
358+
359+
6. **`test_read_remote_supported_capabilities_complete_evt_status_fail`**
360+
* Provera ponašanja kada status događaja pokazuje grešku
361+
* Očekivano: Prekid izvršavanja
362+
***NAPOMENA**: Test je prolazio i pre izmena
363+
364+
7. **`test_read_remote_supported_capabilities_complete_conn_lookup_handle_fail`**
365+
* Provera ponašanja kada pretraga konekcije ne uspe
366+
* Očekivano: Prekid izvršavanja
367+
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala je provera za NULL)
368+
369+
### Testovi za `bt_le_cs_read_remote_fae_table`
370+
371+
8. **`test_read_remote_fae_table_hci_cmd_fail`**
372+
* Provera ponašanja kada kreiranje HCI komande ne uspe
373+
* Očekivano: Vraća `-ENOBUFS`
374+
***NAPOMENA**: Test je prolazio i pre izmena
375+
376+
9. **`test_read_remote_fae_table_null_conn`**
377+
* Provera ponašanja sa NULL parametrom za konekciju
378+
* Očekivano: Vraća `-EFAULT`
379+
***NAPOMENA**: Test je prolazio i pre izmena
380+
381+
10. **`test_read_remote_fae_table_send_sync_failed`**
382+
* Provera ponašanja kada sinhronizacija komande ne uspe
383+
* Očekivano: Vraća grešku sa sinhronizacije
384+
***NAPOMENA**: Test je prolazio i pre izmena
385+
386+
### Testovi za `bt_hci_le_cs_read_remote_fae_table_complete`
387+
388+
11. **`test_bt_hci_le_cs_read_remote_fae_table_complete_invalid_buf_size_fail`**
389+
* Provera ponašanja sa nevalidnom veličinom bafera
390+
* Očekivano: Prekid izvršavanja
391+
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala provera dužine)
392+
393+
12. **`test_bt_hci_le_cs_read_remote_fae_table_complete_evt_status_fail`**
394+
* Provera ponašanja kada status događaja pokazuje grešku
395+
* Očekivano: Prekid izvršavanja
396+
***NAPOMENA**: Test je prolazio i pre izmena
397+
398+
13. **`test_bt_hci_le_cs_read_remote_fae_table_complete_conn_lookup_fail`**
399+
* Provera ponašanja kada pretraga konekcije ne uspe
400+
* Očekivano: Prekid izvršavanja
401+
* :warning: **NAPOMENA**: Test nije prolazio pre izmena (nedostajala provera za NULL)
402+
403+
_Napomena_: kod funkcija koje se zavrsavaju ranije ocekujemo da neke podfunkcije nikada nece biti pozvane. Ovaj uslov eksplicitno ukljucujemo u ocekivanja testa pomocu `zassert_` funkcija.
404+
405+
Navedeni testovi su implementirani u novom izvornom fajlu `error_handling.c`.
406+
407+
397408
#### Integration tests
398409
399410
Limitations

0 commit comments

Comments
 (0)