Testowanie szarej skrzynki to rodzaj profesjonalnego testowania często używanego w oprogramowaniu komputerowym, które łączy pewne aspekty testowania czarnej skrzynki i testowania białej skrzynki. Ogólną ideą jest połączenie tych dwóch innych typów, aby wykorzystać mocne strony każdego z nich, jednocześnie minimalizując ich ograniczenia lub słabości. Testowanie szarej skrzynki zasadniczo składa się z profesjonalnych testów, w których testerzy rozumieją niektóre sposoby działania oprogramowania, ale nie rozumieją wszystkiego na ten temat.
Podczas opracowywania i testowania oprogramowania komputerowego często stosuje się dwa popularne modele testowania. Są to testy czarnej skrzynki i testy białej skrzynki, a testowanie szarej skrzynki jest w zasadzie kombinacją obu. Testowanie czarnoskrzynkowe składa się z testów, w których testerzy nie rozumieją lub nie mają dostępu do kodu, który uruchamia oprogramowanie. Na przykład, ktoś może wykorzystać testy czarnoskrzynkowe, aby umożliwić zewnętrznej firmie opracowanie oprogramowania działającego z komputerowym systemem operacyjnym (OS) bez podawania firmie kodu źródłowego systemu operacyjnego.
Ten rodzaj testowania jest często używany przez wiele różnych producentów oprogramowania i może być używany zarówno do testów wewnętrznych, jak i zewnętrznych. Jedną z największych słabości tego typu testowania jest jednak to, że ograniczona wiedza testerów może potencjalnie utrudnić ich testowanie. Często będzie to wymagało analizy wyników przez stronę trzecią, która rozumie zarówno uruchamiane testy, jak i kod testowanego oprogramowania. Testowanie szarej skrzynki ma na celu złagodzenie niektórych z tych problemów poprzez połączenie tego typu testowania z pewnymi elementami testowania białej skrzynki.
Testowanie białej skrzynki polega na testowaniu oprogramowania przez osoby, które w pełni rozumieją testowane oprogramowanie i mają dostęp do kodu źródłowego oprogramowania. Często odbywa się to we własnym zakresie u programisty, aby zapewnić prawidłowe działanie programu i umożliwić testerom bezpośrednią interakcję z kodem programu. Istnieją jednak potencjalne problemy z bezpieczeństwem w przypadku tego typu testów, dlatego też testy szarej skrzynki są często używane do łączenia obu typów w sposób zarówno produktywny, jak i bezpieczny.
W testach szarej skrzynki testerzy rozumieją pewne aspekty używanego oprogramowania i mogą być w stanie zobaczyć niektóre fragmenty kodu źródłowego, ale nie wszystkie. Pozwala to testerom na pełniejszą interakcję i zrozumienie programu, który testują, niż pozwala na to testowanie czarnoskrzynkowe, ale bez pełnego dostępu i problemów z bezpieczeństwem, które mogą wynikać z testowania białej skrzynki. Na przykład ktoś, kto przeprowadza testy szarej skrzynki na oprogramowaniu dla nowego systemu operacyjnego, może zobaczyć kod dla aspektów systemu operacyjnego związanych z testowaniem programu, ale nie cały kod źródłowy.