Перейти к содержимому

checo

Регистрация: 30 авг 2011
Offline Активность: 26 авг 2020 12:18
*****

#161637 Художественная литература для тестировщиков

Написано checo 17 августа 2017 - 10:36

Не на 4 недели, но у Азимова в сборнике "Я, робот" есть несколько рассказов, близких к тестированию.


  • 1


#161512 Pytest + Testrail

Написано checo 10 августа 2017 - 11:38

В conftest.py прописать хук:

def pytest_report_teststatus(report):
    ...

Статус будет в полях report.passed, report.failed, report.skipped.

Он вызывается 3 раза для каждого теста, надо проверять, что report.when == 'call'. Еще в report.when может стоять 'setup' и 'teardown', но их статусы не зависят от статуса выполнения теста.


  • 1


#160778 Тестирование API: Кто должен проверять возвращаемые данные на корректн

Написано checo 27 июня 2017 - 15:51

Так вот программер вставил данные, возвращаемые хранимкой не в те ключи метода(перепутал, замылился глаз и тд).

В итоге случился спор с коллегами, кто должен отвечать за корректность данных из GET запросов?

Какое Ваше мнение на этот счет?

 

Ну, насчет ответственности - она у каждого своя.

Помнится, на какой-то конференции был доклад, где выступала девушка-тестировщик из 2Gis. И оказалось, что у них на таком сложнейшем продукте всего 2 или 3 тестировщика.

Так что, главное - это чтобы программеры писали качественно. И за баги отвечают они.

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


  • 1


#160277 Winium обращение к таблице

Написано checo 24 мая 2017 - 16:28

Есть контакт с разработчиками приложения?

Хорошо, если они пояснят, откуда этот контрол. Насколько я понимаю, UIAutomation может работать только со стандартным DataGrid.

 

Если контрол из какой-то стандартной библиотеки виджетов, вроде Qt или DevExpress, можно поставить демо-версию TestComplete и попробовать, справится ли он с определением ячеек. Если это в принципе возможно, попробуйте поискать, нет ли бесплатных тестовых инструментов именно для этих виджетов.

 

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


  • 1


#160275 Winium обращение к таблице

Написано checo 24 мая 2017 - 14:11

Возможно, таблица нестандартная.

Посмотрите, какие свойства выдает UISpy или Inspect.exe. И есть ли у этого объекта в свойствах поддержка TablePattern. Возможно, к другому объекту надо обращаться. Если поддержки этого паттерна нет, тогда проблема с тестируемостью приложения. Ну или посмотреть, может быть, этот грид только внешне грид, а ячейки доступны как отдельные объекты.


  • 1


#159780 PageFactory, DefaultFieldDecorator и CacheLookup

Написано checo 21 апреля 2017 - 07:16

Если заглянете в реализацию DefaultElementLocator, увидите, что аннотация @CacheLookup работает приблизительно так же. Проблема в том, что элемент кешируется навсегда, и повлиять на это нельзя.

 

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

 

В вашем варианте, если действия выполняет один участок кода, можно сделать ручное управление:

try {
    SomethingToStartCaching();
    element.clear();
    element.sendKeys("abc");
} finally {
    SomethingToDisableCaching();
}

Самое простое решение, которое позволит так делать (но не потокобезопасное):

 

  1. Создаем CacheTriggeringElementLocatorFactory implements ElementLocatorFactory, которая будет возвращать CacheTriggeringElementLocator.
  2. Создаем CacheTriggeringElementLocator implements ElementLocator, который содержит поле static boolean и 2 public static метода для изменения этого поля (причем метод, устанавливающий false, должен также обнулять кешированные значения).
  3. Передираем реализацию DefaultElementLocator с той разницей, что вместо shouldCache используем наше поле.

 

Самое простое решение для параллелизации - превратить static boolean в static Map<Long, Boolean>, где в качестве ключа брать Thread.currentThread.getId().


  • 1


#159622 Парсер: надежность работы и тестирование

Написано checo 12 апреля 2017 - 16:04

Смотрите.

Здесь решается 2 задачи.

 

Первая - протестировать парсер на надежность. При этом Вы хотите опираться на тестовые оракулы, которые не содержат четких проверок (только формат данных). А если, к примеру, парсер считывает не все данные? Должны быть образцы страниц с известным содержимым, с моделированием разных граничных случаев, и четкий образец, с которым сравниваются результаты парсинга 1 в 1.

 

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

Если парсится одна и та же версия сайта, то необходимость такой правки - косяк разработчика. А если сайт развивается, никто не может дать гарантию 100% надежной работы. Собственно, зачем тестировщики и прибегают к созданию page object'ов. Если структура страницы сильно меняется, можно всегда подправить локаторы, не прибегая к изменению тестов.


  • 1


#159545 Статический анализ кода

Написано checo 10 апреля 2017 - 10:36

Значение $str_COMMENTS вставляется непосредственно из пост-запроса без проверки.

Если в этом поле запостить какой-нибудь тег <script> с каким-нибудь вредоносным кодом, то при загрузке страницы он выполнится.


  • 1


#159396 Selenium 3.3.1 Java, перестал работать предикат. Кто победил? :-)

Написано checo 04 апреля 2017 - 07:37

Если особенность подключения к сети - это прокси, то ее в конфиге мавена указать можно.
  • 1


#159320 Объявление и использование глобальных переменных

Написано checo 29 марта 2017 - 14:50

Про reset ничего не могу сказать.

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


  • 1


#159316 Объявление и использование глобальных переменных

Написано checo 29 марта 2017 - 12:40

Скриптовые компоненты в помощь.

https://jmeter.apach...l#bsh_variables

 

Не вижу смысла менять User Defined Variables. Я туда обычно заносил вводные настройки для запуска тест-плана. Но, вполне возможно, они так же доступны через vars.


  • 1


#159286 Appium как подключить девайс?

Написано checo 28 марта 2017 - 15:40

 >>> 1. Через системное меню девайса разрешаем на нем отладку. - это значит включить Developers option?

Да, и USB Debugging, как вы уже сделали

 

>>> 2. ...включила USB Debugging на телефоне, но компьютер это не видит

Компьютер это видеть не должен, это видят инструменты из Android SDK.

 

>>> 3. Подключаем и набираем в командной сроке "adb devices". Устройство должно распознаться, выведется его uid. - разумеется не распознается эта команда

Писали же, что всё настроено. Значит, не всё.

Читаем тут: http://appium.io/sla...oid-app-testing

SDK должен был поставиться вместе со студией либо в Program Files, либо в %HOMEPATH%\AppData\Local.

 

>>> 4. Что в нашем случае значит UID  и в какие параметры его можно внести?

В Appium GUI можно дописать любые дополнительные ключи для запуска сервера, см. тут http://appium.io/sla...va#server-flags

Для автотестов - большинство из этих ключей дублируются в Capabilities: http://appium.io/sla...er-capabilities

 

>>> 5. Прикрепляю скриншот (ссылка на гугл драйв) Appium GUI, так как он у меня есть.

Да, GUI виндовый. Вот в этом окошке все параметры, которые соответствуют запускаемому приложению, надо заполнить. Только сервер должен быть остановлен. Сначала заполняем, потом запускаем.

Если непонятно, что вводить в Package и т.д. - можно обратиться к разработчикам приложения, или самостоятельно через Android Device Monitor (в Android SDK находим \sdk\tools\monitor.bat)

 

Вообще, в своё время без проблем самостоятельно разобрался с помощью документации на http://appium.io/ и гугленья вопросов по ADB.


  • 1


#159275 Appium как подключить девайс?

Написано checo 28 марта 2017 - 11:04

  1. Через системное меню девайса разрешаем на нем отладку.
  2. Если производитель выпускает специфичный драйвер/Suite для PC, лучше его установить.
  3. Подключаем и набираем в командной сроке "adb devices". Устройство должно распознаться, выведется его uid.
  4. Appium по умолчанию сразу будет работать с устройством, если оно одно. Если не одно, можно указать uid в параметрах.
  5. Appium работает сразу с приложением. Надо в меню Appium GUI настроить все параметры запуска приложения, и тогда после старта Appium Server приложение стартует на устройстве.

А "на нем писать тесты" - не совсем понятно. Насколько я знаю, в Appium есть рекордер, но раньше он был только в версии для мака. Пишем, как обычные тесты для WebDriver. Только немного больше разных параметров надо передавать в Driver Capabilities.


  • 1


#158773 Консоль разработчика (F12) для тестировщика

Написано checo 06 марта 2017 - 07:25

  • В автоматизации - отладка javascript. Когда приходится вебдрайверу передавать большой скрипт строкой, можно сначала отладить в консоли.
  • Вкладка DOM. Иногда для теста нужны данные, которые не отображаются на экране (например, скрытые id, которых нет нигде в html-разметке). Можно покопаться в DOM и выяснить, как их выдернуть из кода фронт-энда.
  • Опять же, вкладку Network можно использовать для простых тестов на безопасность и серверную валидацию. Там есть функция Edit and resend для запросов.

  • 1


#158772 Jenkins не запускается

Написано checo 06 марта 2017 - 07:15

На всякий случай, скачал свежий с сайта (вдруг, в нем ошибка). Стартую из командной строки в Windows 8, под Java 8. Запускается прекрасно.

Чтобы куда-то копать, нужно знать, в чем причина падения. Скорее всего, проблему можно найти в логе. Хороший повод научиться искать. В приведенном отрывке лога нет проблемы, там просто завершение работы.


  • 1