Ответы пользователя по тегу JavaScript
  • Как написать документацию для приложения?

    lxsmkv
    @lxsmkv
    Test automation engineer
    User story описывает цели которые могут быть достигнуты с помощью приложения. Они определяют пользу. Например, чтобы решить какую задачу выполнить сегодня, пользователь хочет определить самые приоритетные задачи. Польза приложения тут в помощи принятию решений по задачам. Тут нужно думать максимально с т.з конечного пользователя. Зачем он что-то делает и как продукт может помочь ему в этом.

    Use cases будут включать в себя описания какие взаимодействия с приложением пользователь может произвести чтобы достичь своей цели. Например: Отсортировать по приоритету. Отфильтровать по тегам. И пр. По юзкейсам можно проверить, что приложение действительно предоставляет заявленные функции заявленным образом.

    По юзкейсам можно проводить системное тестирование. Т.е. есть заявленный сценарий, работает он или нет.

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

    По функциональной спецификации пишется реализация, и сам код приложения уже покрывается юнит-тестами.
    Ответ написан
    2 комментария
  • Алгоритм нахождения победителя (крестики нолики)?

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    В чем именно вы хотите убедиться? Какой тип ошибки вы хотите поймать? По определению асинхронная функция совершенно законно может вернуть ошибку если промис не был выполнен в заданный промежуток времени. Тут тест по моему опыту бесполезен.
    T.e. нужно спросить себя "какую полезную информацию я получу если этот тест упадет?". Никакой - ваш "невод" может законно вернуться с "тиной морскою". Это природа промиса.
    Другое дело если вы хотите убедиться в том что не изменился path. Для этого нужен тест на путь. Вроде test_path_available

    Чтобы тест давал полезную информацию должно произойти что-то чего тест не ожидал. Например поменялся интефейс Application и функция load стала называться load_path. Тогда ваш тест отвалится и вы заметите изменение. Проверять что вы получите отказ если вы можете получить отказ - бессмысленно.
    Простите что три раза об одном и том же разными словами, но это важный момент при дизайне тестов.
    Опять же если вы хотите проверить за какое время вы получаете ответ - это имеет смысл, но это область нагрузочного тестирования.
    Ответ написан
    6 комментариев
  • Стоить ли вы на это письмо и отправить мне?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я думаю можно что-то такое сделать. Итератор над списком пользователей гарантирует что каждая запись будет задействована только один раз.
    import java.util.Arrays;
    import java.util.Iterator;
    public class Main {
      public static void main(String[] args) {
        User foo[] = { new User(1), new User(2), new User(3), new User(4)};
        Iterable<User> userlist = Arrays.asList(foo);
        Iterator userpool = userlist.iterator();
        while(userpool.hasNext()){
         Starter.startTestWithUser((User)userpool.next());
        }
      }
    }
    class User{
      private int id;
      public User(int id){ this.id = id;  }
      public int id(){ return this.id;  }
    }
    class Starter{
      public static void startTestWithUser(User user){
        System.out.println("Creating Test for user "+user.id());
      }
    }

    выдача

    Creating Test for user 1
    Creating Test for user 2
    Creating Test for user 3
    Creating Test for user 4
    Ответ написан
    Комментировать
  • Как сделать правильный цикл?

    lxsmkv
    @lxsmkv
    Test automation engineer
    у вас "#answer1" ".error1" "#q1" все - строки, создавайте их конкатенацией с индексом, как-то так "#answer"+i.toString(); и.т.д а потом вставляйте в скобки.
    Ответ написан
    2 комментария
  • Раскритикуйте мобильное меню - имеет право существовать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    для мобильной страницы это одно из адекватных решений, до кнопки можно дотянуться пальцем. Так сделано на хабре. Можно еще сделать чтобы кнопка плавала при скролле. либо меню было зафиксированно. Также видел вариант, что при свайпе в сторону открывается меню.
    Ответ написан
    Комментировать
  • Правильное тестирование Javascript?

    lxsmkv
    @lxsmkv
    Test automation engineer
    --
    Как перестать беспокоиться и начать писать тесты

    Задача тестов отвечать для Вас на вопросы. Совершенно неважно к какой вымышленной категории Вы эти тесты отнесете.
    Важно чтобы при проектировании теста Вы учитывали, что тест доказывает и чего он не доказывает либо не полностью доказывает. Какую информациою он Вам дает и какую не дает. На что он указывает и на что не указывает. У меня масса таких тестов про которые можно сказать "это не 100% гарантия, но лучше чем ничего".
    Чем меньше Вы будете беспокоиться о том, к какому типу относятся Ваши тесты, тем быстрее Вы начнете думать о том, а что же я хочу проверить и как я могу это проверить. И просто будете это проверять.

    Я читал достаточно разных определений, и скажу что нет единого мнения о том, что как называть. Но есть и хорошая новость - названия не помогут Вам сделать хороший тест. Помогут только правильные вопросы к системе: "в чем я хочу убедиться" и "как я могу в этом убедиться". И поскольку убедиться во всем досконально нехватит никаких ресурсов, Вы начнете искать для себя приемлемые компромиссы, между информационной ценностью тестов и скоростью/легкостью их написания и поддержки.

    Чтобы Вы лучше поняли бессмысленность всех этих определений:
    Лакмусовая бумажка тоже тест - это интеграционный тест или юнит тест, или это приемочный тест? Где границы системы? Он просто говорит Вам: "Да, уровень кислотности не выше чем". А вопрос к этому ответу соответственно: "Не превышает ли уровень кислотности значение х?". Вам важна информация ("что я хочу знать") и способ получить эту информацию - лакмусовая бумажка.
    Ответ написан
    Комментировать
  • Написать тест jsapi для корзины товаров?

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

    Если вы подозреваете торможение на определенном участке то нужно замерять его.
    Можно конечно сделать тест на селениуме, который будет выбирать и добавлять в корзину продукты, и перезагружать страницу и мерять сколько длилась загрузка.
    Но если вы просто хотите определить узкое место, автоматизация тут не нужна, такой эксперимент будет быстрее сделать руками.
    Ответ написан
    1 комментарий
  • Почему скрипт в jsfiddle.net работает, а из index.html нет?

    lxsmkv
    @lxsmkv
    Test automation engineer
    у меня так все работает. IE, Chrome, FF
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
      <style>
      #trigger {
      width: 100px;
      height: 100px;
      background: gray;
    }
    
    #trigger2 {
      width: 100px;
      height: 100px;
      background: black;
      display: block;
    }
      </style>
    <body>
    <div id="trigger"></div>
    <div id="trigger2"></div>
      <script>
        switch ('x') {
      case 'x':
        document.getElementById('trigger').style.display = 'none';
        break;
      default:
        alert('yt')
    };
    
      </script>
    </body>
    </html>
    Ответ написан
    Комментировать
  • Как практиковаться JavaScript?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я бы начал со второй части, обьектного дерева браузера, применение js для изменения содержимого страницы. Повесить фунцкию на событие нажатия по кнопке. Сделать так чтобы картинка менялась при нажатии, и прочие мелочи. (Я бы не стал учиться вождению автомобиля с изучения устройства коробки передач) Тонкости ооп в js (часть 1) и пр. я бы отложил бы на потом.
    Ответ написан
    Комментировать
  • Какой оптимальный (время написания тестов/эффективность) вариант тестирования веб-апи?

    lxsmkv
    @lxsmkv
    Test automation engineer
    тестирование регистрации и аутентификации никак с точки зрения теста друг с другом не связаны.
    в тестах регистрации вы хотите убедиться в том что если ввести невалидные данные то система даст отрицательный ответ. и если данные валидные то система ответит положительно.
    при логине вы хотите убедиться в том что если послать системе данные не существующего аккаунта система даст отрицательный ответ. если дать данные заблокированного аккаунта (ну например есть у вас такая категория), система ответит правильным сообщением. и, если пользователь существует и не заблокирован система ответит положительно. Естественно чтобы провести эти тесты, вам понадобится один валидный аккаунт в базе, чтобы система могла ответить положительно, и данные одного не существующего аккаунта, и одного заблокированного аккаунта. Если логин в систему не работает, ваши тесты логина обнаружат баг.
    Чтобы добится независимости от такого возможного бага, вы при тестировании запросов с залогиненым пользователем настраиваете систему перед тестом таким образом чтобы она не учитывала информацию по логину.

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

    Однако в случае если при тестировании входа выяснится что дверной замок не работает, то включить дверной замок для теста не получится, и второй тест скажет что мол замок двери открылся, все хорошо, однако на самом деле замок был все время открыт, потому что неработал. (т.н. false positive)
    Ответ написан
    6 комментариев
  • Как рассчитать длительность mp3 файла на клиенте (js) не загружая на сервер?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Ответ написан
    Комментировать
  • Как выбрать актуальный путь в Game Dev'e?

    lxsmkv
    @lxsmkv
    Test automation engineer
    unity поддерживает как платформу и браузер.
    https://docs.unity3d.com/Manual/webgl-building.html

    так что с unity охват платформ будет больше и инструмент мощный.
    Ответ написан
  • Простая игрушка на JS - как поправить?

    lxsmkv
    @lxsmkv
    Test automation engineer
    делайте console.log() под все события на все интересующие вас переменные, и ищите где математика не сходится.
    Не хочу лишать вас бесценного опыта дебаггинга.
    Начните с одним врагом. Или хотя бы с принцессой, поставьте ее посредине, и найдите при каких значениях иксов и игреков два квадрата соприкасаются. Испробуйте все позиции, сверху снизу справа слева :)

    P.S: Обычно начинают с решения математической составляющей начинают. Обкатывают на примитивны графических экземплярах всю логику, а потом добавляют графику и пр. Но соглашусь что так мотивации больше, когда видишь перед собой что-то красивое, а не черно белые геометрические примитивы.

    P.P.S: A почему не на html5 canvas все это. Так надо? Ведь поо нему дофига информации и на все распространенные вопросы есть готовые решения.
    Ответ написан
    Комментировать
  • Как высчитать или координаты находятся внутри полигона?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Все понятно, Гугл обиделся на вас, что вы им не пользуетесь и ушел.
    Попробуйте заманить его обратно этим запросом:
    "point in polygon mongodb"
    Ответ написан
    Комментировать
  • Как расшифровать ответ по GET запросу для парсинга?

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    PhantomJS предназначен для эмуляции действий пользователя на веб странице не используя при этом браузер. Применяется для автоматизированного тестирования веб приложений. В отличии от некоторых других инструментов он позволяет работать с динамикой сайта которая реализована на JS. Думаю он может помочь, да. Но это не точно. Зависит от приложения.
    Ответ написан
    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
    Можно попробовать фильтровочную функцию тогда вам не придется все разбирать. Можно будет просто вызывать фильтр с параметром channel на живом обьекте/json а она будет возвращать что нашла. Пример тут
    Ответ написан
    Комментировать
  • Ошибка в логике?

    lxsmkv
    @lxsmkv
    Test automation engineer
    inp[i].classList.add('err');
    Ответ написан