{"id":525,"date":"2021-04-11T18:21:43","date_gmt":"2021-04-11T18:21:43","guid":{"rendered":"https:\/\/testeroprogramowania.pl\/?p=525"},"modified":"2021-04-11T18:34:53","modified_gmt":"2021-04-11T18:34:53","slug":"testy-jednostkowe","status":"publish","type":"post","link":"https:\/\/testeroprogramowania.pl\/index.php\/2021\/04\/11\/testy-jednostkowe\/","title":{"rendered":"Testy jednostkowe"},"content":{"rendered":"\n<p>Na rozmowach rekrutacyjnych na testera manualnego cz\u0119sto s\u0142ysza\u0142em pytanie o piramid\u0119 test\u00f3w. O ile wymienienie poszczeg\u00f3lnych poziom\u00f3w test\u00f3w nie stanowi dla wi\u0119kszo\u015bci kandydat\u00f3w wi\u0119kszego problemu to dok\u0142adne wyja\u015bnienie  poszczeg\u00f3lnych poziom\u00f3w nie jest ju\u017c takie trywialne. W tym wpisie postaram si\u0119 przybli\u017cy\u0107 testy jednostkowe.<\/p>\n\n\n\n<p style=\"text-align:center\">.<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" class=\"wp-image-549\" style=\"width: 800px;\" src=\"https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920.jpg\" alt=\"\" srcset=\"https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920.jpg 1920w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920-150x150.jpg 150w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920-300x300.jpg 300w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920-768x768.jpg 768w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920-1024x1024.jpg 1024w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/04\/matrix-1013611_1920-510x510.jpg 510w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aplikacja <\/h2>\n\n\n\n<p>Testy b\u0119dziemy przeprowadza\u0107 na kalkulatorze. Musimy sprawdzi\u0107 czy kalkulator prawid\u0142owo wykonuje jedn\u0105 z podstawowych operacji matematycznych, a mianowicie dzielenie. Oczywi\u015bcie mogliby\u015bmy to zrobi\u0107 fizycznie klikaj\u0105c na przyciski i weryfikuj\u0105c czy wynik na ekranie jest poprawny. Naszym celem jest jednak dodanie testu jednostkowego, kt\u00f3ry b\u0119dzie testowa\u0142 ma\u0142y wycinek kodu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testowana metoda<\/h2>\n\n\n\n<p style=\"text-align:left\">Nasza metoda posiada dwa parametry liczbowe. Wewn\u0105trz metody dzielimy podane liczby korzystaj\u0105c z operatora matematycznego &#8222;\/&#8221; i zwracamy warto\u015b\u0107 dzielenia z naszej metody.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">public class Calculator {\n\n    public int div (int firstNumber, int secondNumber) {\n        return  firstNumber\/secondNumber;\n    }\n\/\/ inne metody\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pierwszy test<\/h2>\n\n\n\n<p>W naszych testach b\u0119dziemy sprawdzali czy metoda div() dzia\u0142a poprawnie. Spr\u00f3bujemy kilkukrotnie j\u0105 wywo\u0142a\u0107 dla r\u00f3\u017cnych warto\u015bci liczbowych i zobaczymy czy metoda zachowa si\u0119 tak jak tego oczekujemy. Nasz test weryfikuje tylko dzia\u0142anie drobnego fragmentu kodu, kt\u00f3ry p\u00f3\u017aniej b\u0119dzie stanowi\u0142 cz\u0119\u015b\u0107 wi\u0119kszego programu i b\u0119dzie wywo\u0142ywany po tym jak u\u017cytkownik wybierze operacj\u0119 dzielenia i poda dwie warto\u015bci liczbowe. Pierwszy test sprawdza jaki wynik zwr\u00f3ci metoda div() gdy przeka\u017cemy jej warto\u015bci 10 i 5. Oczekiwany rezultat w tym przypadku to 2, poniewa\u017c 10 : 5 = 2. W Javie taki test mo\u017cemy zapisa\u0107 nast\u0119puj\u0105co: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@Test\npublic void divTest() {\n    Calculator calculator = new Calculator();\n    Assert.<em>assertEquals<\/em>(calculator.div(10,5),2);\n}<\/pre>\n\n\n\n<p>Pierwsza linijka wewn\u0105trz metody to stworzenie klasy kalkulatora w kt\u00f3rej znajduje si\u0119 metoda, kt\u00f3r\u0105 chcemy testowa\u0107. Druga linika to sprawdzenie (asercja) czy wynik metody div (10,5) jest r\u00f3wny 2. Po uruchomieniu test ko\u0144czy si\u0119 sukcesem. Metoda dzia\u0142a dla powy\u017cszych danych testowych. <br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Drugi test<\/h2>\n\n\n\n<p>Kolejny test przeprowadzimy dla dzielnika, kt\u00f3ry jest liczb\u0105 zmiennoprzecinkow\u0105. Spr\u00f3bujemy zweryfikowa\u0107 dzia\u0142anie metody div() dla warto\u015bci 10 i 4. Oczekiwany rezultat to 2.5. Test dla przedstawionych warto\u015bci mo\u017ce wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@Test\npublic void divTest() {\n    Calculator calculator = new Calculator();\n    Assert.<em>assertEquals<\/em>(calculator.div(10,4),2.5);\n}\n<\/pre>\n\n\n\n<p>Dla powy\u017cszych danych testowych dostaniemy b\u0142\u0105d. Nasza metoda zwr\u00f3ci warto\u015b\u0107 2 co nie jest oczekiwanym rezultatem. Odkryli\u015bmy b\u0142\u0105d w Naszym programie i teraz mo\u017cemy zastanowi\u0107 si\u0119 z czego on wynika. Po przeanalizowniu metody div zauwa\u017camy, \u017ce korzysta ona z typu <strong>int<\/strong>, kt\u00f3ry jest sta\u0142oprzecinkowy tzn. nie posiada \u017cadnych miejsc po przecinku. Aby kalkulator zacz\u0105\u0142 obs\u0142ugiwa\u0107 liczby zmiennoprzecinkowe musimy zmodyfikowa\u0107 metod\u0119 div i zmieni\u0107 typ danych na float:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">public float div (float firstNumber, float secondNumber) {\n    return  firstNumber\/secondNumber;\n}<\/pre>\n\n\n\n<p>Teraz poni\u017cszy test powinien zako\u0144czy\u0107 si\u0119 sukcesem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@Test\npublic void divTest() {\n    Calculator calculator = new Calculator();\n    Assert.<em>assertEquals<\/em>(calculator.div(10,4),2.5f);\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>W tym wpisie na prostym przyk\u0142adzie przedstawi\u0142em ide\u0119 test\u00f3w jednostkowych. Uda\u0142o nam si\u0119 znale\u017a\u0107 b\u0142\u0105d w  bardzo ma\u0142ym fragmencie kodu, naprawi\u0107 go i zweryfikowa\u0107, \u017ce po zmianach wszystko dzia\u0142a tak jak tego oczekujemy.  Warto zapami\u0119ta\u0107 ten przyk\u0142ad, aby w \u0142atwy spos\u00f3b wyt\u0142umaczy\u0107 czym s\u0105 testy jednostkowe podczas rozmowy rekrutacyjnej.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na rozmowach rekrutacyjnych na testera manualnego cz\u0119sto s\u0142ysza\u0142em pytanie o piramid\u0119 test\u00f3w. O ile wymienienie poszczeg\u00f3lnych poziom\u00f3w test\u00f3w nie stanowi dla wi\u0119kszo\u015bci kandydat\u00f3w wi\u0119kszego problemu to dok\u0142adne wyja\u015bnienie poszczeg\u00f3lnych poziom\u00f3w nie jest ju\u017c takie trywialne. W tym wpisie postaram si\u0119 przybli\u017cy\u0107 testy jednostkowe. . Aplikacja Testy b\u0119dziemy przeprowadza\u0107 na kalkulatorze. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-525","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/comments?post=525"}],"version-history":[{"count":3,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/525\/revisions"}],"predecessor-version":[{"id":551,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/525\/revisions\/551"}],"wp:attachment":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/media?parent=525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/categories?post=525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/tags?post=525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}