AtomAnt küldte be időpontban

A tesztelői munkakör egyre jobban kezd kiszélesedni, és ezáltal egyre komplexebb és szerte ágazóbb tudással kell rendelkezni ezen a területen is, hogy lépést tartsunk a trendek által generált változásokkal. Így tehát manapság egyre inkább kezd az is elterjedni, hogy a unit test-eket a tesztelők írják, ismervén és értelmezve a kódbázist. Ahhoz, hogy egy szimpla unit test-et elkészítsünk mintaként, én a ChatGPT-t hívtam segítségül, hiszen, ha már van, és használhatónak tűnik, akkor miért ne könnyítsük meg vele a munkánkat. Ebben @crix kollégám volt segítségemre, aki egy esti beszélgetés kapcsán hívta fel a figyelmem arra, hogy erre is igen hasznos lehet a ChatGPT.

Tehát akkor nézzük is meg, hogy honnan indulunk. Megkértem a ChatGPT-t, hogy legyen kedves és készítsen egy buborék rendezést. Íme:

public static void bubbleSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // swap arr[j] and arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

Mi is történik itt? Van egy metódusunk, ami vár egy tömböt, amiben integer típusú értékek vannak. Majd buborék rendező algoritmust felhasználva emelkedő sorrendbe teszi az elemeket a tömbben.

Ez a metódus nem túl bonyolult, ellenben jó példa lehet, hogy miképpen írjunk unit test-eket erre. Ezt is a ChatGPT-re bíztam. Íme:

package com.example.demo;

import org.junit.Test;
import static org.junit.Assert.*;

public class BubbleSortTest {
    @Test
    public void testBubbleSort1() {
        int[] arr1 = {64, 34, 25, 12, 22, 11, 90};
        BubbleSort.bubbleSort(arr1);
        assertArrayEquals(new int[]{11, 12, 22, 25, 34, 64, 90}, arr1);
    }

    @Test
    public void testBubbleSort2() {
        int[] arr2 = {10, 20, 30, 40, 50};
        BubbleSort.bubbleSort(arr2);
        assertArrayEquals(new int[]{10, 20, 30, 40, 50}, arr2);
    }

    @Test
    public void testBubbleSort3() {
        int[] arr3 = {5, 4, 3, 2, 1};
        BubbleSort.bubbleSort(arr3);
        assertArrayEquals(new int[]{1, 2, 3, 4, 5}, arr3);
    }

    @Test
    public void testBubbleSort4() {
        int[] arr4 = {1, 2, 3, 4, 5};
        BubbleSort.bubbleSort(arr4);
        assertArrayEquals(new int[]{1, 2, 3, 4, 5}, arr4);
    }

    @Test
    public void testBubbleSort5() {
        int[] arr5 = {};
        BubbleSort.bubbleSort(arr5);
        assertArrayEquals(new int[]{}, arr5);
    }
}

Mi is történik itt? Minden Test-ben létrehozunk egy tömböt, amit átadunk a rendező algoritmusnak, és mivel mi tudjuk, hogy milyen eredményt várunk el, így azt hasonlítjuk össze azzal, amit a rendezés után kapunk.

--- Mock Server kicsit később ---