Czy weryfikacja i walidacja są częścią procesu testowania?

9

Opierając się na wielu źródłach, nie wierzę, że prosta definicja, że ​​celem testowania jest znalezienie jak największej liczby błędów - testujemy, aby upewnić się, że działa lub nie działa. Przykładem są następujące cele testowania z ISTQB:

  1. Sprawdź, czy (oprogramowanie) spełnia określone wymagania (myślę, że jest to weryfikacja)

  2. Wykazać, że (produkty programowe) są odpowiednie do celu (myślę, że to jest sprawdzanie poprawności)

  3. Wykryj wady

    Zgadzam się, że testowanie to weryfikacja, walidacja i wykrywanie wad. Czy to jest poprawne?

John V.
źródło
1
Pierwszą rzeczą, o której mówią książki o testowaniu, jest to, że „testowanie nie jest procesem wykazania, że ​​oprogramowanie działa poprawnie. Jest to proces znajdowania wad”. A książki przynoszą liczne powody, by zdefiniować takie testy. Dlatego weryfikacja polega raczej na znalezieniu oprogramowania, które nie spełnia wymagań.
superM
Zgodnie z definicją weryfikacja zapewnia spełnienie wymagań. W rzeczywistości książki definiują testowanie jako proces pomiaru jakości oprogramowania. Więc jeśli sprawdzasz, czy system działa (pozytywnie) z zamiarem sprawdzenia, czy działa, to nie testuje, ponieważ nie szukasz błędów? :) Na Wikipedii: Techniki testowe obejmują między innymi proces uruchamiania programu lub aplikacji z zamiarem znalezienia błędów oprogramowania
John V,
Myślę, że najlepszym sposobem na określenie granic testowania słów jest przetestowanie hipotezy. W takim przypadku próbujesz sprawdzić, czy w hipotezie nie ma błędów ani nieścisłości, to nie jest to samo, co sprawdzenie jej przydatności lub weryfikując jego przydatność, jest to jedynie przypadek zidentyfikowania całego zakresu jego zachowania, niezależnie od celu.
Jimmy Hoffa
Masz premię za „miłe pytanie” :)
Andrew,

Odpowiedzi:

1

Myślę, że dokładnie to rozumiesz.

  1. Weryfikacja i walidacja to różne rzeczy i są w rzeczywistości dość dobrze zdefiniowane. Chociaż nie podoba mi się ten dokument, ISO 9000ff jest bardzo istotny dla kontroli jakości i definiuje Weryfikację jako porównywanie produktu z jego wymaganiami i Walidację jako sprawdzanie, czy rzeczywiście odpowiada potrzebom klienta / użytkownika i wszyscy wiemy, że to może się różnić .

  2. Oba można zrobić poprzez testowanie. Weryfikacja doprowadziłaby do wygenerowania testów w postaci wymagań. Walidacja prowadzi do testu wykonanego przez Testy bez bezpośredniego odniesienia do wymagań. Myślę, że często nazywa się to testowaniem eksploracyjnym. Oczywiście muszą to zrobić ludzie z prawdziwym zrozumieniem rzeczywistych potrzeb użytkowników, więc testy alfa i beta przez prawdziwych użytkowników są oczywistymi opcjami.

  3. Teoretycznie wydaje mi się, że można argumentować, że cokolwiek objęte pierwszymi dwoma nie jest błędem, dlatego znalezienie błędów jako oddzielnego celu nie ma sensu. Ale myślę, że są rzeczy, których tak naprawdę nie można zweryfikować ani potwierdzić. Na przykład bezpieczeństwo: w jaki sposób weryfikujesz lub weryfikujesz, czy system oprogramowania jest bezpieczny przed atakami? Zamiast tego próbujesz znaleźć luki w zabezpieczeniach. To wyszukiwanie nie weryfikuje ani nie weryfikuje niczego, jeśli nie znajdzie problemów, ale znajdzie błędy, jeśli się powiedzie.

Jens Schauder
źródło
Problem polega na tym, że wiele źródeł wspomina, że ​​weryfikacja jest tylko statyczna, a weryfikacja dynamiczna. Jest bardzo zdezorientowany. Czym więc byłby test funkcjonalny? Powiedziałbym, że jest to dynamiczna weryfikacja.
Jan V
1
Jakie źródła stosują tę definicję weryfikacji i walidacji? Z drugiej strony nie znam żadnych jasnych i ogólnie uzgodnionych definicji wszystkiego, co kończy się testem. Więc tak naprawdę nie wiem, czym jest dla ciebie test funkcjonalny.
Jens Schauder
Cóż, np. ISO 12207 ogranicza testowanie tylko jako proces walidacji.
John V
3

Z Wikipedii: „... Innymi słowy, sprawdzanie poprawności gwarantuje, że produkt rzeczywiście spełnia potrzeby użytkownika , a specyfikacje były przede wszystkim prawidłowe , a weryfikacja zapewnia, że ​​produkt został zbudowany zgodnie z wymaganiami i specyfikacjami projektowymi Walidacja gwarantuje, że „zbudowałeś właściwą rzecz”. Weryfikacja gwarantuje, że „zbudowałeś ją poprawnie”. Walidacja potwierdza, że ​​produkt, jak przewidziano, spełni swoje przeznaczenie. ”

Nie można przetestować potrzeb użytkownika i sprawdzić, czy specyfikacje są prawidłowe za pomocą kodu. Tak więc sprawdzanie poprawności nie odbywa się.

Weryfikacja zakłada, że ​​twoje wymagania i projekt są poprawne, więc możesz to przetestować, pisząc kod (testowanie).

Mert Akcakaya
źródło
Nie zgodziłbym się - testowanie to nie tylko testowanie kodu, jest również testowanie dokumentacji itp. BTW, wikipedia mówi również: Testowanie oprogramowania można określić jako proces sprawdzania i weryfikacji, czy program / aplikacja / produkt. Sprawdzasz poprawność program przez jego wykonawcę i Investagion, czy tego właśnie chciał użytkownik.
John V
Właściwie masz rację. Proces testowania obejmuje również testy akceptacyjne, ale mówiłem o testach jednostkowych, integracyjnych i systemowych. Jeśli myślimy o procesie testowania jako całości, weryfikacja i weryfikacja odbywa się poprzez testowanie.
Mert Akcakaya,
1

W prawdziwym świecie testowanie to weryfikacja i walidacja oprogramowania, które spełnia jego wymagania (biznesowe / funkcjonalne / niefunkcjonalne). Ich celem jest ustalenie, czy oprogramowanie jest odpowiednie do określonego celu. Każde zachowanie, które nie spełnia wymagań aplikacji, jest wadą, której ważność będzie wymagać wyważenia przed ustaleniem, czy oprogramowanie jest odpowiednie do określonego celu.

Wady o niskiej istotności prawdopodobnie nie są przeszkodą w przekazywaniu oprogramowania do zastosowania typu produkcyjnego. Wysoka istotność może wymagać naprawy. W prawdziwym świecie całe oprogramowanie ma wady, niektóre mają problemy z kodowaniem, a inne wynikają z brakujących wymagań - których nie można przetestować, ponieważ nie można przetestować nieznanych wymagań.

Adam F.
źródło
1

Istnieje wiele definicji weryfikacji i walidacji. Wiele osób używa nawet tagu V&V do grupowania obu w jednym działaniu. Celem jest upewnienie się, że oprogramowanie robi właściwe rzeczy i czyni je właściwie. To, czy chodzi o sprawdzenie zgodności z wymaganiami, czy o znalezienie błędów, nie jest niezbędne na tym poziomie.

Testowanie jest jedną z wielu technik weryfikacji i walidacji, a nie drugą drogą. Przegląd kodu to kolejny, a formalna weryfikacja, z matematycznymi dowodami jeszcze jeden.

Niemniej jednak testy powinny być przeprowadzane w celu znalezienia błędów, a nie w celu sprawdzenia zgodności z wymogami.

Główna różnica leży w umyśle testera. O wiele łatwiej jest zbudować przypadek testowy pokazujący, że oprogramowanie działa zgodnie z przeznaczeniem (sprawdzanie zgodności), niż zbudować przypadek testowy pokazujący, że oprogramowanie nie działa (znajdowanie błędów).

Wielki tester jest pasjonatem łamania oprogramowania, a nie korzystania z niego w bezpieczny sposób.

mouviciel
źródło
dzięki, ale czy nie testujemy również, aby wykazać, że wymagania są spełnione? Dbamy o to, aby oprogramowanie działało (spełniało specyfikacje), a następnie staramy się znaleźć wady. Więc nie chodzi tylko o znalezienie błędów. Pamiętam książkę, która mówi, że głównym celem testowania jest pomiar jakości, a nie poszukiwanie błędów. Jeśli chodzi o twój pierwszy punkt, przegląd kodu, dowód matematyczny itp. Również testuje i nazywa się to statycznym.
John V
Wady lub błędy występują w przeciwieństwie do wymagań. Charakter pracy jest identyczny. To tylko różnica w sposobie myślenia testera o poprawie jego wydajności. Jeśli chodzi o mój pierwszy punkt, istnieje wiele definicji wszystkich terminów używanych w sprawdzaniu poprawności oprogramowania (a pierwszym krokiem przy dołączaniu do zespołu jest zdobycie lokalnego dialektu w tym zespole), ale większość ludzi zgadza się, że testowanie jest tylko dynamiczne technika. testowanie statyczne jest oksymoronem lub odnosi się do innej techniki niedaleko od recenzji, w której kod jest wykonywany w umyśle „testera”, a nie przez komputer.
mouviciel
mouviciel: oxymoron? Nie sądzę, aby testowanie statyczne oznaczało sprawdzenie możliwych wad bez wykonania, co jest w pełni możliwe (problemy z wymaganiami, wady projektowe ..). Sprawdzanie wymagań i sprawdzanie błędów to nie to samo: powinieneś przetestować, czy pole może zawierać wartość int32. To testowanie, że to działa. Następnie możesz spróbować wprowadzić wyższe wartości, czyli testowanie błędów.
John V,
1

Zobaczmy to z praktycznego punktu widzenia. Do testowania musisz zdefiniować przypadki testowe. Zazwyczaj przypadki testowe definiuje się zgodnie z określonymi wymaganiami i powinny one obejmować przypadki „szczęśliwego dnia” oraz „przypadki skrajne” - szczególnie te ostatnie są często definiowane z zamiarem złamania oprogramowania. Gdy niektóre z twoich testów zakończą się niepowodzeniem, pokazują błędy / wady. Kiedy masz rozsądną liczbę przypadków testowych dla każdego wymagania i wszystkie testy są udane, możesz nie w pełni udowodnić, że wszystkie wymagania są spełnione, ale zwiększyłeś prawdopodobieństwo tego, a zatem dokonałeś pewnej weryfikacji.

Tak więc w tej części pytania znalezienie błędów i weryfikacja mogą być tylko dwiema stronami tego samego procesu:

  • testy zakończone niepowodzeniem: wykryte wady

  • testy zaliczone: weryfikacja wykonana (przynajmniej do pewnego stopnia, jeśli dostarczysz wystarczającą liczbę i odpowiednie testy)

W odniesieniu do walidacji: jak wskazał @Mert, walidacji można dokonać poprzez testy akceptacyjne, ale nie przez inne formy testowania. Tak więc testowanie zasadniczo nie powoduje żadnej walidacji, tylko gdy jest wykonywane jako test akceptacyjny, przez niektórych potencjalnych użytkowników.

Doktor Brown
źródło
0

Wszystko zależy od twojej definicji „weryfikacji”. Na przykład formalna weryfikacja zwykle nie jest przeprowadzana przez zespół ds. Kontroli jakości, ale jest obowiązkiem programistów. Prawie nikt nie dokonuje formalnej weryfikacji ze względu na związane z tym wysokie koszty (luka w wiedzy i potrzebne zasoby).

Joeri Sebrechts
źródło
0

Testowanie oprogramowania to nie to samo co kontrola jakości. Dobrze rozumiesz. Ogólnie testy oprogramowania obejmują wiele etapów (dym, jednostka, regresja, integracja, akceptacja użytkownika itp.).

Tak więc zapewnienie, że oprogramowanie działa zgodnie z wymaganiami, jest głównym celem QA (specjalista ds. Zapewnienia jakości - inaczej lata temu nazywano go po prostu testerami). To jednak nie tylko testowanie . Kontrola jakości zapewnia, że ​​wdrożony jest odpowiedni zestaw procesów do przeprowadzania kontroli jakości danego produktu lub przynajmniej jest on wprowadzany w fazę projektową projektu.

Dlatego idealnie byłoby oczekiwać, że twoja kontrola jakości zweryfikuje aplikację pod kątem zestawu wymagań, a nie tylko spróbujesz przetestować ją przez uszkodzenie oprogramowania i znajdowanie wad.

Jusubow
źródło
Kontrola jakości NIE JEST tylko testowaniem. Kontrola jakości dotyczy jakości procesów rozwojowych.
John V
Kontrola jakości weryfikuje aplikację pod kątem zestawu wymagań.
Yusubov