|
Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Модульное тестирование на примере классов
Подробное описание тестового случая
Рассматривается пример тестов на C# для класса TCommand (приложение 3 (HLD)). При выполнении заданий необходимо будет самостоятельно написать тесты для других классов приложения. Параллельно с изучением этого раздела полезно открыть проект ModuleTesting\ModuleTests.sln.
Рассмотрим тестирование класса TCommand. Этот класс реализует единственную операцию GetFullName(), которая возвращает полное название команды в виде строки. Разработаем спецификацию тестового случая для тестирования метода GetFullName на основе спецификации этого класса (приложение 3):
| Название класса: TСommand | Название тестового случая: TСommandTest1 |
| Описание тестового случая: Тест проверяет правильность работы метода GetFullName - получения полного названия команды на основе кода команды. В тесте подаются следующие значения кодов команд (входные значения): -1, 1, 2, 4, 6, 20, где -1 - запрещенное значение | |
| Начальные условия: Нет |
|
Ожидаемый результат: Перечисленным входным значениям должны соответствовать следующие выходные: Коду команды -1 должно соответствовать сообщение "ОШИБКА: Неверный код команды" Коду команды 1 должно соответствовать полное название команды "ПОЛУЧИТЬ ИЗ ВХОДНОЙ ЯЧЕЙКИ" Коду команды 2 должно соответствовать полное название команды "ОТПРАВИТЬ ИЗ ЯЧЕЙКИ В ВЫХОДНУЮ ЯЧЕЙКУ" Коду команды 4 должно соответствовать полное название команды "ПОЛОЖИТЬ В РЕЗЕРВ" Коду команды 6 должно соответствовать полное название команды "ПРОИЗВЕСТИ ЗАНУЛЕНИЕ" Коду команды 20 должно соответствовать полное название команды "ЗАВЕРШЕНИЕ КОМАНД ВЫДАЧИ" |
На основе спецификации был создан тестовый драйвер - класс TCommandTester, наследующий функциональность абстрактного класса Tester.
public class Log
{
static private StreamWriter log=new
StreamWriter("log.log"); //Создание лог файла
static public void Add(string msg)
//Добавление сообщения в лог файл
{
log.WriteLine(msg);
}
static public void Close() //Закрыть лог файл
{
log.Close();
}
}
abstract class Tester
{
protected void LogMessage(string s)
//Добавление сообщения в лог-файл
{
Log.Add(s);
}
}
class TCommandTester:Tester // Тестовый драйвер
{
TCommand OUT;
public TCommandTester()
{
OUT=new TCommand();
Run();
}
private void Run()
{
TCommandTest1();
}
private void TCommandTest1()
{
int[] commands = {-1, 1, 2, 4, 6, 20};
for(int i=0;i<=5;i++)
{
OUT.NameCommand=commands[i];
LogMessage(commands[i].ToString()+" :
"+OUT.GetFullName());
}
}
[STAThread]
static void Main()
{
TCommandTester CommandTester = new TCommandTester();
Log.Close();
}
}
Листинг
2.1.
Тестовый драйвер
Класс TCommandTester содержит метод TCommandTest1(), в котором реализована вся функциональность теста. В данном случае для покрытия спецификации достаточно перебрать следующие значения кодов команд: -1, 1, 2, 4, 6, 20, где -1 - запрещенное значение, и получить соответствующие им полное название команды с помощью метода GetFullName(). Пары соответствующих значений заносятся в log-файл для последующей проверки на соответствие спецификации.
Таким образом, для тестирования любого метода класса необходимо:
- Определить, какая часть функциональности метода должна быть протестирована, то есть при каких условиях он должен вызываться. Под условиями здесь понимаются параметры вызова методов, значения полей и свойств объектов, наличие и содержимое используемых файлов и т. д.
- Создать тестовое окружение, обеспечивающее требуемые условия.
- Запустить тестовое окружение на выполнение.
- Обеспечить сохранение результатов в файл для их последующей проверки.
- После завершения выполнения сравнить полученные результаты со спецификацией.