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

Техники локализации плавающих дефектов
онлайн, начало 17 августа
Школа для начинающих тестировщиков
онлайн, начало 20 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа

Публикации Petrov.Sergey

8 публикаций создано Petrov.Sergey (учитываются публикации только с 14 августа 2019)


#150314 Что проще: найти хорошего автоматизатора или вырасти своего?

Отправлено автор: Petrov.Sergey 12 апреля 2016 - 15:38 в Автоматизированное тестирование

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



#147598 Тестирование метода с нативными функциями (phpunit)

Отправлено автор: Petrov.Sergey 07 января 2016 - 07:42 в Начинающему тестировщику

метод - это чёрный ящик.

Есть что-то на входе и есть что-то на выходе.

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

 

Поэтому используй тест-анализ:

- какими могут быть входные данные? Есть ли "граничные" значения? Не забудь проверку на NULL. Не забудь про нетипизированность РНР.

- какими могут быть выходные данные? Разбей на классы эквивалентности и реализуй те тесты, которые на выходе дают объекты из каждого класса эквивалентности.

- не забудь проверки на исключения (ошибочные входные данные, например, на вход подаётся стринговый путь к файлу, а ты подай какую-нибудь стринговую абракадабру или путь к файлу, к которому нет прав)

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




#146696 Ожидание изменения текста в элементе

Отправлено автор: Petrov.Sergey 01 декабря 2015 - 18:05 в Selenium - Functional Testing

 

Попробуйте сделать ожидание на существование элемента с конкретным текстом или значением.
Например - ждем ссылку с текстом Save. Для этого просто пишем соответствующий локатор (Как написал все, заметил что Petrov.Sergey это и предлагает :smile:):

WebDriverWait waitLinkSave = new WebDriverWait(driver, TimeSpan.FromSeconds(30));//Ждем 30 секунд, например
waitLinkSave.Until(ExpectedConditions.ElementExists(By.XPath(//a[contains(text(), 'Save')])));//Указываем что ждем ссылку с текстом "Save"

Хотите прикол? Вы ищете по ключевому слову contains(...)

Строка "10568" содержит строку "1".

То есть "10568".contains("1") = true

В Вашем примере ссылка с текстом "Save text" будет найдена (ожидание сработает), но это будет совершенно не тот элемент, который нужен.

 

Топикстартеру нужно точное совпадение.

 

Ну, возможно, я нечётко описал. У меня значения выдёргиваются из базы. Произвожу поиск, в основном, там 1 (но бывает 2 и 3). Элемент после первого появления есть всегда и не исчезает, меняю критерий, появляется большее число. Т.к. элемент не меняет никаких атрибутов, то я использую ожидания, чтобы убедиться, что поиск вернул результат, а потом проверяю. Время поиска 2-40 секунд.

 

1) "произвожу поиск, в основном, там 1 (но бывает 2 и 3)"

Вопрос: как производите поиск?

 

2) "Элемент после первого появления есть всегда и не исчезает. Меняю критерий, появляется большее число."

Вопрос: какой критерий меняете? На что? Откуда появляется большее число? На основании чего оно появляется?

 

3) "Т.к. элемент не меняет никаких атрибутов, то я использую ожидания".

Знаете, со стороны это звучит как "В огороде бузина, а в Киеве дядька"

 

4) "я использую ожидания, чтобы убедиться, что поиск вернул результат"

Ожидание может и не найти элемент, вылетев по таймауту. А точнее, по времени IMPLICITLYWAIT

 

5) "я использую ожидания, чтобы убедиться, что поиск вернул результат, а потом проверяю".

Что проверяете? Что поиск вернул результат? Так за Вас это уже сделало ожидание - либо вернёт найденный элемент (значит, результат есть), либо вылетет (значит, результата нет).

 

6) "Время поиска 2-40 секунд"

40 секунд время поиска?!  :shok:

Переписывайте тест!




#146652 Нафига вы спрашиваете на чем написан был продукт?

Отправлено автор: Petrov.Sergey 30 ноября 2015 - 18:27 в Управление тестированием

@#$% чувак, ты огонь! Кланюсь в пол =))))

Но это же единичный случай, не? Большинство задач же на уровне интерфейса? Или это большинство задач только для джунов и мидлов, а крутые тестеры все подряд могут?

Нет, это не единичный случай.

Я тоже на 80-90% бэкендщик. И у меня тоже случаются различные детективчики.

 

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

Или: Если знаешь, на чём было написано ПО, значит можешь знать тонкости языка => сможешь бить по "больным местам".

 

Например, РНР нетипизированный, в котором '' == null == 0 == false. И я своих коллег поначалу не раз на этом ловил.

Любой вопрос, даже если Вы не понимаете его смысла или "зачем его задали" имеет свою какую-то подоплёку.




#146649 Ожидание изменения текста в элементе

Отправлено автор: Petrov.Sergey 30 ноября 2015 - 17:28 в Selenium - Functional Testing

Предложение:

Фактически, топикстартер ожидает, что на странице через какое-то время будет конкретный элемент с текстом.

Повторюсь: не "элемент изменит текст на «...»", а "появится элемент с текстом «...»"

То есть достаточно в локатор передать дополнительное условие, что text() = '1', и использовать presenceOfElementLocated(By locator)

 

И не надо изобретать свои велосипеды — главное правильно задать вопрос.




#146646 Save Data

Отправлено автор: Petrov.Sergey 30 ноября 2015 - 16:22 в Автоматизированное тестирование

 

Я бы рекомендовал Вам не пользоваться календарём в ущерб java.util.Date.

 

Во-первых, календарь занимает больше памяти.

Во-вторых, время создания объекта Calendar больше, чем обычного Date

В-третьих, Вам всё равно же приходится конвертировать в Date, т.к. методы класса SimpleDateFormat принимают на вход дату только в формате Date.

 

Достаточно убедительно?

 

В-четвёртых, календарь - неклонируемый статический объект с отложенной инициализацией.

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

 

Если очень нужно удобно манипулировать датой-временем, рекомендовал бы обратить внимание на joda.DateTime.

Объекты этого класса генерятся не статически => можно создать объект и много раз его переиспользовать. Его методы не изменяют сам объект, а возвращают новый объект с нужными свойствами.




#146645 Генератор кириллических тестовых данных (Java)

Отправлено автор: Petrov.Sergey 30 ноября 2015 - 15:55 в Начинающему тестировщику

Я у себя использую такой метод:

    public static String getRandomWord(int length, String alphabet) {
        StringBuilder sb = new StringBuilder(Math.max(length, 16));
        for (int i = 0; i < length; i++) {
            int len = alphabet.length();
            int random = RND.nextInt(len);
            char c = alphabet.charAt(random);
            sb.append(c);
        }

        return sb.toString();
    }

На выходе - произвольное слово длины LENGTH, построенное на входном алфавите.

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

RND = new SecureRandom();




#146373 Стандарты, если не хватает прав. А как у Вас?

Отправлено автор: Petrov.Sergey 23 ноября 2015 - 20:53 в Начинающему тестировщику

Кнопки лучше не прятать (style="display:none" или hide), а вообще выдавать в сорсах страницы только в случае наличия прав у роли пользователя.

Хайдить элементы страницы нужно только в одном случае: если права у роли есть, но спрятанный (хайдом) контент не относится к текущим действиям или не выполнены какие-то определённые условия.

 

Пример: если значение какого-то селектора = "Другое", то появляется <input type="text"> или <textarea>. В противном случае этот элемент должен быть скрыт от глаз (hide).

Второй пример: если пользователь с правами "Оператор", то пункт меню "Администратор" должен в принципе отсутствовать даже в сорсах страницы.

 

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





Яндекс.Метрика
Реклама на портале