• Есть ли тренировочный REST API с post, put, get запросами?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Ответ написан
    Комментировать
  • Как именовать интеграционные тесты?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Вынес комментарии в отдельный ответ.
    "например сценарий выдачи книг читателю на абонемент. "

    Делите тесты на 3 группы
    Позитивные: где успешно выдается книга / несколько книг на разные сроки
    Негативные: все перечисленные ваши + отказы бд, сервисов, пустой ответ и т.д.
    Валидация: где запросы на выдачу составлены неправильно, не переданы аргументы и т.д.
    в таких случаях не должно быть изменений в базе.

    Пример нейминга
    rentBook_negative_cases:
    -rentedByOtherCustomer
    -cannotRentAgeStrictedBook (также в позитивные идет кейс когда можем выдать эту книгу)
    -bookRentOverlimit
    Ответ написан
    Комментировать
  • Каким инструментом можно подменить url при открытии ссылки в браузере?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Если вдруг пишете автотесты на ui (selenium например) - то можно прям в коде автотеста нажать ссылку, взять адрес из строки браузера и поменяв хост открыть новую ссылку.
    Ответ написан
    Комментировать
  • Можно ли подключать второй вентилятор башни в Pump Fan и CPU Opt разъёмы?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Можно подключить второй вентилятор на cha_fan (chassis), для него тоже есть регулировка в биосе.
    Ответ написан
    Комментировать
  • Компьютер зависает намертво, не помогает даже reset, проверял все комплектухи, что делать?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Ставлю на красное накопитель.
    Были проблемы подобного рода и на hdd и на ssd.
    Ответ написан
    Комментировать
  • Как в jest протестировать метод в классе, который вызывается по условию?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Инициализировать объект класса с включенным условием?
    Ответ написан
    Комментировать
  • В чём разница между е2е и Unit тестами?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    unit test - тест одного модуля
    е2е - end to end - тест с заданными рамками

    юниты обычно лежат рядом с самими модулями (в golang например client.go и client_test.go рядом - это норм)
    а е2е помещаются в отдельную папку test в которой помимо этих е2е всякие helpers и клиенты к вспомогательным сервисам)

    и запускаются юниты перед сборкой, а e2e после нее
    Ответ написан
    Комментировать
  • Как отправить массив в запросе guzzle?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    часто помогает взять curl запрос (например сгенерить из postman) и посмотреть какого вида данные в нем
    если numbers - массив строк - то надо указать в структуре
    number string `json:"number,string"`

    типа как тут
    https://stackoverflow.com/questions/35674730/marsh...
    (только в ответе а не в вопросе)

    UPD. Недоглядел, у вас там вложенные структуры, чтобы оно нормально парсилось - должны быть две структуры
    структура request, содержащая массив numbers
    и
    структура numbers, содержащая массив number типа строка

    type SomeRequest struct {
    amount float64 `json:"amount"`
    id int64 `json:"id"`
    numbers []Numbers `json:"numbers,array"` //вот тут не уверен в обозначении json
    }

    type Numbers struct {
    number string `json:"number,string"`
    }
    Ответ написан
    Комментировать
  • Как передать фикстуру в параметры теста pytest?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Мне непонятно :)
    Фикстура - это вроде подготовленные объекты, которые можно использовать. Фикстурой может быть как запрос так и объект, который возвращается в этом запросе.

    Абстрагируемся от фикстур. Тестируется API? Позвольте перефразирую ваш вопрос.
    Первый метод возвращает список сущностей GET /items -> response {items: [{obj},{obj},{obj}]} (так?)
    А второй отдает инфу о конкретном obj по его id например GET /item?id=1 -> response {obj}
    тогда мы можем взять items из первого и пробежаться по массиву, вызвав для каждого элемента второй метод
    псевдокод:
    response = GET("/items")
    items = response.body.items
    for i, element in items {
    response = GET("/item", id=element.id)
    assert.equal(response.id, element[i].id) 
    }


    много зависит от реализации api, но чаще всего именно так
    Ответ написан
    Комментировать
  • Как начать автоматизацию на android?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Вы когда вручную тестили - мобилу же тестили?
    Вот там куча кейсов, которые вообщем можно отнести в 3 категории:

    -Отрисовка элементов интерфейса, доступность кнопочек и вьюшек
    -Взаимодействие c сервером
    -Обработка технических ошибок (нет связи, проблема с памятью в телефоне и т.д.)

    Автотесты элементов - с использованием Selenium-like фреймворков (вроде Appium), эмуляцией или использованием реального устройства

    Взаимодействие с сервером - берете проект в Android studio, добавляете тесты на api (retrofit фреймворк или что - то подобное)
    Обработка технических ошибок - тут я не знаю, возможно это надо проверять вручную при крупных релизах.

    Автоматизация нужна не просто "потому-что", а вполне для конкретной цели, иначе это будет бесполезная работа. Обозначьте проблемы, которые вы решаете с ее помощью.
    По языкам: kotlin, Java
    Ответ написан
  • Как распарсить массив JSON на golang?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Еще есть генераторы структур типа https://mholt.github.io/json-to-go/
    Запихиваем туда пример json и получаем структуры, прописываем их в коде и используем.
    Ответ написан
  • Как отправить простой post запрос в классе Kotlin?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Конкретно в классе - хз, но есть в Postman генератор кода для запросов (правда на Java)
    раз
    Unirest.setTimeouts(0, 0);
    HttpResponse response = Unirest.post("http://host.ru:80/user/register")
    .header("Content-Type", "text/plain")
    .body("{\n \"firstName\": \"Conso\",\n \"insertToTestClient\": false,\n \"investEmailDomain\": true,\n \"isLegal\": false,\n \"lastName\": \"Barsukov\",\n \"middleName\": \"Medoedovich\"\n}")
    .asString();

    два
    OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = RequestBody.create(mediaType, "{\n \"firstName\": \"Conso\",\n \"insertToTestClient\": false,\n \"investEmailDomain\": true,\n \"isLegal\": false,\n \"lastName\": \"Barsukov\",\n \"middleName\": \"Medoedovich\"\n}");
    Request request = new Request.Builder()
    .url("http://host.ru:80/user/register")
    .method("POST", body)
    .addHeader("Content-Type", "text/plain")
    .build();
    Response response = client.newCall(request).execute();

    просто вставляется где надо и работает. а там можно и разнести переменные и обернуть как надо.
    Оно вроде обратно совместимое с kotlin, должно работать
    Ответ написан
    1 комментарий
  • Вот купил я ноут с двумя планками ОЗУ по 4гб. Проблема заключается в том что Винда 10 куда-то позаимствов 2гб, тем самым оставив из 8гб только 5.7гб.?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    В биосе должен быть пункт, позволяющий указать объем памяти для интегрированной видюхи. Там можно сократить его по максимуму.
    Ответ написан
  • Как выяснить проблему БП или видеокарта или оба?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Идеальным будет попытка продать комплектующие и купить б/у ryzen 3400+ комплект
    Ответ написан
    Комментировать
  • Можно ли выводить изображение на порт hdmi ноутбука с видеокарты на пк?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Продать ноут на запчасти и купить монитор, беспроигрышный вариант.
    (Сам не против иметь модульные экраны от ноутов, которые можно отсоединить и юзать как мониторы, но увы)
    Ответ написан
    Комментировать
  • Как вы тестируете кейсы когда у вас много разных пользователей?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Вы вручную засовываете токен в local storage?
    Вопрос немного непонятный, но попробую парочку заметок накидать:
    -В книгах по тестированию упоминается pairwise testing, в вашем результате можно сократить чеклист для каждого браузера (поясню, например нет необходимости тестить некоторые пункты одновременно в инкогнито и без)
    Вместо изнурительного прогона всех тестов для всех браузеров можно из регресса выделить "основную" часть, которую прогонять полностью на всех и "дополнительную", которая имеет меньший приоритет/критичность, и эту секцию поделить между клиентами.

    Описал сумбурно, попробую накидать пример:
    Чеклист онлайн-банка: (в скобках наличие большого количества js и подстройки (adapt) под конкретные браузеры в http api)
    Авторизация (adapt)
    Главная (js, adapt)
    Платеж (js)
    Перевод
    Налоги / справки (js, adapt)
    Список операций (js)
    Управление услугами
    Управление безопасностью (adapt)

    секции с adapt / js и критичные секции (которые также могут входить в смок чеклист) проверяем на всех шести клиентах (3 браузера в инкогнито и без)
    секции только с одним js или adapt проверяем только на разных браузерах (то есть 3 прогона)
    секции без js и adapt делим между неинкогнито вариантами трех браузеров (Перевод проверяем в хроме, управление услугами в firefox и т.д.)
    таким образом мы существенно сократим количество проверок без особо ущерба покрытию

    конечно это сугубо синтетический пример, в реальности надо подстраиваться под кучу других условий

    p.s. надеюсь без поллитра кто - нибудь почерпнет полезное из моей писанины
    p.p.s а лучше вкорячить автотесты на апи и автоматизировать проверку верстки / переходов автотестами на ui, там хоть двадцать браузеров вкорячить можно без просадки по затратам)
    Ответ написан
  • Считается ли профессиональным так комментировать блоки и сецкии кода?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Поддержу ответы выше.
    В голову приходит "хороший код в комментариях не нуждается", а нужны они либо там где хитрозакрученная логика, либо как обязательное условие линтеров.
    Ответ написан
    1 комментарий
  • Практическое руководство к написанию тестов?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Начать стоит с вопроса "что тестировать?"(то есть про тест-дизайн)
    и закончить вопросом "как тестировать"(технологии)

    Условно выделите ключевой функционал вашего приложения.

    например если это блог, то краткий чеклист по категориям примерно такой:

    Пользователи:
    Регистрация
    Авторизация
    Смена пароля / восстановление

    Социальная часть:
    публикация сообщений
    комментарии к сообщениям
    настройки приватности

    После составления списка и дополнения его разными критичными замечаниями посчитайте сколько занимает проверка работы приложения по списку во время очередного регресс-тестирования.
    После этого нудные / массовые сценарии автоматизируйте.
    Ответ написан
    Комментировать
  • Что есть негативный сценарий из представленных?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Позитивные сценарии - те сценарии, которые подразумеваются бизнесом
    -результат по поисковому запросу
    -пустой результат, если по адекватному запросу не было ничего найдено (насколько спецсимволы и пробел считаются адекватным запросом - прописывается в документации)

    Негативные сценарии - те, которые подразумевают, что произошла ошибка на том или ином уровне взаимодействия. в поиске их много не наплодишь:
    - некорректный запрос (много символов, хотя тут возможно должна быть обработка строки и сценарий тогда перетечет в положительные)
    - таймаут / потеря соединиения (опять же можно добавить возможность кэшировать запрос и кейс станет положительным)
    - при наличии и необходимости аутентификации - отсутствие результата, если аутентификация провалена
    Ответ написан
    Комментировать
  • Можно ли спалить компьютер с помощью AIDA64?

    Ommonick
    @Ommonick
    qa+dev (scala, golang, ts/js, api, grpc)
    Я его запустил, компьютер стал неистово нагреваться и я оборвал тест, боясь последствий.

    Какая температура была у компонентов? неистово нагреваться - это может быть и 60 градусов и 120
    Если проц и видеокарта не превысили какие нибудь 80 градусов в 30 минутном тесте - то считайте охлаждение работает нормально. (энтузиасты на водянке и перфоманс-гики попрошу воздержаться)

    Скажите, нельзя ли спалить или как-то повредить компьютер это программой?

    Можно, если температура компонентов будет скажем держаться выше 100 градусов цельсия продолжительное время (от часу), тогда больше шанс отвала чипа, деградации процессора

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

    Жесткие диски обычно проверяют другой утилитой, ssd вообще программами типа ssd-life - это про local discs

    А вот gpu (видеокарта) стоит проверить, но лучше это сделать в каком нибудь 3d benchmarke или запустить какую нибудь игрушку и посмотреть fps и температуры видеокарты и процессора

    Говорят, что для объективной оценки компьютера нужно минимум 30 мин теста?

    Долго проверять надо в основном для проверки того, что система не перегревается
    Еще долго надо проверять оперативную память и накопители
    Все остальное обычно 5-10 минут
    Ответ написан
    Комментировать