/ / Testowanie oprogramowania - proces wykrywania błędów w oprogramowaniu

Testowanie oprogramowania - proces wykrywania błędów w oprogramowaniu

Podczas tworzenia oprogramowaniaduża część procesu produkcyjnego opiera się na testowaniu oprogramowania. Omówimy, co to jest i jak takie działanie jest wykonywane w tym artykule.

Co nazywa się testowaniem?

testowanie oprogramowania

Rozumiemy przez to proces, podczas któregouruchomione oprogramowanie do wykrywania miejsc nieprawidłowego działania kodu. Aby osiągnąć najlepszy wynik, celowo konstruowane są trudne zestawy danych wejściowych. Głównym celem inspektora jest stworzenie optymalnych możliwości awarii oprogramowania. Chociaż czasami testowanie opracowanego programu można uprościć do zwykłego testu wydajności i wydajności funkcji. To oszczędza czas, ale często towarzyszy mu niewiarygodność oprogramowania, niezadowolenie użytkowników i tak dalej.

Skuteczność

Jak dobrze i szybko znajdowane są błędy,znacząco wpływa na koszt i czas tworzenia oprogramowania o wymaganej jakości. Czyli pomimo tego, że testerzy otrzymują kilkakrotnie niższe pensje niż programiści, koszt ich usług sięga zwykle 30-40% kosztu całego projektu. Wynika to z wielkości personelu, ponieważ znalezienie błędu jest nietypowym i dość trudnym procesem. Ale nawet jeśli oprogramowanie przeszło solidną liczbę testów, nie ma 100% gwarancji, że nie będzie żadnych błędów. Po prostu nie wiadomo, kiedy się pojawią. Aby zachęcić testerów do wyboru typów testów, które z większym prawdopodobieństwem znajdą błąd, stosowane są różne zachęty, zarówno moralne, jak i materialne.

Podejście do pracy

testy komputerowe

Optymalna sytuacja to kiedywdrażane są różne mechanizmy, które zapewniają, że od samego początku w oprogramowaniu nie będzie błędów. W tym celu należy zadbać o kompetentny projekt architektury, jasne przypisanie techniczne, a także ważne jest, aby nie dokonywać korekt połączenia, gdy prace nad projektem już się rozpoczęły. W takim przypadku tester staje przed zadaniem znalezienia i określenia niewielkiej liczby błędów, które pozostają w wyniku końcowym. Pozwoli to zaoszczędzić czas i pieniądze.

Co to jest test?

To ważny aspekt działalności.audytora, który jest niezbędny do skutecznego zidentyfikowania braków w kodzie programu. Są potrzebne do kontroli poprawności aplikacji. Co obejmuje test? Zawiera dane początkowe i wartości, które należy uzyskać jako końcowe (lub pośrednie). Aby skuteczniej identyfikować problemy i niespójności, testy należy pisać po opracowaniu algorytmu, ale nie rozpoczęto programowania. Ponadto przy obliczaniu wymaganych danych pożądane jest stosowanie kilku podejść. W takim przypadku prawdopodobieństwo znalezienia błędu wzrasta ze względu na to, że można zbadać kod z innego punktu widzenia. Kompleksowe testy powinny zapewnić weryfikację efektów zewnętrznych gotowego oprogramowania, a także algorytmów jego działania. Szczególnie interesujące są przypadki ograniczone i zdegenerowane. Tak więc w praktyce czynności z błędami często można odkryć, że cykl działa o jeden raz mniej lub więcej niż planowano. Ważne jest również przetestowanie komputera, dzięki czemu można sprawdzić zgodność z pożądanym wynikiem na różnych maszynach. Ma to na celu zapewnienie, że oprogramowanie będzie działać na wszystkich komputerach. Ponadto testowanie komputera, na którym będzie wykonywany rozwój, jest ważne podczas tworzenia rozwoju wieloplatformowego.

Sztuka znajdowania błędów

testowanie przez

Programy często mają na celu pracę z ogromnymtablica danych. Czy naprawdę konieczne jest stworzenie go w całości? Nie. Praktyka „miniaturyzacji” programu stała się powszechna. W takim przypadku następuje rozsądne zmniejszenie ilości danych w porównaniu z tym, co powinno być wykorzystane. Weźmy przykład: istnieje program, który tworzy macierz 50x50. Innymi słowy, musisz ręcznie wprowadzić 2500 tysięcy wartości. Jest to oczywiście możliwe, ale zajmie to bardzo dużo czasu. Aby jednak sprawdzić wydajność, oprogramowanie otrzymuje matrycę o wymiarach 5x5. Aby to zrobić, musisz wprowadzić już 25 wartości. Jeśli w tym przypadku obserwuje się normalną, bezbłędną pracę, oznacza to, że wszystko jest w porządku. Chociaż i tu są pułapki, które polegają na tym, że w trakcie miniaturyzacji dochodzi do sytuacji, w wyniku której zmiany stają się niejawne i chwilowo zanikają. Jest to również bardzo rzadkie, ale nadal zdarza się, że pojawiają się nowe błędy.

Realizowane cele

Testowanie oprogramowania nie jest łatwe z powodufakt, że proces ten nie daje się w pełni sformalizować. Duże programy prawie nigdy nie mają takiego odniesienia, jakiego potrzebują. Dlatego też jako wskazówkę wykorzystuje się szereg danych pośrednich, które jednak nie mogą w pełni odzwierciedlać cech i funkcji opracowań oprogramowania, które są debugowane. Ponadto muszą być tak dobrane, aby prawidłowy wynik został obliczony jeszcze przed testowaniem oprogramowania. Jeśli nie zostanie to zrobione z wyprzedzeniem, istnieje pokusa, aby rozważyć wszystko w przybliżeniu, a jeśli wynik maszyny mieści się w założonym zakresie, zostanie podjęta błędna decyzja, że ​​wszystko jest w porządku.

Sprawdzenie w różnych warunkach

oprogramowanie

Z reguły programy są testowane w formacieobjętości, które są niezbędne do minimalnej weryfikacji funkcjonalności w ograniczonym zakresie. Czynności wykonywane są ze zmianą parametrów, a także warunków ich pracy. Proces testowania można podzielić na trzy etapy:

  • Sprawdzanie w normalnych warunkach. W takim przypadku testowana jest główna funkcjonalność opracowanego oprogramowania. Wynik powinien być zgodny z oczekiwaniami.
  • Kontrola awaryjna.W takich przypadkach zakłada się otrzymanie danych o granicach, które mogą negatywnie wpłynąć na wydajność utworzonego oprogramowania. Jako przykład możemy przytoczyć prace z bardzo dużymi lub małymi liczbami lub ogólnie całkowity brak otrzymanych informacji.
  • Sprawdzanie wyjątkowych sytuacji.Polega na wykorzystaniu danych, które nie są przetwarzane. W takich sytuacjach bardzo źle jest, gdy oprogramowanie uzna je za odpowiednie do obliczeń i daje wiarygodny wynik. Należy zadbać o odrzucenie wszelkich danych, których nie można poprawnie przetworzyć w takich przypadkach. Konieczne jest również zapewnienie poinformowania o tym użytkownika.

Testowanie oprogramowania: rodzaje

błąd aplikacji

Twórz oprogramowanie bez błędówbardzo trudne. Zajmuje to dużo czasu. Aby uzyskać dobry produkt, często stosuje się dwa rodzaje testów: „Alfa” i „Beta”. Czym oni są? Kiedy mówią o testach alfa, mają na myśli test, który jest przeprowadzany przez samych programistów w środowisku „laboratoryjnym”. To ostatni etap weryfikacji przed udostępnieniem programu użytkownikom końcowym. Dlatego programiści starają się rozwinąć maksymalnie. W celu ułatwienia obsługi dane mogą być rejestrowane w celu utworzenia historii problemów i poprawek. Testy beta rozumiane są jako dostarczanie oprogramowania ograniczonej liczbie użytkowników, aby mogli korzystać z programu i identyfikować pominięte błędy. Osobliwością w tym przypadku jest to, że oprogramowanie jest często używane niezgodnie z jego przeznaczeniem. Dzięki temu usterki zostaną wykryte tam, gdzie wcześniej nic nie zostało zauważone. Jest to całkiem normalne i nie ma się czym martwić.

Zakończenie testów

Jeśli poprzednie kroki zostały pomyślnie zakończone, topozostaje przeprowadzić test akceptacyjny. W tym przypadku staje się to zwykłą formalnością. Ta kontrola potwierdza, że ​​nie znaleziono żadnych dodatkowych problemów i oprogramowanie może zostać wprowadzone na rynek. Im ważniejszy jest wynik końcowy, tym dokładniej należy przeprowadzić kontrolę. Konieczne jest zapewnienie pomyślnego zakończenia wszystkich etapów. Tak ogólnie wygląda proces testowania. Przejdźmy teraz do szczegółów technicznych i porozmawiajmy o przydatnych narzędziach, takich jak programy testowe. Czym one są i kiedy są używane?

Testowanie automatyczne

testowanie opracowanego programu

Wcześniej uważano, że analiza dynamicznaopracowane oprogramowanie jest zbyt ciężkie, co jest nieskuteczne w wykrywaniu defektów. Jednak ze względu na rosnącą złożoność i liczbę programów pojawił się przeciwny pogląd. Testy automatyczne są stosowane tam, gdzie zdrowie i bezpieczeństwo są najważniejszymi priorytetami. I muszą być dla każdego wejścia. Przykłady programów, dla których takie testy są odpowiednie, obejmują: protokoły sieciowe, serwer WWW, sandboxing. Następnie przyjrzymy się kilku próbkom, które można wykorzystać do takich działań. Jeśli interesują Cię bezpłatne programy testowe, to wśród nich dość trudno jest znaleźć wysokiej jakości. Istnieją jednak zhakowane „pirackie” wersje sprawdzonych projektów, więc możesz skorzystać z ich usług.

Lawina

To narzędzie pomaga wykryć usterki,zaliczenie testów programów w trybie analizy dynamicznej. Zbiera dane i analizuje ślad wykonania opracowanego obiektu. Tester jest przedstawiany z zestawem wejść, które powodują błąd lub omijają zestaw istniejących ograniczeń. Ze względu na obecność dobrego algorytmu weryfikacji opracowywanych jest wiele możliwych sytuacji. Program otrzymuje różne zestawy danych wejściowych, które pozwalają zasymulować znaczną liczbę sytuacji i stworzyć takie warunki, kiedy najbardziej prawdopodobne jest wystąpienie awarii. Ważną zaletą programu jest wykorzystanie metryk heurystycznych. Jeśli wystąpi problem, istnieje duże prawdopodobieństwo błędu aplikacji. Ale ten program ma ograniczenia, takie jak sprawdzanie tylko jednego zaznaczonego gniazda wejściowego lub pliku. Podczas wykonywania operacji, takiej jak testowanie programów, będzie zawierał szczegółowe informacje o występowaniu problemów z zerowymi wskaźnikami, nieskończonych pętlach, nieprawidłowych adresach lub awariach spowodowanych użyciem bibliotek. Oczywiście nie jest to pełna lista wykrytych błędów, a jedynie typowe przykłady. Niestety programiści będą musieli naprawić niedociągnięcia - automatyczne narzędzia nie nadają się do tych celów.

KLEE

programy testowe

To dobry program do testowania pamięci.Może przechwycić około 50 wywołań systemowych i dużą liczbę procesów wirtualnych, wykonując w ten sposób równolegle i oddzielnie. Generalnie jednak program nie wyszukuje pojedynczych podejrzanych miejsc, ale przetwarza maksymalną możliwą ilość kodu i analizuje wykorzystywane ścieżki transmisji danych. Z tego powodu czas testowania programu zależy od wielkości obiektu. Podczas weryfikacji postawiono na symboliczne procesy. Są jednym z możliwych sposobów wykonywania zadań w sprawdzanym programie. Dzięki równoległej pracy możliwa jest analiza dużej liczby wariantów badanej aplikacji. Dla każdej ścieżki, po zakończeniu jej testowania, zapisywane są zestawy danych wejściowych, z których rozpoczął się test. Należy zauważyć, że programy testujące za pomocą KLEE pomagają zidentyfikować dużą liczbę odchyleń, których nie powinno tam być. Potrafi znaleźć problemy nawet w aplikacjach, które były rozwijane od dziesięcioleci.

Podobało mi się:
0
Popularne posty
Duchowy rozwój
Jedzenie
tak