Ну тут еще все преподы по разному требуют... Готовую давать не буду - лучше самим научиться ибо долго придется этой херней заниматься. Есть кое что общее. Формат спецухи таков:
1. Постановка задачи
2. Интерфейсные требования
Это то есть все входы/выходы программы, параметры вызова, экспортируемые функции/переменные/константы (в случае модуля), с описанием общего принципа работы и всех возможных возвращаемых значений без указания логики работы. Если есть коды ошибок - то с приоритетом.
3. Функциональные требования
Тут те же самые функции, но уже конкретно описываются все случаи - при каких входах что возвращает, какие коды ошибок и т.д. Если функция выводит сообщения - то надо указать что за сообщения.
4. Тестовые требования - как правило копипаст из пункта 3, только формат предложений вместо "В случае таком-то функция должна возвращать..." - "Проверить, что в таком то случае функция возвращает...". Ну и если там особые тест кейсы есть - тоже можно расписать. Сам тест-лог (отчет проверочного модуля) кто-то требует печатать, у нас в основном просили вывести в файл. В обоих случаях каждый тест оформляется следующим образом
Test : номер тестового требования
Test Case : номер тестового случая
Description : описание теста
Pre-action (или Prequisites) : действия, предпринятые для создания тестовой ситуации, т.е. создание файлов всяких, задание переменных, которые призваны повлиять на ход работы
In : входные данные
Expected Out : Ожидаемый выход
Real Out : реальный выход
Test Passed / Test Failed.
В конце тестов отчет - сколько тестов всего, сколько пройдено, сколько вальнулось.
Главное требование - тесты должны быть независимы, т.е. если переставить любые тесты местами - они должны работать. Таким образом лучше не стоит использовать результат предыдущего теста в следующем. Прикрепленный файл - тестовый протокол лабы 4-го семестра на Модула-2, там суть в проверке функций вычисления CRC, ну в общем разберетесь.