Опубликован: 05.03.2005 | Доступ: свободный | Студентов: 15159 / 2214 | Оценка: 4.11 / 3.63 | Длительность: 13:20:00
ISBN: 978-5-9556-0027-7
Специальности: Тестировщик
Практическая работа 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-файл для последующей проверки на соответствие спецификации.

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

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

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Илья Ардов
Илья Ардов

Добрый день!

Я записан на программу. Куда высылать договор и диплом?

Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва