Опубликован: 05.03.2005 | Уровень: специалист | Доступ: платный
Практическая работа 2:

Модульное тестирование на примере классов

Подробное описание тестового случая

Рассматривается пример тестов на 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-файл для последующей проверки на соответствие спецификации.

Таким образом, для тестирования любого метода класса необходимо:

  • Определить, какая часть функциональности метода должна быть протестирована, то есть при каких условиях он должен вызываться. Под условиями здесь понимаются параметры вызова методов, значения полей и свойств объектов, наличие и содержимое используемых файлов и т. д.
  • Создать тестовое окружение, обеспечивающее требуемые условия.
  • Запустить тестовое окружение на выполнение.
  • Обеспечить сохранение результатов в файл для их последующей проверки.
  • После завершения выполнения сравнить полученные результаты со спецификацией.
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Чурбанов
Сергей Чурбанов
Екатерина Столярова
Екатерина Столярова
Россия, УдГУ
Ольга Акбашева
Ольга Акбашева
Россия, Самара, Аэрокосмический университет, 2013