• Как в зависимости от ссылки, сказать behat тесту на какую ссылку кликать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    bdd тесты (как в прочем любые идеальные автоматизированные тесты) не приемлют разветвлений. каждый вариант ссылки это отдельный тест.
    сначала вы делаете setup а потом проверяете. никакой зависимости от входных данных в тесте быть не должно. зависимость от входных данных может быть перед тестом.
    Ответ написан
    Комментировать
  • Как расшифровать ответ по GET запросу для парсинга?

    lxsmkv
    @lxsmkv
    Test automation engineer
    может поискать api которая предоставляет исходные данные? они же не провайдер данных, сами пользуются каким-то источником.
    Ответ написан
    Комментировать
  • Как избавиться от погрешности при делении суммы?

    lxsmkv
    @lxsmkv
    Test automation engineer
    echo round(9.375, 2);  // 9.38 
    echo round(9.375, 2, PHP_ROUND_HALF_DOWN); //9.37
    Ответ написан
  • Как автоматизировать процессы с помощью PHANTOM JS?

    lxsmkv
    @lxsmkv
    Test automation engineer
    PhantomJS предназначен для эмуляции действий пользователя на веб странице не используя при этом браузер. Применяется для автоматизированного тестирования веб приложений. В отличии от некоторых других инструментов он позволяет работать с динамикой сайта которая реализована на JS. Думаю он может помочь, да. Но это не точно. Зависит от приложения.
    Ответ написан
    5 комментариев
  • Создание робота-паука для сбора данных - где искать информацию?

    lxsmkv
    @lxsmkv
    Test automation engineer
    само это занятие называется web scraping или web harvesting, по этой теме инфы очень много в интернете.
    Ответ написан
    Комментировать
  • Реализация свойства как объекта: паттерн или антипаттерн?

    lxsmkv
    @lxsmkv
    Test automation engineer
    попробуйте написать для ваших объектов юнит-тесты - если это будет легко и удобно - архитектура годная.
    Ответ написан
    Комментировать
  • В каких ситуациях при тестировании может понадобиться Reflection?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Мы используем рефлексию для работы с объектами во время выполнения программы.
    Наша архитектура не всегда предоставляет доступ к объектам (в некоторых частях приложения нет фабрик, нет реестров объектов, нет синглтонов и пр.) либо не предоставляет интефейса для работы с ними. Но такая необходимость признак не очень хорошей архитектуры.
    Если вы хотите тестировать не запуская программу, то рефлексия в принципе и не нужна, только если вы хотите залезть "голыми руками в трансформаторный щиток" и знаете что делаете. Архитектура компонент должна предоставлять вам необходимые интерфейсы для тестирования. Иначе у вас классическая проблема с "testability".
    Такая проблема часто возникает когда сначала пишут приложение, а потом думают как бы его протестировать. Но уже поздно. И приходится рефакторить.
    Ответ написан
    Комментировать
  • Клавиатура для программиста, какую выбрать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    для печати только механика.
    Ответ написан
    2 комментария
  • Как правильно использовать инкапсуляцию в Page Object паттерне?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если интерфейс контроллера предназначен для простых смертных, лучше писать функции общего плана с параметрами. Так вы сведете к минимуму возможность ошибочного использования. Например чтобы выбрать предмет из списка его нужно сперва раскрыть раскрывание будет производиться внутри общей функции напр. selectItemFromListMatchingName(String n) путем вызова приватной функции openItemList() а она будет использовать приватную функцию isListOpen() чтобы не открывать уже открытый список. Править такие тесты очень легко. Вы чините код в одной маленькой функции один раз. И все тесты которые опираются на нее чинятся автоматически.
    Ответ написан
    Комментировать
  • Правильно ли объясняется в тексте почему в 1 кб 1024 байт?

    lxsmkv
    @lxsmkv
    Test automation engineer
    знаки классической печатной машинки (американской) ~ различных 94 знаков (укладываются в 7 бит) и один паритетный бит. Вот и 8.
    если представить себе матрицу памяти со строками и столбцами, что удобней адрессировать две квадратные решетки по 8x8 = 128
    или решетку 5х25 = 125 ?
    Ответ написан
    Комментировать
  • Чем можно протестировать работу поискового движка на корректность выдаваемых им результатов?

    lxsmkv
    @lxsmkv
    Test automation engineer
    зависит от требований которые закладывались в систему поиска.
    - толерантность к опечаткам - подмена символа или нескольких в строке
    - одинаковый ответ при одинаковом запросе.
    - реакция на длинный запрос (пытается ли она найти пересечения)
    - взять два ключевых слова в одной и обратной последовательности (я ввожу "sony apple" и "apple sony" но система выводит только продукты apple, наверно так не должно быть)
    - порог соответствия, что результаты ниже определенного требованиями порога не выводятся. (пишу "пленка" выводятся только 10-15 результатов и далеко не все продукты содержащие слово "пленка" - наверное так не должно быть)
    - как реагирует алгоритм если в базе очень мало записей? А если очень много записей с очень высокой схожестью?

    Чем тестировать ? У вас есть api, берите jmeter шлите через аpi запросы и проверяйте ответы.
    Или не jmeter a другой интрумент для тестирования web api. в конце концов pycurl или python + curl вариантов достаточно. Первоочередная сложность не в инструменте а в определении требований к системе поиска.

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

    Или возьмите студента-тестировщика он вам быстрее найдет все серьезные недочеты если вам критичен скорый выход на рынок. А автоматизацию подтянете по ходу дела.
    Ответ написан
    Комментировать
  • Как создать карту игры на Pygame?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Ответ написан
    Комментировать
  • Где можно выложить свой проект, так чтобы получить код ревью по нему?

    lxsmkv
    @lxsmkv
    Test automation engineer
    сказать честно, всем пофиг как устроен ваш код, если он делает что надо.

    Я поиграл в версию 1.5 (если это то о чем вы говорите) . Задумка игры интересная, у механики хороший потенциал.
    Общие замечания:
    1) нужно переводить на английский язык. Солидно будет если в игре будет система поддерживающая перевод сообществом.
    2) ИИ, ведет себя не умно, и гадает мое местоположение даже когда я не передвигался. (если вам удастся сделать сносное ИИ для этой игры это будет классно)
    3) консольный ввод очень нудно и муторно, нужна какая-то графическая оболочка и управление мышью. Это быстрее
    4) статистика боя и абстрактные "очки", не то ради чего я играю в нее (работайте над геймплеем - на очки можно купить какую то броню, оружие, патроны для оружия, прокачать точность, чтобы наносить больше урона и т.п.)
    5) солидно будет если у вас код будет с юнит-тестами
    6) солидно будет если будет инструкция как запустить код у себя на компьютере
    7) солидно будет если у вас будет автоматическая система сборки
    8) если идея игры ваша, хорошо будет написать диздок.
    9) такую игру надо делать браузерной либо под андроид.
    Баги:
    1) когда от удара здоровье уходит в минус он пишет негативное значение, а должен писать ноль.
    2) лог

    Ваш ход.
    Что будете делать: атаковать (а) или передвигаться (п)?
    а
    Введите предположительное местоположение противника (от 1 до 6):
    3

    Вы попали по врагу и нанесли ему урон 2 ед.
    Очки здоровья противника после Вашей атаки:
    5/10

    Ход противника
    Противник решил передвинуться...
    Враг передвинулся на энную позицию.

    Ваш ход.
    Что будете делать: атаковать (а) или передвигаться (п)?
    а
    Введите предположительное местоположение противника (от 1 до 6):
    3

    Вы попали по врагу и нанесли ему урон 5 ед.
    Очки здоровья противника после Вашей атаки:
    0/10
    получается я попал по врагу он передвинулся и я ударил в то же место и снова по нему попал. (сложность была выбрана высокая)

    Короче, этот простенький проект можно облепить так, что он покажет что вы на практике знакомы с процессами разработки от идеи до релиза.
    Ответ написан
    5 комментариев
  • Добавить счетчик в имя переменной?

    lxsmkv
    @lxsmkv
    Test automation engineer
    m1 = [0,2,4,6,8]
    m2 = [1,3,5,7,9]
    i= 2
    console.log(eval("m"+i)[3])

    напишет 7.
    Ответ написан
    Комментировать
  • Есть ли книги по мануальному/автоматическому тестированию веб-проектов и прикладного ПО?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Для начинающих:
    "Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах" (Роман Савин) - для тех кто хочет понять, а что же такое тестирование и зачем оно нужно. Написано очень доступным языком.

    Для продвинутых:
    "Lessons learned in software testing" (Kaner, Bach, Pettichord) - никакой воды только жизненные примеры что работает а что нет. Как не наступить на грабли. На эту книгу можно смело положиться на практике. Самому приходилось аргументировать не-тестировщикам сложности тестирования, и пригодилось очень.

    "A practitioner's guide to software test design" (Lee Copeland) - "Матчасть" так сказать.

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

    Ну и конечно слушать лекции Джеймса Баха на ютубе. Он вообще вдохновил меня пойти в тестирование.

    И еще по автоматизации могу порекомендовать вики test automation patterns (Dorothy Graham) - просто "экстракт" практической пользы.
    Ответ написан
    Комментировать
  • Не работает определятор победителя.: ) где ошибка?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я беру поле номером 1
    
    	 O | X | X
    	 ----------
    	   | X | O
    	 ----------
    	 O |   | X
    Твой ход. выбери одно из полей (0 - 8):  3
    ладно...
    
    	 O | X | X
    	 ----------
    	 O | X | O
    	 ----------
    	 O |   | X
    Я беру поле номером 7
    
    	 O | X | X
    	 ----------
    	 O | X | O
    	 ----------
    	 O | X | X
    ничья
    ничья

    тут победитель человек, и компьютер не должен был делать последний ход.

    Мне кажется return None в winner() нужно сдвинуть влево, чтобы он был не в цикле а в конце функции.
    И юниттесты тоже помоглы бы, с их помощью можно потестировать расчет победителя задавая конфигурацию доски.
    Ответ написан
    1 комментарий
  • Как изменить пример так что бы сервер ждал когда клиент подключится?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Прописать в ServerSocketHints переменную acceptTimeout = 0
    Ответ написан
    Комментировать
  • Как правильно получить данные с XML?

    lxsmkv
    @lxsmkv
    Test automation engineer
    другой способ, это jaxb unmarshalling (и вы забудете про парсинг xml как про страшный сон :)
    возмите схему файл xsd по адресу xmlns="maps.yandex.ru/ymaps/1.x"
    из нее через jaxb плагин для эклипс сгенерируйте java классы, и читайте xml с помощью этих классов/методов.
    в любом случае рекомендую разобраться с jaxb - пригодится.

    Или если хочется попарсить, можно попробовать jsoup библиотеку. Она на мой вкус попроще будет чем jdom
    Ответ написан
    Комментировать
  • Есть ли тома книг Randall Hyde: Write great code на русском?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Значит это не та книга ради которой стоит мучаться с переводом. Все действительно стоящие книги были переведены на русский язык. (Имя автора на хабре не упоминается. А это о чем-то говорит. )
    Ответ написан
    Комментировать
  • Почему я создаю одинаковые объекты а у них разные хэшкоды?

    lxsmkv
    @lxsmkv
    Test automation engineer
    на картинке неудачно используют обозначение object1 object2.
    На самом деле имеется ввиду если ссылка указывает на один и тот же объект, то хешкод будет идентичным.
    код
    public class Main{
      public static void main(String [] args){
        H h1 = new H();
        H h2 = new H();
        System.out.println(h1.hashCode());
        System.out.println(h2.hashCode());
        h2 = h1;
        System.out.println(h1.hashCode());
        System.out.println(h2.hashCode());
      }
    }
    class H{
      int a = 2;
      int b = 3;
    }

    output
    1252169911
    2101973421
    1252169911
    1252169911
    Ответ написан
    Комментировать