Funkční testování (z angl. functional testing) je druh testování softwaru, při kterém se ověřuje, zda jednotlivé funkce aplikace nebo celého systému pracují správně a odpovídají stanoveným požadavkům. Sleduje především, co program dělá, nikoli jak je uvnitř naprogramován. Tester podle připravených testovacích scénářů zadává vstupy, provádí operace a porovnává skutečné výsledky s očekávanými. Kontroluje například přihlášení uživatele, vyhledávání, ukládání dat, zpracování formulářů nebo správné reakce na chybné vstupy. Testy mohou probíhat ručně či automatizovaně a na úrovni jednotlivých komponent, jejich vzájemného propojení i celé aplikace. Často využívají přístup black-box testing (testování černé skříňky), při němž není nutné znát vnitřní strukturu kódu. Od nefunkčního testování se liší zaměřením: to hodnotí vlastnosti jako výkon, spolehlivost nebo použitelnost. S funkčním testováním souvisejí integrační, akceptační a regresní testování, poslední z nich ověřuje, zda změny nenarušily dříve fungující části programu.