Modularno testiranje

тестирање појединачних јединица изворног кода у програмирању

U programiranju, modularno testiranje (engl. Unit testing) je metoda testiranja softvera kojom se pojedinačne jedinice izvornog koda, skupovi jednog ili više modula računarskog programa sa pripadajućim kontrolnim podacima, postupcima upotrebe i operativnim procedurama, testiraju kako bi se utvrdilo da li su pogodne za upotrebu.[1]

Jedinstveni testovi su obično automatizovani testovi koje programeri softvera pišu i izvode kako bi osigurali da deo aplikacije (poznat kao „jedinica”) ispunjava zadati dizajn i ponaša se kako je predviđeno.[2] U proceduralnom programiranju jedinica može biti čitav modul, ali je to češće pojedinačna funkcija ili postupak. U objektno orijentisanom programiranju jedinica je često čitav interfejs, poput klase, ali može biti i pojedinačna metoda.[3] Ako se najpre napišu testovi za najmanje jedinice, a zatim složena ponašanja između njih, možete izgraditi sveobuhvatne testove za složene primene.

Primer

uredi

Ovo su testni slučajevi u Javi koji specificiraju brojne elemente implementacije. Prvo, mora postojati interfejs koji se zove Adder i klasa implementacije sa konstruktorom koji se zove AdderImpl. Dalje, Adder interfejs treba da ima metodu koja se zove add, sa dva parametra koji su celi brojevi, sa povratnom vrednošću koja je takođe celi broj. Takođe određuje ponašanje ove metode za mali raspon vrednosti u toku brojnih metoda ispitivanja.

import static org.junit.Assert.*;

import org.junit.Test;

public class TestAdder {

  @Test
  public void testSumPositiveNumbersOneAndOne() {
    Adder adder = new AdderImpl();
    assert(adder.add(1, 1) == 2);
  }

  // да ли може сабрати два позитивна броја: 1 и 2?
  @Test
  public void testSumPositiveNumbersOneAndTwo() {
    Adder adder = new AdderImpl();
    assert(adder.add(1, 2) == 3);
  }

  // да ли може сабрати два позитивна броја: 2 и 2?
  @Test
  public void testSumPositiveNumbersTwoAndTwo() {
    Adder adder = new AdderImpl();
    assert(adder.add(2, 2) == 4);
  }

  // да ли је нула неутрална?
  @Test
  public void testSumZeroNeutral() {
    Adder adder = new AdderImpl();
    assert(adder.add(0, 0) == 0);
  }

  // да ли може сабрати два негативна броја: -1 и -2?
  @Test
  public void testSumNegativeNumbers() {
    Adder adder = new AdderImpl();
    assert(adder.add(-1, -2) == -3);
  }

  // да ли може сабрати позитиван и негативан број?
  @Test
  public void testSumPositiveAndNegative() {
    Adder adder = new AdderImpl();
    assert(adder.add(-1, 1) == 0);
  }

  // шта се дешава са великим бројевима?
  @Test
  public void testSumLargeNumbers() {
    Adder adder = new AdderImpl();
    assert(adder.add(1234, 988) == 2222);
  }

}

U ovom slučaju, modularni testovi, prvi napisani, deluju kao dizajnerski dokument u kojem se navode oblici i ponašanje željenog rešenja, ali ne i detalji implementacije koji su ostavljeni programeru. Prateći praksu „uradi najjednostavniju stvar koja bi mogla da funkcioniše“, ispod je prikazano najlakše rešenje koje će proći probni test.

interface Adder {
  int add(int a, int b);
}
class AdderImpl implements Adder {
  public int add(int a, int b) {
    return a + b;
  }
}

Reference

uredi
  1. ^ Kolawa, Adam; Huizinga, Dorota (2007). Automated Defect Prevention: Best Practices in Software Management. Wiley-IEEE Computer Society Press. str. 75. ISBN 978-0-470-04212-0. 
  2. ^ Hamill, Paul (2004). Unit Test Frameworks: Tools for High-Quality Software Development (na jeziku: engleski). "O'Reilly Media, Inc.". ISBN 9780596552817. Pristupljeno 3. 6. 2019. 
  3. ^ Xie, Tao. „Towards a Framework for Differential Unit Testing of Object-Oriented Programs” (PDF). Arhivirano iz originala (PDF) 23. 07. 2012. g. Pristupljeno 23. 7. 2012. 

Spoljašnje veze

uredi