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

Тестирование мобильных приложений
онлайн, начало 22 января
Программирование на C# для тестировщиков
онлайн, начало 24 января
SQL для тестировщиков
онлайн, начало 27 января
Автоматизатор мобильных приложений
онлайн, начало 20 января

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

8 публикаций создано Petrov.Sergey (учитываются публикации только с 20 Январь 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).

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

 

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





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