G
|
№ сценария
|
Описание прохода
|
Контрольные примеры, позволяющие реализовать описанную
ситуацию
|
Тест пройден Да/Нет
|
G=6
|
a-b-s-d-c
|
textBox1->Text=10 Z=1
|
Да
|
|
2
|
a-b-g-d-c
|
textBox1->Text=10 Z=2
|
Да
|
|
3
|
a-b-f-d-c
|
textBox1->Text=10 Z=3
|
Да
|
|
4
|
a-b-e-d-c
|
textBox1->Text=10 Z=4
|
Да
|
|
5
|
a-b-k-d-c
|
textBox1->Text=10 Z=0
|
Да
|
|
6
|
a-c
|
textBox1->Text=”” Z=0
|
Да
|
Все тесты пройдены.
Реализовать рассмотренные выше проходы Microsoft::VisualStudio::TestTools::UnitTesting.
Листинг тэста:
#include "StdAfx.h"namespace
Microsoft::VisualStudio::TestTools::UnitTesting;namespace
Calculator;TestProject1 {namespace System;class Form1Test;
/// <summary>
///Это класс теста для Form1Test, в котором должны
///находиться все модульные тесты Form1Test
///</summary>
[TestClass]ref class Form1Test
{: Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^
testContextInstance;
/// <summary>
///Получает или устанавливает контекст теста, в котором предоставляются
///сведения о текущем тестовом запуске и обеспечивается его
функциональность.
///</summary>: property
Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
{::VisualStudio::TestTools::UnitTesting::TestContext^ get()
{testContextInstance;
}::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^
value)
{= value;
}
#pragma region Дополнительные атрибуты теста
//
//При написании тестов можно использовать следующие дополнительные
атрибуты:
//
//ClassInitialize используется для выполнения кода до запуска первого
теста в классе
//public: [ClassInitialize]
//static System::Void MyClassInitialize(TestContext^ testContext)
//{
//ClassCleanup используется для выполнения кода после завершения работы
всех тестов в классе
//public: [ClassCleanup]
//static System::Void MyClassCleanup()
//{
//TestInitialize используется для выполнения кода перед запуском каждого
теста
//public: [TestInitialize]
//System::Void MyTestInitialize()
//{
//TestCleanup используется для выполнения кода после завершения каждого
теста
//public: [TestCleanup]
//System::Void MyTestCleanup()
//{
#pragma endregion
/// <summary>
///Тест для PlusMinus
///</summary>: [TestMethod]
[DeploymentItem(L"Calculator.exe")]PlusMinusTest()
{::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); //
TODO: инициализация подходящего значения^ Znak = System::String::Empty; //
TODO: инициализация подходящего значенияexpected = false; // TODO:
инициализация подходящего значенияactual;=
target->PlusMinus(Znak);::AreEqual(expected,
actual);::Inconclusive(L"Проверьте правильность этого метода
теста.");
}
/// <summary>
///</summary>: [TestMethod]
[DeploymentItem(L"Calculator.exe")]RezultatTest()
{::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); //
TODO: инициализация подходящего значения^ expected = System::String::Empty; //
TODO: инициализация подходящего значения^ actual;=
target->Rezultat();::AreEqual(expected, actual);::Inconclusive(L"Проверьте
правильность этого метода теста.");
}
/// <summary>
///Тест для textBox1_TextChanged
///</summary>: [TestMethod]
[DeploymentItem(L"Calculator.exe")]textBox1_TextChangedTest()
{::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); //
TODO: инициализация подходящего значения^ sender = nullptr; // TODO:
инициализация подходящего значения::EventArgs^ e = nullptr; // TODO:
инициализация подходящего значения>textBox1_TextChanged(sender,
e);::Inconclusive(L"Невозможно проверить метод, не возвращающий значение.");
}TestProject1 {
}
Результат тестирования функции PlusMinus();
public: [TestMethod]
[DeploymentItem(L"Calculator.exe")]PlusMinusTest()
{::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); //
TODO: инициализация подходящего значения^ Znak = "+"; // TODO:
инициализация подходящего значенияexpected = true; // TODO: инициализация
подходящего значенияactual;=
target->PlusMinus(Znak);::IsTrue(actual==expected);
}
Литература
1. Канер, C. Тестирование программного обеспечения / C.
Канер [и др.]. - К.: ДиаСофт, 2001.- 544 с.
2. Калбертсон, Р. Быстрое тестирование / Р. Калбертсон, К.
Браун, Г. Кобб. - М.: Вильямс, 2002. - 384 с.
3. Майерс, Г. Искусство тестирования программ / Г.
Майерс. - М.: Финансы и статистика, 1982.
. Майерс, Г. Надежность программного обеспечения / Г.
Майерс. - М., 1980.
. Липаев, В.В. Тестирование программных средств / В.В.
Липаев. - М., 1999.
. Липаев, В.В. Обеспечение качества программных
средств: методы и стандарты / В.В. Липаев. - М., 2001.
. Липаев, В.В. Надежность программных средств / В.В.
Липаев. - М., 1998.
Приложение
листинг программы
#pragma onceCalculator {namespace System;namespace
System::ComponentModel;namespace System::Collections;namespace
System::Windows::Forms;namespace System::Data;namespace System::Drawing;
/// <summary>
/// Сводка для Form1
/// Внимание! При изменении имени этого класса необходимо также изменить
/// свойство имени файла ресурсов ("Resource File Name") для
средства компиляции управляемого ресурса,
/// связанного со всеми файлами с расширением.resx, от которых зависит
данный класс. В противном случае,
/// конструкторы не смогут правильно работать с локализованными
/// ресурсами, сопоставленными данной форме.
/// </summary>ref class Form1 : public System::Windows::Forms::Form
{:(void)
{();
//
//TODO: добавьте код конструктора
//
}:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~Form1()
{(components)
{components;
}: System::Windows::Forms::TextBox^ textBox1;: :
System::Windows::Forms::TextBox^ textBox2;: System::Windows::Forms::TextBox^
textBox3;: System::Windows::Forms::TextBox^ textBox4;:
System::Windows::Forms::Label^ label1;: System::Windows::Forms::Button^ bPlus;:
System::Windows::Forms::Button^ bMinus;: System::Windows::Forms::Button^
bUmnoz;: System::Windows::Forms::Button^ bDelit;:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>::ComponentModel::Container ^components;::Int32 Z;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>InitializeComponent(void)
{>textBox1 = (gcnew System::Windows::Forms::TextBox());>textBox2 =
(gcnew System::Windows::Forms::TextBox());>textBox3 = (gcnew
System::Windows::Forms::TextBox());>textBox4 = (gcnew
System::Windows::Forms::TextBox());>label1 = (gcnew
System::Windows::Forms::Label());>bPlus = (gcnew System::Windows::Forms::Button());>bMinus
= (gcnew System::Windows::Forms::Button());>bUmnoz = (gcnew
System::Windows::Forms::Button());>bDelit = (gcnew
System::Windows::Forms::Button());>SuspendLayout();
//
// textBox1
// >textBox1->BorderStyle = System::Windows::Forms::BorderStyle::None;>textBox1->Font
= (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>textBox1->Location = System::Drawing::Point(76,
35);>textBox1->Name = L"textBox1";>textBox1->Size =
System::Drawing::Size(162, 22);>textBox1->TabIndex =
0;>textBox1->TextChanged += gcnew System::EventHandler(this,
&Form1::textBox1_TextChanged);
//
// textBox2
// >textBox2->BorderStyle = System::Windows::Forms::BorderStyle::None;>textBox2->Font
= (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>textBox2->Location = System::Drawing::Point(208,
63);>textBox2->Name = L"textBox2";>textBox2->ReadOnly =
true;>textBox2->Size = System::Drawing::Size(30,
22);>textBox2->TabIndex = 0;
//
// textBox3
// >textBox3->BorderStyle =
System::Windows::Forms::BorderStyle::None;>textBox3->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 14.25F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>textBox3->Location =
System::Drawing::Point(76, 91);>textBox3->Name =
L"textBox3";>textBox3->ReadOnly = true;>textBox3->Size =
System::Drawing::Size(162, 22);>textBox3->TabIndex = 0;
//
// textBox4
// >textBox4->BorderStyle =
System::Windows::Forms::BorderStyle::None;>textBox4->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 14.25F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>textBox4->Location =
System::Drawing::Point(76, 119);>textBox4->Name =
L"textBox4";>textBox4->ReadOnly = true;>textBox4->Size =
System::Drawing::Size(162, 22);>textBox4->TabIndex = 0;
//
// label1
//
// bPlus
// >bPlus->Font = (gcnew System::Drawing::Font(L"Microsoft
Sans Serif", 14.25F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>bPlus->Location =
System::Drawing::Point(269, 34);>bPlus->Name =
L"bPlus";>bPlus->Size = System::Drawing::Size(38,
32);>bPlus->TabIndex = 2;>bPlus->Text =
L"+";>bPlus->UseVisualStyleBackColor = true;>bPlus->Click
+= gcnew System::EventHandler(this, &Form1::bPlus_Click);
//
// bMinus
// >bMinus->Font = (gcnew System::Drawing::Font(L"Microsoft
Sans Serif", 14.25F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point, _cast<System::Byte>(204)));>bMinus->Location
= System::Drawing::Point(313, 35);>bMinus->Name =
L"bMinus";>bMinus->Size = System::Drawing::Size(38,
32);>bMinus->TabIndex = 2;>bMinus->Text = L"-";>bMinus->UseVisualStyleBackColor
= true;>bMinus->Click += gcnew System::EventHandler(this,
&Form1::bMinus_Click);
//
// bUmnoz
// >bUmnoz->Font = (gcnew System::Drawing::Font(L"Microsoft
Sans Serif", 14.25F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>bUmnoz->Location =
System::Drawing::Point(357, 35);>bUmnoz->Name =
L"bUmnoz";>bUmnoz->Size = System::Drawing::Size(38,
32);>bUmnoz->TabIndex = 2;>bUmnoz->Text =
L"x";>bUmnoz->UseVisualStyleBackColor = true;>bUmnoz->Click
+= gcnew System::EventHandler(this, &Form1::bUmnoz_Click);
//
// bDelit
// >bDelit->Font = (gcnew System::Drawing::Font(L"Microsoft
Sans Serif", 14.25F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point, _cast<System::Byte>(204)));>bDelit->Location
= System::Drawing::Point(401, 35);>bDelit->Name =
L"bDelit";>bDelit->Size = System::Drawing::Size(38,
32);>bDelit->TabIndex = 2;>bDelit->Text =
L"/";>bDelit->UseVisualStyleBackColor =
true;>bDelit->Click += gcnew System::EventHandler(this,
&Form1::bDelit_Click);
//
// Form1
// >AutoScaleDimensions = System::Drawing::SizeF(6,
13);>AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;>ClientSize =
System::Drawing::Size(593,
305);>Controls->Add(this->bDelit);>Controls->Add(this->bUmnoz);>Controls->Add(this->bMinus);>Controls->Add(this->bPlus);>Controls->Add(this->label1);>Controls->Add(this->textBox4);>Controls->Add(this->textBox3);>Controls->Add(this->textBox2);>Controls->Add(this->textBox1);>Name
= L"Form1";>Text = L"Калькуляток";>Load += gcnew
System::EventHandler(this,
&Form1::Form1_Load);>ResumeLayout(false);>PerformLayout();
}
#pragma endregion
//нажимаем кнопку +: System::Void bPlus_Click(System::Object^ sender,
System::EventArgs^ e)
{("+");=1;
}
// функция выстовления знаков::Boolean PlusMinus(System::String ^Znak)
{(this->textBox4->Text!="")
{->Text=textBox4->Text;->Text=Znak;->Text="";->Text="";
}
{->Text=Znak;->Text=textBox1->Text;->Text="";
}true;
}
//нажимаем кнопку -: System::Void bMinus_Click(System::Object^ sender,
System::EventArgs^ e)
{("-");=2;
}
//нажимаем кнопку x: System::Void bUmnoz_Click(System::Object^ sender,
System::EventArgs^ e)
{("x");=3;
}
//нажимаем кнопку /: System::Void bDelit_Click(System::Object^ sender,
System::EventArgs^ e)
{("/");=4;
}
//изменяем значение поля ввода данных: System::Void
textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
{(textBox3->Text!="" &&
textBox2->Text!="")
{//если текстовые поля не пусты::Double
s=0;(System::Double::TryParse(textBox1->Text,s))//проверка на значение
поля->Text=Rezultat();
}
//результат вычислений::String ^Rezultat(void)
{::String ^Rez="";//результат вычислений
(textBox1->Text!="")//если текстовое поле не пустое
{(Z)
{1: //если count = 2
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)+System::Convert::ToDouble(textBox1->Text));
// выполнить сложение;
}2: // если count = 2
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)-System::Convert::ToDouble(textBox1->Text));
// выполнить сложение;
}3: // если count = 3
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)*System::Convert::ToDouble(textBox1->Text));
// выполнить сложение;
}4: // если count = 4
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)/System::Convert::ToDouble(textBox1->Text));
// выполнить сложение;
}
: // если count равно любому другому значению="";
}Rez;
}
//загрузка формы: System::Void Form1_Load(System::Object^ sender,
System::EventArgs^ e) {
Z=0;//значение знака
}