آزمایش واحد یا همان یونیت تست یک روش تست نرم افزار است که با استفاده از آن واحدها یا بخش های کوچک کد منبع، مجموعه ای از یک یا چند ماژول از برنامه همراه با داده های مربوطه  ،تست و ارزیابی میشوند . یونیت تست کد کوتاهی است که توسط برنامه نویسان یا گاهی اوقات توسط تستر ها نوشته میشود .
هدف در آزمایش واحد، جداسازی یک واحد و تأیید درستی عملکرد آن است .یونیت تست ، مشکلات اولیه را در چرخه توسعه نرم افزار پیدا می کند.
به صورت مستقیم، می توان یک واحد را به عنوان کوچکترین بخش آزمایشی یک برنامه انتخاب کرد ، یک آبجکت ، تابع یا متد را به عنوان یک واحد برای تست انتخاب کرد و عملکرد آن را تست نمود تا از صحت عملکرد آن تابع مربوطه اطمینان حاصل شود .
داشتن یونیت تست برای برنامه امری ضروری میباشد ، زیرا با اضافه کردن قابلیت های جدید به برنامه ، همیشه باید عملکرد سایر واحد ها(ماژول ، متد و...) تست شود و با رشد یک نرم افزار این امر به صورت دستی غیرممکن میباشد و تمامی این تست ها باید اتومات انجام شوند .
از آنجا که برخی از کلاسها ممکن است به سایر کلاسها ارجاع داشته باشند، یونیت تست یک کلاس خاص ممکن است غالبا به کلاس دیگری اشاره کرده و آن کلاس را تست کند.یک مثال معمول از این کلاسها ، کلاس هایی است که به پایگاه داده وابستگی دارند .
برای آزمایش این کلاس ها، تستر اغلب کدی را که با پایگاه داده تعامل دارد، می نویسد. این کار اشتباه است، زیرا یک تست واحد معمولا نباید خارج از مرز کلاس خود باشد ، زیرا این کار می تواند مشکلات  غیر قابل قبولی را به مجموعه تست  واحد وارد کند ، به عنوان مثال ممکن است کوئری های دیتابیس ، Stored Procedure های نوشته شده ، اتصال به سرور دیتابیس و.. دارای مشکلاتی باشند که در این موارد یونیت تست منجر به شکست میشود . در این موارد از تست یکپارچگی استفاده میشود .
برای انجام یونیت تست در زبان های برنامه نویسی مختلف ، فریم ورک های زیادی ارائه شده است ، به عنوان مقال PHP دارای فریم ورک PHPUnit و جاوا دارای Junit و فریم ورک های دیگر میباشد .
در کد زیر مثال ساده ای از Junit ارائه شده است :
public interface Calculator {
    public int add(int a,int b);

    public int subtract(int a,int b);

}​
public class CalculatorImpl implements Calculator {
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) {
        return a-b;
    }
}​

نوشتن یونیت تست برای کلاس CalculatorImpl :
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorTest {
    Calculator calculator;

    @Before
    public void createObject() {
        calculator = new CalculatorImpl();
    }

    @Test
    public void test() {
        assertNotNull(calculator);
        assertEquals(calculator.add(3, 3), 6);
        assertEquals(calculator.subtract(5, 5), 0);
        assertTrue(calculator.add(2, 2) == 4);
    }
}
​