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

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №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:03-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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