DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт з лабораторної роботи №4 з дисципліни «Тестування програмних засобів»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Тестування програмних засобів
Група:
КН-31
Коротко про документ

Про що ця робота

У лабораторній роботі виконано тестування інтерфейсу користувача стандартного калькулятора Windows. Для автоматизації процесу використано мову програмування C# та фреймворк CUIT.

У роботі розглядаються

  • Тестування програмних засобів
  • Автоматизоване тестування
  • UI тестування
  • C#
  • CUIT фреймворк
  • Тестування інтерфейсу
  • Логування помилок

Зміст і розділи

  1. Тема та мета роботи
  2. Файл Log.cs
  3. Файл Constants.cs
  4. Файл CodedUITest1.cs
  5. Файл UIMap.Designer.cs
  6. Висновок
Для кого:Студенти технічних спеціальностей, викладачі та розробники програмного забезпечення.
Викладачі:Бачинський Р.В.

Ключові поняття

тестування інтерфейсуCUITC#лог файлитестові методиавтоматизаціяюніт-тесттестування програмконстанти

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №4 з дисципліни “ Тестування програмних засобів ” Львів 2012 Тема: Тестування інтерфейсу користувача. Мета: Протестувати UI калькулятора Windows в програміському режимі. Виконання роботи: Для створення тестів я використав мову програмування С# і фреймворк CUIT. Він дозволяє автоматизовано тестувати інтерфейс користувача, шляхом натискання на елементи керування на формі, зчитувати дані, вводити дані. Результати тестів виводяться в стандартне вікно переглядача тестів MS Visual Studio та записуються в лог файли. Файл Log.cs Клас Log забезпечує ведення логів про виконання тестів using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading.Tasks; namespace TestCalculatorUI { static class Log { public static void writeFailedMessage(string msg) { FileStream aFile = new FileStream(Constants.FAILED_TEST_LOG, FileMode.Append, FileAccess.Write); System.IO.StreamWriter file; file = new System.IO.StreamWriter(aFile); file.WriteLine(msg + "\n"); file.Close(); } public static void writePassedMessage(string msg) { FileStream aFile = new FileStream(Constants.PASSED_TEST_LOG, FileMode.Append, FileAccess.Write); System.IO.StreamWriter file; file = new System.IO.StreamWriter(aFile); file.WriteLine(msg + "\n"); file.Close(); } private static bool isClear = false; public static void clearLogs() { if (!isClear) { isClear = true; System.IO.File.Create(Constants.PASSED_TEST_LOG).Close(); System.IO.File.Create(Constants.FAILED_TEST_LOG).Close(); writeFailedMessage("Test Standart mode"); writePassedMessage("Test Standart mode"); } } } } Файл Constants.cs Клас Constants доступ до констант using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestCalculatorUI { static class Constants { public const int TESTS_NUMBER_PER_OPERATION = 100; public const string PASSED_TEST_LOG = "d:\\CalcUI_passed.log"; public const string FAILED_TEST_LOG = "d:\\CalcUI_failed.log"; } } Файл CodedUITest1.cs Клас CodedUITest1 представляє кодований тест інтерфейсу користувача using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Windows.Input; using System.Windows.Forms; using System.Drawing; using Microsoft.VisualStudio.TestTools.UITesting; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UITest.Extension; using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard; namespace TestCalculatorUI { /// <summary> /// Сводное описание для CodedUITest1 /// </summary> [CodedUITest] public class CodedUITest1 { public CodedUITest1() { Log.clearLogs(); } [TestInitialize] public void LaunchCalculator() { this.UIMap.LaunchCalculator(); } [TestMethod] public void TestAnd() { this.UIMap.TestAnd(); } [TestMethod] public void TestOr() { this.UIMap.TestOr(); } [TestMethod] public void TestXor() { this.UIMap.TestXOr(); } [TestMethod] public void TestNot() { this.UIMap.TestNot(); } [TestMethod] public void TestLsh() { this.UIMap.TestLsh(); } [TestMethod] public void TestRsh() { this.UIMap.TestRsh(); } [TestCleanup] public void CloseCalculator() { this.UIMap.CloseCalculator(); } #region Дополнительные атрибуты тестирования // При написании тестов можно использовать следующие дополнительные атрибуты: ////TestInitialize используется для выполнения кода перед запуском каждого теста //[TestInitialize()] //public void MyTestInitialize() //{ // // Чтобы создать код для этого теста, выберите в контекстном меню команду "Сформировать код для кодированного теста ИП", а затем выберите один из пунктов меню. // // Дополнительные сведения по сформированному коду см. по ссылке http://go.microsoft.com/fwlink/?LinkId=179463 //} ////TestCleanup используется для выполнения кода после завершения каждого теста //[TestCleanup()] //public void MyTestCleanup() //{ // // Чтобы создать код для этого теста, выберите в контекстном меню команду "Сформировать код для кодированного теста ИП", а затем выберите один из пунктов меню. // // Дополнительные сведения по сформированному коду см. по ссылке http://go.microsoft.com/fwlink/?LinkId=179463 //} #endregion /// <summary> ///Получает или устанавливает контекст теста, в котором предоставляются ///сведения о текущем тестовом запуске и обеспечивается его функциональность. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } private TestContext testContextInstance; public UIMap UIMap { get { if ((this.map == null)) { this.map = new UIMap(); } return this.map; } } private UIMap map; } } Файл UIMap.Desinger.cs Клас UIMap представляє реалізацію методів тестування класу CodedUITest1 public partial class UIMap { /// <summary> /// CloseCalculator /// </summary> public void CloseCalculator() { #region Variable Declarations WinButton uICloseButton = this.UICalculatorWindow.UICalculatorTitleBar.UICloseButton; #endregion // Щелкните "Close" кнопка Mouse.Click(uICloseButton, new Point(31, 11)); } /// <summary> /// LaunchCalculator - Используйте "LaunchCalculatorParams" для передачи параметров в этот метод. /// </summary> public void LaunchCalculator() { // Запуск "%windir%\System32\calc.exe" ApplicationUnderTest uICalculatorWindow = ApplicationUnderTest.Launch(this.LaunchCalculatorParams.UICalculatorWindowExePath, this.LaunchCalculatorParams.UICalculatorWindowAlternateExePath); } #region testing calculator UI /// <summary> /// TestAnd /// </summary> public void TestAnd() { Log.writePassedMessage("-test and in Calculator"); Log.writeFailedMessage("-test and in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uIAndButton = this.UICalculatorWindow.UIItemWindow72.UIAndButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; int number1 = 0; int number2 = 0; int sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); number2 = random.Next(0, int.MaxValue); sum = number1 & number2; //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uIAndButton, new Point(6, 11)); //Ввести перше число EnterNumber(number2.ToString()); //Натиснути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " & " +number2.ToString() + " - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " & " + number2.ToString() + " - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } /// <summary> /// TestOr /// </summary> public void TestOr() { Log.writePassedMessage("-test or in Calculator"); Log.writeFailedMessage("-test or in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uIORButton = this.UICalculatorWindow.UIItemWindow23.UIORButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; int number1 = 0; int number2 = 0; int sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); number2 = random.Next(0, int.MaxValue); sum = number1 | number2; //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uIORButton, new Point(23, 7)); //Ввести перше число EnterNumber(number2.ToString()); //Натиснути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " | " + number2.ToString() + " - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " | " + number2.ToString() + " - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } /// <summary> /// TestXor /// </summary> public void TestXOr() { Log.writePassedMessage("-test xor in Calculator"); Log.writeFailedMessage("-test xor in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uIExclusiveorButton = this.UICalculatorWindow.UIItemWindow32.UIExclusiveorButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; int number1 = 0; int number2 = 0; int sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); number2 = random.Next(0, int.MaxValue); sum = number1 ^ number2; //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uIExclusiveorButton, new Point(9, 13)); //Ввести перше число EnterNumber(number2.ToString()); //Натиснути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " ^ " + number2.ToString() + " - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ":" + number1.ToString() + " ^ " + number2.ToString() + " - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } /// <summary> /// TestNot /// </summary> public void TestNot() { Log.writePassedMessage("-test not in Calculator"); Log.writeFailedMessage("-test not in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uINotButton = this.UICalculatorWindow.UIItemWindow62.UINotButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; int number1 = 0; int sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); sum = ~number1; //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uINotButton, new Point(12, 10)); //Натиснути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ": !" + number1.ToString() + " - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ": !" + number1.ToString() + " - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } /// <summary> /// TestLsh /// </summary> public void TestLsh() { Log.writePassedMessage("-test lsh in Calculator"); Log.writeFailedMessage("-test lsh in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uILeftshiftButton = this.UICalculatorWindow.UIItemWindow52.UILeftshiftButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; Int64 number1 = 0; Int64 sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); sum = (number1 << 1); //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uILeftshiftButton, new Point(12, 16)); //Ввести перше число EnterNumber("1"); //Натиснути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ": " + number1.ToString() + " << 1 - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ": " + number1.ToString() + " << 1 - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } /// <summary> /// TestRsh /// </summary> public void TestRsh() { Log.writePassedMessage("-test rsh in Calculator"); Log.writeFailedMessage("-test rsh in Calculator"); #region Variable Declarations WinMenuItem uIProgrammerAlt3MenuItem = this.UICalculatorWindow.UIApplicationMenuBar.UIViewMenuItem.UIProgrammerAlt3MenuItem; WinButton uIRightshiftButton = this.UICalculatorWindow.UIItemWindow42.UIRightshiftButton; WinButton uIClearButton = this.UICalculatorWindow.UIItemWindow10.UIClearButton; WinButton uIEqualsButton = this.UICalculatorWindow.UIItemWindow16.UIEqualsButton; WinText uIItem0Text = this.UICalculatorWindow.UIItem0Window.UIItem0Text; bool isOk = true; Int64 number1 = 0; Int64 sum = 0; #endregion Mouse.Click(uIProgrammerAlt3MenuItem, new Point(51, 12)); Random random = new Random(); //Протестувати випадкові значення for (int i = 0; i < Constants.TESTS_NUMBER_PER_OPERATION; i++) { number1 = random.Next(0, int.MaxValue); sum = (number1 >> 1); //Ввести перше число EnterNumber(number1.ToString()); Mouse.Click(uIRightshiftButton, new Point(12, 10)); //Ввести перше число EnterNumber("1"); //Натисути дорівнює Mouse.Click(uIEqualsButton, new Point(21, 22)); if (uIItem0Text.DisplayText == sum.ToString()) { Log.writePassedMessage("--test_" + i.ToString() + ": " + number1.ToString() + " >> 1 - ok actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); } else { Log.writeFailedMessage("--test_" + i.ToString() + ": " + number1.ToString() + " >> 1 - fail actual:" + uIItem0Text.DisplayText + " expected:" + sum.ToString()); isOk = false; } Mouse.Click(uIClearButton, new Point(27, 13)); } if (!isOk) { Assert.Fail(); } } #endregion private void EnterNumber(string num) { #region Variable Declarations WinButton uIItem0Button = this.UICalculatorWindow.UIItemWindow.UIItem0Button; WinButton uIItem1Button = this.UICalculatorWindow.UIItemWindow1.UIItem1Button; WinButton uIItem2Button = this.UICalculatorWindow.UIItemWindow2.UIItem2Button; WinButton uIItem3Button = this.UICalculatorWindow.UIItemWindow3.UIItem3Button; WinButton uIItem4Button = this.UICalculatorWindow.UIItemWindow4.UIItem4Button; WinButton uIItem5Button = this.UICalculatorWindow.UIItemWindow5.UIItem5Button; WinButton uIItem6Button = this.UICalculatorWindow.UIItemWindow6.UIItem6Button; WinButton uIItem7Button = this.UICalculatorWindow.UIItemWindow7.UIItem7Button; WinButton uIItem8Button = this.UICalculatorWindow.UIItemWindow8.UIItem8Button; WinButton uIItem9Button = this.UICalculatorWindow.UIItemWindow9.UIItem9Button; #endregion for (int j = 0; j < num.Length; j++) { switch (num[j]) { case '0': Mouse.Click(uIItem0Button, new Point(41, 20)); break; case '1': Mouse.Click(uIItem1Button, new Point(18, 17)); break; case '2': Mouse.Click(uIItem2Button, new Point(22, 19)); break; case '3': Mouse.Click(uIItem3Button, new Point(14, 16)); break; case '4': Mouse.Click(uIItem4Button, new Point(18, 18)); break; case '5': Mouse.Click(uIItem5Button, new Point(23, 18)); break; case '6': Mouse.Click(uIItem6Button, new Point(13, 11)); break; case '7': Mouse.Click(uIItem7Button, new Point(18, 15)); break; case '8': Mouse.Click(uIItem8Button, new Point(17, 15)); break; case '9': Mouse.Click(uIItem9Button, new Point(11, 15)); break; } } } Висновок: В даній лабораторній роботі я провів тестування інтерфейсу користувача програми «калькулятор». Тестування показало відсутність помилок.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!