Oprogramowanie przed oddaniem dla użytkownika końcowego musi zostać dokładnie sprawdzone, pod względem niezawodności działania. Dzięki temu można się upewnić iż działa ono bez problemów. Możemy wyobrazić sobie nieprawidłowo działają cy program w bankowości, który nieprawidłowo liczy kwoty rat kredytowych.
Czasem są to bardzo małe i prawie niezauważane problemy, przykładowo związane z zaokrąglaniem liczb. Dlatego też testowanie musi być bardzo dokładne, aby nie narazić naszych klientów na stratę. Po przeprowadzeniu różnych testów ważne jest sprawienie, czy aplikacja działa poprawnie, i użytkownik końcowy nie będzie miał z nią problemu. Testy użyteczności stały się obecnie istotną częścią każdego projektu, powinno sprawdzić się wiele różnych czynników poczynając od szaty graficznej, intuicyjnej obsługi, buttonów. Wszystko musi być przejrzyste, aby użytkownik mógł intuicyjnie obsługiwać oprogramowanie. Jeżeli nowe oprogramowanie ma być częścią innego systemy, warto aby miało taki sam wygląd wizualny jak dotychczas używany program. Z pewnością powinno uwzględnić się przetestowanie oprogramowania bez użycia zautomatyzowanego narzędzia lub skryptu. W tym przypadku tester przejmuje rolę użytkownika końcowego i bada oprogramowanie w celu wykrycia nieoczekiwanego zachowania lub błędu. Istnieją różne etapy ręcznego testowania, takie jak testy jednostkowe, testy integracji, testy systemu i testy akceptacji użytkownika.
Testerzy używają planu testów, przypadków testowych lub scenariuszy testowych do testowania oprogramowania w celu zapewnienia kompletności testu.
Oczywiście konieczne są testy aplikacji mobilnych, które działają na systemach Android i iOS. Posiadają one swoją charakterystykę, należy zwrócić uwagę na prawidłowe wyświetlanie na różnych urządzeniach mobilnych. Mogą być to zarówno telefony komórkowe, jak również tablety. Dokładnie badamy testowany system, opracowujemy plan testów i definiujemy przypadki testowe do testowania ręcznego. Bardzo ważne jest określenie minimalnej liczby testów weryfikujących dane oprogramowanie.