Matematyk testerem oprogramowania?

Wiele osób, które są związane zawodowo z testowaniem lub zapewnieniem jakości oprogramowania nie posiada wykształcenia informatycznego. To wcale nie oznacza, że osoby te nie posiadają wiedzy lub są niekompetentne do wykonywania tego zawodu. Jest wręcz przeciwnie.

 

W Internecie można znaleźć artykuły o tym, jak pewna osoba, która ukończyła nawet kierunek humanistyczny została testerem oprogramowania i świetnie sobie radzi. Okazuje się, że w wielu przypadkach wystarczy komuś dać szansę pracy jako tester i niezależnie od wykształcenia dobrze się to kończy dla obu stron. Informatyka sama dla siebie nie jest użyteczna, analogicznie jak matematyka. Obie te dyscypliny nauki muszą mieć swoje praktyczne zastosowanie, aby ludzie docenili ich ogromną wartość. Wiele osób testujących oprogramowanie ukończyło właśnie matematykę, a wykształcenie w tym kierunku ma wiele zalet dla testera.

 

1. Kierunki matematyczne na uczelniach wyższych

Uczelnie wyższe w Polsce na ogół nie oferują takiego kierunku jak „czysta matematyka teoretyczna”. Byłby to kierunek uniwersytecki, a osoba, która by go ukończyła nie posiadałaby wiedzy na temat podstaw informatyki, ekonomii czy innych dziedzin. Najczęściej występujące kierunki matematyczne to:

  • zastosowania matematyki w ekonomii,
  • nauczanie matematyki,
  • programowanie matematyczne,
  • zastosowanie matematyki w finansach lub bankowości,
  • matematyka stosowana,
  • …inne zastosowania matematyki.

 

Program nauczania na uczelniach wyższych na kierunku matematyka przewiduje bardzo często takie zagadnienia jak:

  • bazy danych,
  • programowanie,
  • (niekiedy) sztuczna inteligencja,
  • matematyka dyskretna (w tym teoria grafów),
  • ekonomia,
  • algorytmy i struktury danych, itd.

 

Wobec tego osoba, która ukończyła matematykę na ogół posiada podstawy informatyki. W takim przypadku nie ma problemu, aby uznać, że ma się podstawy do zostania testerem oprogramowania. Potrzebne są jedynie chęci i silna wola doskonalenia zawodowego. Istnieje mnóstwo rodzajów oprogramowania, w którym wymagane jest myślenie analityczne, statystyka, dokonywanie pewnych analiz na liczbach lub zbiorach danych np. systemy ERP czy oprogramowanie dla banków.

 

2. Wpływ umiejętności matematycznych na testowanie oprogramowania

Matematyka jest sztuką wyciągania wniosków z przyjętych założeń lub powszechnie przyjętych aksjomatów, które są niepodważalne. Jeśli prowadzone rozumowanie matematyczne jest poprawne, to przy jasnych i konkretnych założeniach istnieje pewność otrzymania poprawnych oraz niepodważalnych wniosków. Jeśli w rozumowaniu jest jakakolwiek nieścisłość, to zaczynają się schody – gwarancji  poprawności przeprowadzonego rozumowania nie ma. Dlatego w matematyce kładziony jest olbrzymi nacisk na ścisłość (jasność) rozumowania. W utrzymaniu tej ścisłości pomaga formalizm logiczny oraz zapis matematyczny [2].

Osoba, która kończy matematykę, a chce zostać testerem oprogramowania, powinna na ogół posiadać takie atuty jak:

1. Umiejętności analitycznego myślenia.

Takie wymaganie bardzo często pojawia się podczas rekrutacji na stanowisko testera, czy inżyniera jakości w firmach programistycznych. Analityczne myślenie i rozwiązywanie problemów jest jedną z kompetencji leżących również u podstaw pracy analityka biznesowego, a często testerzy po kilku latach pracy decydują się na rozwój w kierunku analizy. W skład umiejętności analityka wchodzą m. in. [1]:

  • kreatywne myślenie,
  • podejmowanie decyzji,
  • uczenie się,
  • rozwiązywanie problemów,
  • myślenie systemowe,
  • myślenie koncepcyjne
  • myślenie wizualne.

Wszystkie te umiejętności mogą wynikać z pewnych cech matematyki.

2. Kreatywne myślenie. Podczas rozwiązywania zadań z różnych przedmiotów na kierunku matematyka, studenci napotykają różne problemy. Niekiedy zadanie polega na tym, aby wykazać pewną prawdę, gdzie nie używa się liczb, a korzysta się tylko z założeń, wcześniej udowodnionych prawd. Niekiedy trzeba samemu wymyślić sposób poprowadzenia fragmentu dowodu (takie przedmioty jak topologia, algebra, analiza rzeczywista, analiza funkcjonalna). Po rozwiązaniu dużej liczby zadań student uczy się kreatywnego myślenia.

3. Umiejętność tworzenia modeli matematycznych testowanego oprogramowania. W testowaniu istnieje taka strategia testowa jak analiza drzewa uszkodzeń. Bez wiedzy na temat prawdopodobieństwa, teorii mnogości nie jest możliwe zaprojektowanie drzewa usterek. Ogólnie da się zdefiniować wiele matematycznych modeli dla potrzeb testów – istnieje na ten temat sporo artykułów naukowych oraz popularno-naukowych np. na portalu testerzy.pl.

4. Myślenie systemowe. Chodzi tu o zrozumienie działania części składowych i ich wpływu na całość (np. wpływ ludzi, procesów, technologii na całą organizację) [1]. Jeśli przypomnimy sobie z matematyki funkcje wielu zmiennych albo zmianę przebiegu funkcji w zależności od zmiany jednego parametru przy stałych pozostałych parametrach, to taka sytuacja będzie analogiczna jak analiza testowanego systemu jako zbioru procesów, zmiennych, danych wejściowych i wyjściowych.

5. Testowanie zmiany stanów obiektu. W takim przypadku dobrze jest wykorzystać graf w celu analizy przepływu danych oraz zobrazowania następujących po sobie procesów – a to także matematyka.

6. Cierpliwość. Uczenie się matematyki tak, aby ją naprawdę dobrze zrozumieć, wymaga sporo cierpliwości oraz silnej woli. Niewielka część osób „czuje” matematykę w taki sposób, że nie ma problemów z dostrzeganiem analogii pomiędzy nowym materiałem, a materiałem, który jest już znany lub wyuczony. W celu osiągniecia takiej umiejętności student musi poświęcić sporo czasu na rozwiązanie problemów, które wymagają sporej dawki myślenia, natomiast samo rozwiązanie problemu da się napisać w kilku linijkach w zeszycie. Na studiach magisterskich rozwiązuje się właśnie takie zadania na takich przedmiotach jak topologia, analiza rzeczywista czy analiza funkcjonalna.

7. Testowanie aplikacji do obsługi finansów oraz gospodarki magazynowej. W takim przypadku ważne jest poprawne liczenie, wyznaczanie wartości brzegowych dla funkcji finansowych oraz testowanie poprawności zaokrąglania kwot (co może być dość problematyczne). Dobre przetestowanie tylko jednego dokumentu wymaga czasami wielu przypadków testowych, więc poza testowaniem liczb należy testy jakoś zoptymalizować, co na ogół wynika z ograniczeń czasu. Wymienione w tym podpunkcie cechy oprogramowania to także testowanie oparte na matematyce.

8. Analiza wartości brzegowych wejściowych oraz wyjściowych. Wartości brzegowe są związane z pewną matematyczną funkcją, która zachowuje się inaczej po przekroczeniu na granicy dwóch różnych argumentów na ogół (mogą zdarzyć się zbiory uporządkowane w sposób ciągły w teorii). To również element matematyki, który ma swoje początki już w szkole średniej.

9. Analiza tablicy decyzji. Tablice decyzji są dobrym rozwiązaniem w określaniu wymagań systemu zawierających warunki logiczne oraz dla udokumentowania wewnętrznej struktury systemu. Specyfikacja jest analizowana, a warunki i akcje systemu są identyfikowane. Warunki wejściowe i akcje są często deklarowane jako prawda lub fałsz. Tablica decyzji zawiera warunki rozpoczęcia, często kombinację prawdy i fałszu dla konkretnych danych wejściowych i reakcję dla każdej kombinacji warunków. Każda kolumna tabeli związana jest z zasadą biznesową, definiującą unikalną kombinację warunków, jakie wynikają z wykonania akcji powiązanej z zasadą [3]. Takie postępowanie jak analiza tablicy decyzji jest również czynnością wymagającą matematycznych umiejętności, ponieważ wymaga zastosowania logiki matematycznej oraz zdefiniowania pewnych przynależności czy relacji pomiędzy pewnymi akcjami w testowanym systemie informatycznym – a to również matematyka.

 

3. Podsumowanie

Celem napisania artykułu było przekonanie Czytelnika do tego, że niektóre rodzaje testów nie są możliwe do przeprowadzenia bez posiadania przez osobę testującą umiejętności matematycznych. Testowanie jest związane z matematyką bardziej, niż może się to wydawać na pierwszy rzut oka. Bardzo często w testowanym systemie mamy do czynienia z funkcjami, a te zostały wymyślone przez matematykę. Istnieje również bardzo dużo prac naukowych dotyczących testowania oprogramowania, które podparte są niebanalną matematyką.

 

Bibliografia

[3] http://www.testerzy.pl/artykuly/techniki-projektowania-testow

 

Autor: Marek Żukowicz

 

Pobierz artykuł jako PDF 

 

 

 

Najbliższe terminy szkoleń

 

15-16 stycznia - Wrocław

Automatyzacja testowania


22-24 stycznia - Poznań

ISTQB Poziom Podstawowy (Foundation Level)


25-26 stycznia - Wrocław

Dobry Przypadek Testowy - Laboratorium


26 stycznia - Katowice

Java dla testerów oprogramowania

 

Partnerzy

Narzędzia testerskie