• Какой оптимальный (время написания тестов/эффективность) вариант тестирования веб-апи?

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

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

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    не знаю хороший ли это способ указывать клиенту на его глупость (упертость).
    может лучше все подать со т.з. "вам не придется ни о чем беспокоиться и тратить свое время"
    по теме: я не вижу в указаных шагах замкнутого круга. даже если ему придется дойти до шага 4, то он исправит то что было сделано неверно и во второй раз документы пройдут. Агент чем привлекателен, он знает к кому пойти чтобы не сидеть тупо в очередях, в какой последовательности проходить инстанции, чтобы все можно было провернуть за один день. Я не представляю сколько может длиться нотариальная сделка если все делать самому. две недели, месяц, три месяца, пол года? Пол года больше похоже на правду. А через пол года истечет какой нибудь срок давности и ты останешься в дураках. Ох эти русские законы.. на бумаге вроде все нормально, но как касается их претворения в жизнь все с ног на голову.
    Сори, немного пооффтопил :)
    Ответ написан
  • На чём делают железо автомобиля?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Устройство зависит от производителя железа. Датчики как правило работают через CAN bus. Есть также концепция связи через ethernet.
    Вот вам материнская плата RNS 510: RNS510-led-serie-Navigation-hauptplatine
    или так:
    1458810117-105-bild-2.jpg.628x353.jpg
    Harman известный производитель IVI (in vehicle infotainment) - систем www.harman.com/platform-based-design
    Обычно автопроизводитель выбирает для IVI производителя платформы (типа harman, еще есть Delphi и Technisat из мне известных) , и производителя дисплея, программисты на платформе начинают пилить драйвера чтобы заставить это железо вообще передавать правильный масштаб изображения. А еще раньше вообще включаться. На этой платформе крутится какая нибудь jvm а на ней уже пользовательская система управления. Kомпьютер подключается например через Quadlock (FAKRA) штекер
    Quadlock%20Fakra%20Schema.jpg
    к автомобилю.
    Вобщем ищите по ключевым словам "in vehicle infotainment" и "automotive"
    Ответ написан
  • Курсы по QA для нуба?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Наталья Руколь - ищите ее доклады на ютубе и текстовые материалы в интернете.
    Ответ написан
  • Где найти аудиторию для beta-test?

    lxsmkv
    @lxsmkv
    Test automation engineer
    А у вас уже есть план по тестированию? Описание функций? Документация? А то я участвовал в одном бета-тесте аля "на тебе андроид приложение - потестируй" Так не зная требований, не имея возможности изменять состояние данных (например дату, чтобы проверить что оповещение действительно придет в назначенный день) от такого теста толку было мало.
    Ответ написан
  • Как выбрать актуальный путь в Game Dev'e?

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

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    Во первых, что такое "хороший" программист, это сложно определить. У нас тоже есть программисты, они вроде работают и деньги получают, и с образованием, а когда в продукте обнаруживаются проблемы, выясняется что логгирования в компонентах нет, о юнит-тестах никто не подумал при написании, а теперь придется рефакторить чтобы их туда прикрутить, да и если бы заранее подумали о тестировании и написали юнит тесты, то этих проблем бы не возникло сейчас. А теперь чтобы исправить проблему, нужно перекраивать код целыми слоями, а продукт уже в фазе стабилизации и просто так туда изменения не зальешь. Ну ладно можно сказать это джуниоры напортачили. Но у нас и сениоры есть, под чьим руководством они работают. И сениоры прекрасно знают как делать правильно но не требуют этого от остальных.
    Я все это к чему - можно фигачить код со скоростью электровеника, а можно писать его медленно. Скорость написания кода не говорит о том хороший программист или плохой ничего. Совсем ничего. Можно быстро писать плохой код.
    Гораздо важнее правильно мыслить. Для этого нужно читать книжки типа Clean Code. Юнит тестирование тоже. Нужно приобрести понимание хорошо и плохо. Если вы читаете код и в нем черт ногу сломит. Может это плохой код?
    Чтобы набить руку в программировании нужно им заниматься. У меня постоянно открыт repl.it где я набиваю мелкие куски кода для развлечения. Нужно постоянно тренироваться, "ни дня без строчки", только тогда мозг перейдет из режима отторжения в режим обучения. Заставляйте себя, заставляйте себя разобраться. Разберите как работют лямбды, list comprehension. разберитесь в *args, **kwargs. Выясните разницу между __new__ и __init__. Для новичка это приличная нагрузка, но вы должны поверить в то что осилите это. Иначе будете всегда пасовать.
    Почитайте гайдлайны по питону docs.python-guide.org/en/latest/writing/style
    Питон очень стройный язык, он вам не сломает мозг как какая нибудь ява. Читайте хаб по питону на тостере, на хабре. Я например пытаюсь решить задачки которые пролетают тут по хабу, и улучшил свои знания питона за счет этого.
    Удачи, надеюсь смог хоть как-то помочь.
    Ответ написан
  • Простая игрушка на JS - как поправить?

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

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

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

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    Потому что сокет понимает только потоки данных, поскольку основан на протоколе tcp/ip?
    Ответ написан
  • Можно ли написать программу, не имея никакой документации и техзадания?

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

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    думаю можно попробовать детективы. Дедукция, логическое мышление, эвристика, должно быть близко любому тестировщику.
    ну или подкасты по qa radio-qa.com
    Еще вот могу порекомендовать книжку, независимо от контекста поездки.
    Тайити Оно. Производственная система Тойоты. Уходя от массового производства.
    Считаю, что в дороге важнее чтобы чтец был хороший. А что слушать все равно. Кстати из художественной (может и моветон, но) Лукьяненко Черновик, Чистовик, Спектр - (это приключенческие детективы, хорошо начитаные, о других мирах, и Лукьяненко умеет классно развернуть интригу, и заставить задуматься)
    Ответ написан
  • Как решить задачу «Номер появления слова»?

    lxsmkv
    @lxsmkv
    Test automation engineer
    tokens = input().split()
    
    result = {}
    for tkn in tokens:
      cnt = tokens.count(tkn)
      result[tkn] = cnt
    
    print(result)
    Ответ написан
  • Python or Java for immigration?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Уважаемый Дмитрий, сделайте первый шаг, откройте зарубежный сайт с вакансиями и посмотрите, какие профили там ищут. А далее, в соответствии с этими наблюдениями, адаптируйте свой багаж знаний.
    P.S.: Намеренно не даю ссылок на зарубежные сайты поиска вакансий, ведь, если вы собираетесь за рубежом искать работу, то эти сайты уже у вас в закладках.
    Ответ написан
  • Случайное число с заданной вероятностью, какой алгоритм?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Вот склепал на скорую руку:
    https://repl.it/K2UJ/2
    import random 
    
    def getrand():
      r = random.randint(1,100)
      if  r < 23:
        return 0 # 22%
      if 42 > r >= 23:
        return 1 # 19%
      if 58 > r >= 41:
        return 2 # 16%
      if 71 > r >= 57:
        return 3 # 13%
      if 81 > r >=70:
        return 4 # 10%
      if 89 > r >=80:
        return 5 # 8 % 
      if 95 > r >=88:
        return 6 # 6%
      if 99 > r >=94:
        return 7 # 4%
      if 101 > r >=98:
        return 8 # 2 %
    result = []
    rng = 1000000
    for x in range(0,rng):
      result.append(getrand())
    
    print "0 : "+str(result.count(0)/float(rng))+" ~ " +str(0.22 - result.count(0)/float(rng))
    print "1 : "+str(result.count(1)/float(rng))+" ~ " +str(0.19 - result.count(1)/float(rng))
    print "2 : "+str(result.count(2)/float(rng))+" ~ " +str(0.16 - result.count(2)/float(rng))
    print "3 : "+str(result.count(3)/float(rng))+" ~ " +str(0.13 - result.count(3)/float(rng))
    print "4 : "+str(result.count(4)/float(rng))+" ~ " +str(0.10 - result.count(4)/float(rng))
    print "5 : "+str(result.count(5)/float(rng))+" ~ " +str(0.08 - result.count(5)/float(rng))
    print "6 : "+str(result.count(6)/float(rng))+" ~ " +str(0.06 - result.count(6)/float(rng))
    print "7 : "+str(result.count(7)/float(rng))+" ~ " +str(0.04 - result.count(7)/float(rng))
    print "8 : "+str(result.count(8)/float(rng))+" ~ " +str(0.02 - result.count(8)/float(rng))
    
    freqs = [ result.count(0)/float(rng),result.count(1)/float(rng),result.count(2)/float(rng),result.count(3)/float(rng),
    result.count(4)/float(rng),result.count(5)/float(rng),result.count(6)/float(rng),result.count(7)/float(rng),result.count(8)/float(rng)]
    
    print sum(freqs)


    0 : 0.219347 ~ 0.000653
    1 : 0.190018 ~ -1.8e-05
    2 : 0.160421 ~ -0.000421
    3 : 0.129805 ~ 0.000195
    4 : 0.100175 ~ -0.000175
    5 : 0.07974 ~ 0.00026
    6 : 0.060102 ~ -0.000102
    7 : 0.040174 ~ -0.000174
    8 : 0.020218 ~ -0.000218
    1.0
    Ответ написан
  • Тестирование ПО с использованием OpenGL?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Самое нудное решение часто бывает верным, потому что чудес не бывает :)
    Вы просто когда все системы настроите и проапдейтите, сделайте копию диска, чтобы после настроек-перенастроек можно было тупо откатиться назад на чистую инсталляцию. И одну копию сделайте сейчас, чтобы вернуть все обратно после экспериментов.

    Как вариант, попробуйте Hyper-V.
    Ответ написан