Как протестировать приложение windows

Тестирование Windows приложений

#1 dmitrysh

  • Members
  • 2 сообщений
  • Вчера я был на собеседовании в одной..довольно хорошей конторе. На этом собеседовании был задан вопрос «как вы будете тестировать windows приложение».
    Суть вопроса, исходя из уточняющих ответов, состоит в том, какие windows-специфичные кейсы стоит проверить.

    Мой ответ, судя по ответу, оказался неполным. Интересно что я упустил 🙂

    Итак, список областей замечательной ОС, где могут возникнуть проблемы:

    #2 Vasiliy

  • Members
  • 2 906 сообщений
    • ФИО: Касимов Василий
    • Город: Москва

    А почему антивирусы и офис и Ко вы относите к Windows- специфике?

    Это же набор третьих программ, они вряд ли относятся непосредственно к ОС.

    #3 BadMF

  • Members
  • 809 сообщений
    • ФИО: Dmitry Petrov

    меня всегда вводил в ступор этот вопрос, я не понимаю разницу между тестированием вин и вёб приложений когда есть чёткие требования и понятная архитектура.

    То что вы перечислили высосано из пальца. и в ивент лог приложение может ничего не писать и работу с диском не вести и в папке пользователя не гадить и с реестром приложение может не работать.

    Может ктонибудь знающий напишет ответ на этот вопрос, а то меня в течении 10ти лет почти на каждом собеседовании его спрашивают, а я не знаю что ответить.

    #4 dmitrysh

  • Members
  • 2 сообщений
  • меня всегда вводил в ступор этот вопрос, я не понимаю разницу между тестированием вин и вёб приложений когда есть чёткие требования и понятная архитектура.

    То что вы перечислили высосано из пальца. и в ивент лог приложение может ничего не писать и работу с диском не вести и в папке пользователя не гадить и с реестром приложение может не работать.

    Может ктонибудь знающий напишет ответ на этот вопрос, а то меня в течении 10ти лет почти на каждом собеседовании его спрашивают, а я не знаю что ответить.

    Я согласен что это высасывание из пальца. Это те части Windows с которыми программа может работать и на которые стоит обратить внимание.

    Конкретно эти области я смотрел, когда работал на прошлом месте работы, оттуда и брал эти. тэги)

    А почему антивирусы и офис и Ко вы относите к Windows- специфике?

    Это же набор третьих программ, они вряд ли относятся непосредственно к ОС.

    Это окружение и его важно проверить. Иногда админское ПО может считаться вирусом, какая-нибудь левая программа будет отбирать бинд на файл, и т.д.

    #5 SALar

  • Members
  • 2 295 сообщений
    • Город: Москва

    меня всегда вводил в ступор этот вопрос, я не понимаю разницу между тестированием вин и вёб приложений когда есть чёткие требования и понятная архитектура.

    То что вы перечислили высосано из пальца. и в ивент лог приложение может ничего не писать и работу с диском не вести и в папке пользователя не гадить и с реестром приложение может не работать.

    Может ктонибудь знающий напишет ответ на этот вопрос, а то меня в течении 10ти лет почти на каждом собеседовании его спрашивают, а я не знаю что ответить.

    Да не вопрос. Вот посты от 2008 года:

    Некая специфика есть, но, она скорее, от решаемых задач. а не от платформы.

    * Десктоп. Не стоит позволять пользователю запускать одновременно 2 дефрагментатора.

    * Веб. Не стоит позволять пользователю в одном броузере быть залогиненым одновременно под двумя аккаунтами.

    > я не понимаю разницу между тестированием вин и вёб приложений

    Во, во, и я о том же. А если вы тестируете приложение чуть сложнее простого, то вполне возможно, что для оказания одной единственной услуги пользователю, будет задействовано полторы дюжины систем у которых есть GUI на семи разных платформах.

    Читайте также:  Installing npm packages on windows

    Возьмем безумно популярный WoT. Десктоп? А ничего, что:

    * он обновляется чаще многих онлайн проектов

    * реализовать управление ангаром можно и в броузере. И будет две версии: десктоп и броузер. В чем разница тестирования?

    А, да еще. Работали мы как то с броузерным приложением. Типа веб, все дела. Установки не надо. Ага, здчаз. Сами запустить мы его не смогли несмотря на штат отличных админов и инструкцию. Вызвали представителя фирмы — производителя. И он нам полчаса настраивал броузер. Чтобы запустить веб приложение.

    > Работа с офисами

    Ваша трекинговая веб система умеет выгружать список задач в Excel. Могут ли там возникнуть проблемы? А то! Естественно возникнут. Особенно при выгрузке номеров версий вида 19.03 (примерно 95% программистов эту ошибку допустят, так что ее можно писать заранее, еще до написания кода).

    Автоматизация тестирования Windows-приложений с использованием Winium

    С чем едят

    С помощью Winium мы можем автоматизировать обычные Windows-приложения. Как правило, Winium может работать с теми элементами, которые можно отыскать в окнах стандартными Windows-средствами (как правило, эти элементы имеют tab-ордер). Средства эти поставляются в стандартных китах (скачать, например, можно тут, после установки искать их, например, здесь: C:\Program Files (x86)\Windows Kits\8.1\bin\x64). Наиболее удобными для себя я считаю inspect и uiverify, но на вкус и цвет, как говорят некоторые мои товарищи, все фломастеры разные.

    Однако, для того, чтобы автоматизировать самописные приложения, неплохо было бы товарищам разработчикам следить за тем, чтобы у элементов были адекватные ClassName, Name и AutomationId. Конечно, в определённых ситуациях нас могут спасти передачи нажатий определённых клавиш и щёлканье мышкой по координатам, но это не панацея. Лучше всегда иметь набор заранее заготовленных «рычагов» в виде описаний объектов, чем полагаться на то, что GUI всегда будет неизменным и будет себя хорошо вести в различных ситуациях.

    С Winium в нормальном режиме можно общаться посредством Selenium с использованием Python и Java; так или иначе, но звёзды встали так, что выбор пал на Java.

    Установка

    Во-первых, нам потребуется Winium Desktop Driver. Скачать его можно, например, тут. От нас потребуется это дело разархивировать и запускать при тестах. Через него Selenium сервер будет общаться с Windows-приложениями.

    Во-вторых, собственно, Java-IDE (использовалась IntelliJ IDEA Community, за что им отдельное большое спасибо) и JDK. Не забываем проверить/прописать переменную среды JAVA_HOME со значением пути до JDK (в моём случае — C:\Program Files\Java\jdk1.8.0_131).

    В-третьих, нужен нам и Selenium сервер — идем сюда, качаем Selenium Standalone Server (JAR-файл).

    Далее по настройке проекта — создаём новый Java-проект и добавляем в External libraries (кликаем по кнопке Project Structure (или Ctrl+Alt+Shift+S), там в Project Settings выбираем Libraries и нажимаем плюсик) наш селениумный JAR-файл. На этом всё, можно писать.

    Использование

    Для того, чтобы всё работало, нужно на время использования тестов запускать Winium.Desktop.Driver с админскими правами. Но, так как драйвер время от времени может подвисать по тем или иным причинам, удобно его запускать перед каждым тестом и в конце убивать. Например, для этой цели можно использовать ProcessBuilder:

    где для удобства развёртывания можно задавать windriverPath, windriverName – путь до драйвера и имя исполняемого файла; windriverParam – дополнительные параметры запуска, ежели таковые потребуются.

    В начале начал в коде нужно прикрепить переменную драйвера к собственно Winium драйверу:

    Если мы не хотим запускать какое-то приложение, а просто прикрепляться к какому-либо уже запущенному, то 2 и 3 строчки можно смело опустить.

    Для того, чтобы нам работать с каким-либо элементом, нам сначала нужно к нему прикрепиться. Известны три механизма прикрепления – By.name – по полю Name, By.className — по полю ClassName и By.xpath для более изощрённых условий поиска. Также если нам нужен первый/единственный элемент, мы можем использовать метод findElement, а если мы хотим получить список всех таких элементов, то нам нужно использовать метод findElements. Во втором случае элементы будут добавлены в порядке tab-ордера. Примеры использования:

    Читайте также:  Yarn установка windows 10

    Так же мы можем прикрепляться к элементам другого элемента:

    Если первые два механизма прикрепления очень узкоспециализированы, т.е. работают строго в иерархической структуре и строго с полями Name и ClassName, то для работы с иными случаями нам потребуется третий механизм, а именно By.xpath.

    В этом механизме всё строго по канонам использования xpath (во всяком случае, с использованных случаях всё работало как нужно). С помощью xpath можно получить и обрабатывать поля IsOffscreen, AutomationId, HasKeyboardFocus:

    При использовании xpath, особенно если мы работаем в более сложных условиях, удобно для отслеживания вероятных ошибок логировать всю строку, передаваемую в xpath:

    Конечно же, мы можем искать xpath’ом элементы не только текущего окна, но такой поиск может длиться достаточно продолжительное время.

    Есть еще другие способы поиска, но, так или иначе, все сводятся к описанным выше. Например, такие.

    Также нам может потребоваться имитация ввода клавиш с клавиатуры. В обычном порядке это делается методом sendKeys(«Последовательность символов») у элемента. Однако, следует помнить, что некоторые символы используются как служебные и их надо экранировать (например, «+» это Shift, и для того, чтобы ввести «+», нужно передать последовательность «+=»). Для удобства пользования кодом можно написать обёртку, которая бы автоматически заменяла все «+» на «+=», но тут как кому удобнее. Подробнее ознакомиться со стандартами передач комбинаций клавиш можно, например, тут. Тем не менее, возникали проблемы с корректной передачей нажатий стрелок на клавиатуре, так что к сожалению, при текущей версии драйвера придётся искать обходные пути.

    Одним из этих обходных путей является кликанье мышкой по координатам относительно заданного элемента. Это не самая тривиальная задача, но тут можно использовать Actions:

    где wrk – имя WebElement, от центра которого будем двигать мышкой; x, y – расстояние, на которое будем двигать (положительное значение x двигает курсор вправо, положительное y – вниз).

    Совсем чуть-чуть об общей структуре проекта

    Как уже было слегка отмечено выше, основным элементом взаимодействия с внешним миром являются «рычаги». Их можно удобно описать классом с полями name, className и automationId и хранить в отдельных классах по блокам.

    Так как автоматические тесты нередко повторяют какие-либо шаги друг друга, то эти процедуры тоже удобно оформить в виде отдельных статичных методов и тоже хранить в отдельных классах по блокам.

    Всё остальное можно смело делать как обычно — классы с тестами, класс для запуска тестов и прочее.

    10 лучших программ для диагностики компьютера

    Содержание

    Содержание

    Компьютеры настолько плотно вошли в нашу повседневную жизнь, что стали необходимостью. Они предназначены не только для развлечения и отдыха, но также для работы и учебы. Компьютеры, как и любое другое устройство, могут работать некорректно. Вы можете столкнуться с такими проблемами, как синий экран смерти, частые сбои системы (BSoD), запаздывающий интерфейс и т. д.

    Большинство из этих сбоев в работе является следствием проблем, связанных с оборудованием. Если не предпринимать никаких мер, последствия могут быть очень печальными.

    Устранение неполадок и ремонт компьютера не всегда являются легкой задачей. Правильно диагностировать проблему и собрать системную информацию — залог успеха в данном вопросе. Существуют различные средства диагностики оборудования, которые помогут найти неисправную деталь компьютера и устранить проблему.

    В этой статье мы рассмотрим подборку аппаратных средств по сбору информации, диагностике и мониторингу различных компонентов вашей системы.

    AIDA64

    Начнем с одной из самых известных и комплексных программ для получения информации о компонентах системы, проверке стабильности и тесте производительности. Конечно же, это AIDA64. Интерфейс программы предельно понятен и прост, все разделено на группы.

    В данной программе можно узнать подробную информацию о каждом компоненте системы, температуре и аппаратных частях компьютера. Есть тесты, показывающие производительность отдельных компонентов при выполнении различных операций.

    Также вы можете сравнить производительность своих комплектующих с уже протестированными.

    Помимо этого, в программе имеются различные тесты на проверку стабильности компонентов компьютера.

    Читайте также:  What are bin files in linux

    Программа OCCT предназначена для комплексной проверки комплектующих компьютера на стабильность (CPU, GPU, RAM, Power).

    Помимо наборов тестов, программа отображает общую информацию о компонентах и позволяет мониторить температуру, энергопотребление и многое другое.

    Известная, а главное, полностью бесплатная программа CPU-Z,в которой можно посмотреть подробную информацию о процессоре, материнской плате, оперативной памяти и видеокарте. Тут также присутствует тест производительности процессора для сравнения с наиболее популярными моделями.

    Есть возможность проверки процессора на стабильность, однако лучше это делать сторонними программами. Как, например, Linx, Prime95 или упомянутые ранее AIDA64 и OCCT.

    Работает по аналогии с CPU-Z, только все заточено на работу с видеокартами. Поможет досконально узнать все про аппаратные характеристики видеокарты и информацию, зашитую в биос.

    Также есть возможность мониторить параметры видеокарты: частоту, температуру, потребление напряжения и другое.

    Есть возможность проверки на стабильность, но, как и с CPU-Z, имеются специальные программы, которые справляются с этим намного лучше. Например, MSI Kombustor.

    MSI Kombustor

    Это утилита-бенчмарк, созданная на основе всем знакомого Furmark. Позволяет проверить видеокарту и ее память на стабильность. Также проверит на прочность систему охлаждения видеокарты.

    MSI Afterburner

    Самая известная и широко используемая утилита для разгона видеокарт. Кроме разгона, присутствует возможность мониторить информацию о видеокарте и системе в целом, а также выводить эту информацию на экран поверх игры.

    Thaiphoon Burner

    Нужно узнать всю подноготную о планках оперативной памяти? Thaiphoon Burner считывает данные SPD, в которой хранится вся информация об оперативной памяти.

    Вы получите полную информацию о памяти и производителе чипов памяти. Это одна из лучших программ подобного рода.

    Коль речь зашла о памяти, и вам требуется узнать тайминги оперативной памяти, причем не только первичного порядка, на помощь придут несколько программ. Программы различаются по производителю процессоров (или лучше платформ) AMD или Intel.

    Чтобы узнать всю информацию о таймингах для процессоров AMD Zen 1000-2000 серии, можно воспользоваться программами ZenTimings и Ryzen Timing Checker.

    С процессорами Zen 3000 лучше воспользоваться программой Ryzen Master или ZenTimings.

    Для процессоров Intel есть свои программы для получения информации о таймингах — это Asrock Timing Configurator и Asus MemTweakIt.

    Пусть вас не пугает название Asrock и Asus в названии программ. Они работают на материнских платах любых производителей. Главное, чтобы был процессор от Intel.

    Не будем вдаваться в подробности по поводу проверки памяти. Недавно на эту тему вышла отдельная статья — «Как проверить оперативную память на ошибки».

    CrystalDiskInfo

    Узнать о состоянии жесткого диска или SSD поможет программа CrystalDiskInfo.

    Можно оценить состояние жёстких дисков при помощи считывания S.M.A.R.T, проверить температуру, количество включений и общее время работы накопителя. А в случае с дисками SSD — еще и объём данных, записанных на устройство за все время работы.

    Оценить производительность диска можно при помощи программы CrystalDiskMark.

    Victoria HDD

    Лучшая программа для поиска и исправления ошибок жесткого диска. Досконально проверяет поверхность винчестера, обнаруживает повреждённые блоки и затирает их, чтобы в дальнейшем не записать туда файлы и не повредить их. Victoria HDD теперь работает и с SSD-дисками.

    HWiNFO

    Во время тестирования на стабильность главное — уделять внимание температуре компонентов. И тут наилучшее решение — это программа HWiNFO.

    Программа мониторит все важные данные о состоянии аппаратных компонентов компьютера, включая процессор, видеокарту, оперативную память, жесткие диски, сетевые карты, показания датчиков и т. д.

    Перечисленные программы помогут полноценно оценить состояние комплектующих, узнать детальную информацию, а также протестировать их на стабильность и сравнить производительность с другими моделями. С их помощью вы сможете провести первичную диагностику и найти виновника нестабильной работы компьютера.

    Почти все приложения, рассмотренные сегодня, распространяются совершенно бесплатно. Даже не обладая обширными знаниями в области компьютерного железа, можно самостоятельно проверить работу комплектующих, не прибегая к услугам шарлатанов из компьютерных мастерских.

    Если же не выходит диагностировать неисправность самостоятельно, можно обратиться в DNS, где стоимость этой услуги составляет всего 500 рублей.

    Оцените статью