DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Лабораторні роботи ТПЗ 1-8

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Тестування програмних засобів

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №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; } } } Висновок: В даній лабораторній роботі я провів тестування інтерфейсу користувача програми «калькулятор». Тестування показало відсутність помилок.
Антиботан аватар за замовчуванням

28.03.2013 20:08

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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