CRUD i testowanie operacji na danych

CRUD i testowanie operacji na danych
CRUD jest heurystyką, która przypomina nam jakie operacje na danych lub zmiennych należy testować. Jej rozwinięcie pozwala nam zweryfikować kilka ciekawych i prawdopodobnych scenariuszy w użytkowaniu aplikacji.

CRUD jest skrótem od angielskich słów create, read, update, delete czyli utwórz, odczytaj, aktualizuj, usuń. Czasami litera R jest rozwijana jako retrieve (pobierz), a czasem również litera D jest rozwijana jako destroy (zniszcz). 

Jak CRUD wygląda w aplikacjach bazodanowych i w protokole komunikacyjnym:

Działanie Instrukcja SQL HTTP
Create INSERT PUT / POST
Read (Retrieve) SELECT GET
Update UPDATE POST / PUT / PATCH
Delete (Destroy) DELETE DELETE

W interfejsie użytkownika CRUD jest stosowany w odniesieniu do interfejsu użytkownika aplikacji, które zazwyczaj pozwalają użytkownikowi na:

  • utworzenie lub dodanie nowych informacji (create),
  • odczytanie lub wyświetlenie istniejących informacji (read),
  • modyfikowanie lub edycję istniejących informacji (update),
  • usuwanie istniejących informacji (delete).

Bez tych czterech działań oprogramowanie w pełnej wersji zazwyczaj nie może być uznane za kompletne. Przykładowo, w niektórych przypadkach próbne lub darmowe wersje oprogramowania różnią się od pełnych wersji tym, że nie mają wsparcia dla wszystkich z operacji CRUD (np. program Adobe Acrobat firmy Adobe zawiera funkcje pozwalające na realizację wszystkich operacji CRUD, podczas gdy darmowa wersja – Acrobat Reader – pozwala na odczytywanie i wyświetlanie dokumentów, a nie tworzenie i modyfikację).

Przeanalizujmy CRUD w podstawowym ujęciu zakładania konta w systemie. Załóżmy, że dla użytkownika o loginie user1 chcemy utworzyć konto.
 
Create (stwórz)
Zakładamy konto użytkownikowi przy pomocy następujących danych:
Login: user1
Imię: Jan
Nazwisko: Kowalski
Adres e-mail: jan.kowalski@@gmial.com
 
Read (odczytaj)
Aby zweryfikować, czy użytkownik rzeczywiście został zapisany, możemy albo sprawdzić to w bazie, albo wyszukać go w interfejsie. Oczytanie powinno nam zwrócić:
Login: user1
Imię: Jan
Nazwisko: Kowalski
Adres e-mail: jan.kowalski@@gmial.com
 
Update (aktualizuj)
Możemy uznać, że dane email są niepoprawnie wpisane, więc aktualizujemy dane edytując adres i zmieniamy adres na poprawny. Uzyskujemy:
Login: user1
Imię: Jan
Nazwisko: Kowalski
Adres e-mail (po aktualizacji): jan.kowalski@@gmail.com
 
Delete (usuń)
Kolejną operacją może być sprawdzenie czy użytkownika można skasować. Po skasowanie w próbie read (odczytania) nie powinniśmy mieć możliwości odczytania danych user1.

Podczas testowania zadaniem testera będzie znalezienie miejsca, gdzie dane można stworzyć, odczytać, zaktualizować i skasować. Typowym scenariuszem operującym na danych z jednoczesną weryfikacją poprawności wykonania operacji na danych będzie np. CRURDR -  użytkownik jest stworzony (C), następnie sprawdzamy czy został stworzony (R), następnie próbujemy go zaktualizować (U) i znów odczytać czy dane zostały zaktualizowane, a na końcu usunąć (D) i określić czy rzeczywiście został usunięty (R).
 
Kilka innych pozytywnych scenariuszy, które można sobie wyobrazić:

  • CRUU – wielokrotna aktualizacja danych,
  • CRR – wielokrotne odczytanie danych,
  • CD – pomyłkowe wpisanie danych i ich usunięcie,
  • itp.

Wśród ciekawych scenariuszy z potencjałem na znalezienie defektów może być np.:

  • CC – próba stworzenia użytkowników z identycznymi danymi,
  • CDC – próba stworzenia użytkownika, jego usunięcie i założenie konta na takie same dane,
  • CDR – oczytanie nieistniejących danych,
  • CDD – próba usunięcia tego co zostało już usunięte,
  • CURC – stworzenie użytkownika następnie aktualizacja danych i próba stworzenia użytkownika o danych początkowych,
  • itp.

Pamiętajmy, że takie scenariusze możemy mnożyć i wydłużać w nieskończoność, np. poprzez dodawanie kolejnych operacji na danych CRUDCURURDCRUD… W definiowaniu scenariuszy warto wcześniej rozpoznać kontekst systemu i określić, co jest realnie możliwe i prawdopodobne.

CRUD samo w sobie nie jest techniką. Wspiera jedynie inne techniki, takie jak techniki testujące dane czy funkcje wg klasyfikacji Technik testowania 2.0.

Źródła:
https://pl.wikipedia.org/wiki/CRUD
https://testerzy.pl/newsflash/testowanie-crud
https://testerzy.pl/artykuly/techniki-projektowania-testow
https://testerzy.pl/baza-wiedzy/artykuly/techniki-testowania-20