теория_8 (1035127), страница 2
Текст из файла (страница 2)
}
/// <summary>
///A test for CreateStack ()
/// Проверяет, что если отформатированное выражение равно
///"( ( 5 + 3) * 2 - ( 3 * 10 ) ) - 2 + ( 5 + 3 ) ",
/// то стек содержит следующие элементы "5 3 + 2 * 3 10 * - 2 - 5 3 + + "
///</summary>
[DeploymentItem("BaseCalculator.exe")]
[TestMethod()]
public void CreateStackTest()
{
string expected = "5 3 + 2 * 3 10 * - 2 - 5 3 + + ";
ArrayList actual;
TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.expression =
"( ( 5 + 3 ) * 2 - ( 3 * 10 ) ) - 2 + ( 5 + 3 ) ";
actual = TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.Create
Stack();
string actualstr = "";
foreach (object obj in actual)
{
actualstr += obj.ToString() + " ";
}
Assert.AreEqual(expected, actualstr,
"BaseCalculator.AnalaizerClass.CreateStack did not return the expected value.");
}
/// <summary>
///A test for Estimate ()
///Проверяет, что , если выражение , которое необходимо проверить,равно
///((5+3)*2-(3*10))-2+(5+3), то метод вернет его значение,
/// равное -8
///</summary>
[DeploymentItem("BaseCalculator.exe")]
[TestMethod()]
public void EstimateTest()
{
string expected = "-8";
string actual;
TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.expression =
"((5+3)*2-(3*10))-2+(5+3)";
actual = TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.Estimate();
Assert.AreEqual(expected, actual,
"BaseCalculator.AnalaizerClass.Estimate did not return the expected value.");
}
/// <summary>
///A test for Format ()
/// Проверяет, что если выражение равно "
/// ((5+3)*2-(3 *10))-2+ (5+3)", то метод отформатирует его к виду:
/// "( ( 5 + 3 ) * 2 - ( 3 * 10 ) ) - 2 + ( 5 + 3 ) "
///</summary>
[DeploymentItem("BaseCalculator.exe")]
[TestMethod()]
public void FormatTest()
{
string expected = "( ( 5 + 3 ) * 2 - ( 3 * 10 ) ) - 2 + ( 5 + 3 ) ";
string actual;
TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.expression =
"((5+3)*2-(3 *10))-2+ (5+3)";
actual = TestProjectCalculator.BaseCalculator_AnalaizerClassAccessor.Format();
Assert.AreEqual(expected, actual,
"BaseCalculator.AnalaizerClass.Format did not return the expected value.");
}
Пример 23.1.
Запустив тесты, можно убедиться в корректной (для данных тестовых примеров) работе методов.
Замечание. Тестовых требований, как и функциональных, к методам нет, однако их можно составить по системным требованиям и описанию методов.
Как уже отмечалось в семинаре 4, эти методы обладают многими недостатками, и некоторые из них генерируют исключения на некорректных входных данных. Это, в принципе, логично, так как запуск метода RunEstimate() подразумевает, что входное выражение уже обработано в методах CheckCurrency(), Format(), CreateStack(), а отдельно от них этот метод вызываться не будет. Для этого необходимо сделать уровень доступа к ним private и протестировать их только на корректных данных. Основное же внимание стоит уделить методу Estimate(), который поочередно запускает все вышеперечисленные методы и имеет уровень доступа public. Один из тестов для него приведен выше.
После того, как такая система из двух модулей протестирована, переходим к тестированию всей системы, присоединив последние модули.
Замечание. Модуль BaseCalc, который отвечает за пользовательский интерфейс, мы не тестируем, так как это выходит за рамки курса.
Теперь можно использовать системные требования, для тестирования программы в целом. Проведем тесты для метода Main(string[] args), так как это единственный метод, не считая уже протестированного Estimate(), который не относится к графическому интерфейсу и с которым работают пользователи:
/// <summary>
///A test for Main (string[])
/// 4.2.1.1. Для чисел, каждое из которых меньше либо равно MAXINT и больше либо равно MININT,
/// функция суммирования должна возвращать правильную сумму с точки зрения математики
///</summary>
[DeploymentItem("BaseCalculator.exe")]
[TestMethod()]
public void MainTest()
{
string[] args = new string[1]; // TODO: Initialize to an appropriate value
args[0] = "2+2";
int expected = 0;
int actual;
actual = TestProjectCalculator.BaseCalculator_ProgramAccessor.Main(args);
Assert.AreEqual(expected, actual,
"BaseCalculator.Program.Main did not return the expected value.");
}
/// <summary>
///A test for Main (string[])
/// 4.2.1.2. Для чисел, сумма которых больше чем MAXINT и меньше чем MININT,
/// а также в случае, если любое из слагаемых больше чем MAXINT или меньше чем MININT,
/// программа должна выдавать ошибку Error 06(см 2.2.3)
///</summary>
[DeploymentItem("BaseCalculator.exe")]
[TestMethod()]
public void MainTest1()
{
string[] args = new string[1]; // TODO: Initialize to an appropriate value
args[0] = "2711477380+1000000";
int expected = 6;
int actual;
actual = TestProjectCalculator.BaseCalculator_ProgramAccessor.Main(args);
Assert.AreEqual(expected, actual,
"BaseCalculator.Program.Main did not return the expected value.");
}
Пример 23.2.
И так далее. Таким образом, проверив методы Main() и Estimate(), а также некоторые методы визуального интерфейса, можно убедиться в соответствии системы требованиям или, наоборот, обнаружить какие-то ошибки в межмодульном взаимодействии.
23.3. Раздаточный материал
23.3.1. Программа
Будут выданы исходные тексты программы BaseCalculatorNew для тестирования методом "белого ящика" средствами MVSTE и пример тестового драйвера.
23.4. Задание
Составить тест-план и провести интеграционное тестирование (средствами MVSTE) своей программы, в том числе главных методов, например, метода Main().















