Bootcamp XVIII: wskazówek część dalsza

Pora na rozwinięcie poprzedniej wskazówki podanej we wpisie Bootcamp XVIII: Jak to może być zrobione. Chcę przede wszystkim podkreślić, że tego typu przypadki “występują w naturze”, przy czym wykrycie ich nie jest trywialne.

Na początku sama formatka wyszukiwania i wyniki bez podania jakichkolwiek dodatkowych parametrów wyszukiwania:

Można/należy zapamiętać zwrócone wyniki i wykorzystać je przy dalszych testach.

Pierwszą istotną rzeczą, którą można zauważyć, że w przypadku podania identyfikatora w formatce wyszukiwania, pozostałe parametry nie są uwzględniane. Łatwo to sprawdzić wybierając identyfikator jednej z wiadomości, a następnie ponowić próby wyszukiwania ustawiając pozostałe parametry na wartości, przy których dana wiadomość nie powinna zostać zwrócona. Oznacza to, że nie ma sensu testowanie pozostałych dwóch parametrów, w przypadku gdy podany został identyfikator wiadomości. Dodatkowo można przypuszczać, że formatka jest obsługiwana przez więcej niż jedno zapytanie SQL.

Mamy trzy parametry:

Można stworzyć (w uproszczeniu) następującą listę przypadków testowych:

  1. id
  2. text
  3. type
  4. id, text
  5. id, type
  6. text, type
  7. id, text, type

Warto zauważyć, że niektóre przypadki mogą zostać “zredukowane”. Przypadki 1, 4, 5 i 7 zawierają w sobie parametr id , pozostałe parametry są nieistotne. Po tej redukcji lista możliwych przypadków otrzymuje postać:

  1. id
  2. text
  3. type
  4. text, type

Teoretycznie można usunąć również przypadek z samym parametrem text , ponieważ parametr type jest ustawiony zawsze. Z drugiej strony czasami ciekawe efekty daje usunięcie jakiegoś parametru (usunięcie wartości lub “całego” parametru), więc można założyć, że sam parametr text również uda się ustawić. W efekcie otrzymywane są cztery przypadki, które należy przetestować. I w tym konkretnym przykładzie lepiej nie zakładać, że skoro w jednym przypadku testowym jakiś parametr jest “bezpieczny”, będzie również bezpieczny w innym.

I na koniec dowód, że się da:

Oryginał tego wpisu dostępny jest pod adresem Bootcamp XVIII: wskazówek część dalsza

Autor: Paweł Goleń