• Что нужно знать начинающему тестировщику?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    имхо, прежде чем быть хорошим тестировщиком, нужно быть хорошим разработчиком, программистом, знать все систему и принципы изнутри. ну а затем уже прокачиваться в тестировании.
    Ответ написан
    4 комментария
  • Что нужно знать начинающему тестировщику?

    @PokimonFromGamedev
    Ведущий разработчик Kotlin
    В первую очередь, устроиться на работу.

    Работать и расти проще и эффективнее, чем учиться и пытаться устроится сразу на высокую позицию.

    Дальше определиться чем хочешь заниматься.

    Либо мануальным тестированием и дальше в аналитики. Тогда изучай продукт, область, прокачивай коммуникацию. Из техн. знаний тебе максимум SQL пригодится. Ну и знания как web приложения работают.

    Либо автоматизацией тестирования. Тогда изучай программирование. Инструменты. Технологии. Много их.

    В любом случае база одна. Где угодно прочитай про базовые методики тестдизайна и про виды тестирования. Например на istqb
    Можешь почитать эти 2 книги. (но они уже не для новичков)
    Про Exploration testing:
    www.amazon.com/gp/product/1937785025
    Как организовать процесс, с упором на автотесты:
    www.amazon.com/gp/product/0993088112
    Ответ написан
    Комментировать
  • Что нужно знать начинающему тестировщику?

    sloboda
    @sloboda
    Java QA Automation
    Нужно знать (для функционального тестера):
    1. Теорию тестирования.
    Что такое тестирование.
    Что такое баг.
    Виды тестирования.
    Структура тест-кейса.
    Структура тест-плана.
    Что такое тест-дизайн.
    Классы эквивалентности.

    2. Основы разработки.
    Жизненный цикл ПО.
    Место тестирования в разработке.
    Основные понятия ЯП - функции, методы, типы данных.

    3. Основы баз данных.
    Умение составлять простые SQL-запросы
    Определения реляционной БД
    Нормализация.

    4. Bug-трекеры
    TFS, Jira, Jazz, ALM и др.

    Хорошо бы также обладать базовыми знаниями по XML.

    Могут попросить протестировать ручку, карандаш, калькулятор.
    Хорошо бы понимать, что такое ISTQB, готовность получить сертификат
    Ответ написан
    Комментировать
  • Что нужно знать начинающему тестировщику?

    @Madmath
    1) Курс от mail.ru на канале "Технострим" ютуба.
    2) Ron Patton "Software testing".
    3) L. Copeland "Practitioner's Guide to software test design".
    4) Опционально - материалы istqb, но, на мой взгляд, лучше читать их, когда уже будет какой-то то опыт работы.

    Дальнейшее зависит от того, чем именно будете заниматься. Должны сами сориентироваться. Ну или спрашивать уже более конкретно.
    Ответ написан
    Комментировать
  • Что нужно знать начинающему тестировщику?

    tuulikki
    @tuulikki
    Есть несколько вариантов вашего дальнейшего развития:

    1. Если вы готовы "тренироваться на кошках", смело идите (вернее, записывайтесь) на курсы Software Testing (у них еще полезный форум). Там есть разные варианты, основы вам дадут и это будет крепкая база по небольшой цене (только не выбирайте ускоренный курс, лучше возьмите простой базовый). Перед этим можно заправиться онлайн-курсом Савина и курсом от Mail.ru (про него писали выше). Есть еще бесплатный вводный курс на Udacity.

    2. Пойти на стажировку/обучение при крупной IT-компании (так училась я сама). Эти тренинги проводят Epam, ITransition, Veeam и другие. Ищите на хэдхантере по словам "QA/тестировщик/специалист по тестированию", затем выбирайте графу "без опыта". В Питере, кажется, есть несколько открытых позиций. Требуется знание логики и базовое понимание SQL. Кое-где - ООП (это уже зависит от компании и направления). Если указано, что ищут выпускников, а вы уже давно не выпускник, всё равно пишите: мотивацию ценят в первую очередь.

    То, что очень сложно понять, не имея опыта, но можно предположить, зная себя и свои способности: решите, каким тестированием вы хотите заниматься.
    - Веб-приложения, сайты и т.п.? Продолжайте зубрить Html/CSS/SQL, попробуйте поверстать. Без этих знаний попасть на джуниорскую должность тяжело - конкуренция высока.
    - Функциональное - тот же SQL, администрирование (учите запросы в комстроке), язык (лучше Python или Java).
    - Плюс, спросите себя, в какой сфере хотите работать. Если игровым тестировщиком, будет проще: на позицию джуна попасть легче, но нужен большой игровой опыт. Кроме того, есть мобильное тестирование, тестирование графического контента и артов и т.д. Подумайте, в чем вы сильны.

    Главное, как заметили коллеги, - это заинтересованность, предельная внимательность, умение очень быстро учиться и быть гибким. Не бояться стрессовых ситуаций. Ах, да. И знание английского языка (как минимум) на уровне чтения спецификаций, а лучше - на уровне написания отчетов и баг-репортов.

    Подумайте над своим резюме и сопроводительным письмом - в 80% именно они решают, позвонят вам или нет.
    Удачи)
    Ответ написан
    Комментировать
  • Как автоматизировать процессы с помощью PHANTOM JS?

    alekciy
    @alekciy
    Вёбных дел мастер
    1. Да, может. Это полноценный браузер на базе webkit.
    2. Любое headless ПО способное работать с DOM. CasperJs, Slimer, FireFox, Chrome.
    3. Зависит от контекста задачи. Но на вскидку можно сразу предупредить, что PhantonJS базируется на старой версии движка которая может отработать JS некорректно. И в этом случае какой-нибудь FireFox или Chome последних версий в headless режиме будут предпочтительнее. Выясниться это в момент "о, блин, а фантом не умеет это js кушать".
    4. Как готовый продукт нет, не существует. Как платфома - любой.
    Ответ написан
    Комментировать
  • Тестирование ПО с использованием OpenGL?

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

    Как вариант, попробуйте Hyper-V.
    Ответ написан
    Комментировать
  • Как стать хорошим программистом на работе?

    sim3x
    @sim3x
    Так разработка и есть рутина
    Учитесь делать мелочевку быстро, красиво, тестируемо, прогнозируемо по срокам

    При наличии свободного времени пересматривайте свой код и пытайтесь его улучшить

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

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

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

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Если нужно продолжить какой-то свой старый, небольшой проект, то я скорее перепишу его с нуля, чем разберусь в своем же коде.

    С этим нужно бороться. Задача - научиться бегло читать код. То есть видеть алгоритмы за листингами и особенностями языков. Когда начинающий программист читает, у него появляется вкус к коду: он начинает отличать годный понятный код от нечитаемого месива, как и какими средствами управлять выразительностью.
    Приступая к практике: не хватайтесь сразу фигачить код без идеи, обдумайте связи, декомпозируйте задачи на более мелкие. Почитайте про SOLID и попробуйте следовать этим правилам. Когда будете стараться писать абстрактный, модульный код (возможно даже с тестами), очень просто станет его рефакторить и ваш здоровый перфекционизм начнет приносить удовольствие, а не уныние от "эффектов бабочек".

    Читайте/смотрите "Clean code", ищите блоги разработчиков, какие-то мелкие проекты на гитхабе. Красная дорожка (в терминах передачи "Умники и умницы") - это найти open-source проект и попытаться там пофиксить баг/добавить требуемую фичу. Конечно, это будет сложно. Но если вы справитесь, то это +1000 к опыту.
    Ответ написан
    Комментировать
  • Как тестировать больше одной фичи при релизе по фичам?

    lxsmkv
    @lxsmkv
    Test automation engineer
    (до этого ее тестировать нельзя)

    почему? почему кто-то должен ждать появления в мастер-ветке какой-то другой фичи
    если при разработке этой фичи, той другой фичи которую ждут тоже не было. Вы тестируете итерацию разработки.
    Представим себе мастер ветка содержит претродактиля, одна ветка разработки делает его фиолетовым, а другая ветка разработки делает ему крылья с перъями. Тестировать цвет и перья можно по отдельности, потому что они разрабатывались по-отдельности. Если вы будете тестировать перья и фиолетовость, вы уже тестируете перья под влиянием цвета, или цвет под влиянием перьев. т.е. делаете частичное интеграционное тестирование. Логично было бы тестировать фичи все таки отдельно, и когда наберется их какое-то количество делать общий интеграционный тест и потом сливать все в мастер-ветку.
    Ответ написан
    2 комментария
  • Как тестировать больше одной фичи при релизе по фичам?

    Decadal
    @Decadal
    Сделайте ветку dev
    пусть облако веток задач будет вокруг дева: каждая ветка тестируется по отдельности, а после тестируется их совместимость между собой (я так понял, это и есть причина, по которой нельзя тестировать ветку без подтягивания изменений из мастера).
    После фидбека QA по dev-ветке сливать dev в мастер.
    А еще лучше сделать dev->stage->master.
    На деве тестить слитые ветки, на stage - целые релизы.
    Ответ написан
    2 комментария
  • Как динамически менять имена методов в Python?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Не уверен что делать так хорошая идея, но это возможно, получая аттрибут объекта через getattr и обращаясь к результату.
    class Member:
      def all(self):
        print "hello member"
    
    class September:
      def all(self):
        print "hello september"
      
    
    class Field:
      def __init__(self):
        self.member = Member()
        self.september = September()
    
    field = Field()
    field.member.all()
    getattr(field, "september").all()

    Если бы "september" было бы названием фунцкции то вызов был бы просто getattr(field, "september")()
    По второму вопросу, все так же. А через setattr можно менять значение аттрибута. А через dir(field) можно получить список всех обьявленных на элементе полей.
    class Member:
      def __init__(self):
        self.name = "John"
        self.surname = "Galt"
    member = Member()
    print member.name
    print getattr(member, "surname")
    setattr(member, "surname", "Wayne")
    print getattr(member, "surname")
    Ответ написан
    Комментировать
  • Для чего существуют другие парадигмы программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Нельзя в двух словах сказать зачем нужны парадигмы программирования, потому что для этого нужно иметь опыт программирования, чтобы вы могли усвоить ответ.

    Например, ваше представление: "ООП удобен для бизнеса, можно разделять программу на модули" - неверно.
    Модульность появилась задолго до ООП. Бизнес появился задолго до программирования, и ООП и бизнес не слишком и связаны.

    ООП удобно для длительной многократной разработки крупного продукта таким образом, чтобы определенные части кода были максимально изолированы друг от друга. Это не совсем модульность, это изоляция на уровне данных. Это позволяет получать и меньше конфликтов в случае работы нескольких программистов, и меньшее количество затрат времени в случае рефакторинга, и так далее. Но требует больше времени на первоначальный код. В то время как процедурное программирование позволяет быстро получить первый результат, но насколько будет сложно (дорого) его модифицировать и поддерживать - этот вопрос в самой процедурной или функциональной парадигме не затрагивается.

    Просто так сложилось, что ООП - крайне удобно для написания средних и крупных проектов, а практически невозможно представить себе высококлассного специалиста, который бы не работал на крупным проектом - как бы иначе у него мог бы набраться опыт? Следовательно опытный специалист, привыкший работать в ООП, будет его использовать уже везде, просто потому что так ему привычнее, удобнее и проще.

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

    И напоследок - полиморфизм и все другие фичи ООП - это уже следствие того, что парадигму стараются сделать максимально гибкой.
    Самая главная суть ООП заключается в следующем:

    Объект - это набор данных и методов работы с этими конкретными данными.
    Если вдруг нужно что-то подправить в структуре данных (изменить тип, добавить еще переменных) - методы для них лежат в этом же объекте, и не нужно лазить по всему коду и что-то искать что еще сломается - вы просто знаете ЧТО методы должны возвращать, и внешние связи не нарушатся, если вы это сохраните.
    Все другие объекты вашей программы общаются с данными этого конкретного объекта исключительно через его методы - поэтому если у вас меняется формат данных - вы правите методы, чтобы они умели работать с новыми данными, можно вообще их переписать - главное чтобы эти методы возвращали то же, что и раньше.
    Если нужно переходить на новое - пишем новый метод который будет возвращать уже в новом формате, остальные объекты будут постепенно переходить от работы со старых методом к новым методам, позволяя сделать миграцию комфортной, включая даже сбор статистики - в старых методах добавляется логирование и счетчики, чтобы выяснить кто еще не переехал.

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

    vicodin
    @vicodin
    Имею некоторый опыт
    Как мне сделать такое ценообразование, чтобы и мне хорошо было и заказчика устраивало?

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

    Также очень интересует, как быть в случае появления каких то багов..

    Брать деньги за их исправление, разработки без исправления багов/рефакторинга не бывает.

    Делаете ли вы какие то скидки может или акции для заказчиков и т.д.

    Это не рынок, какие скидки? Наоборот, постоянные клиенты должны регулярно повышать оплату или накидывать бонусы, если вы хороший разработчик конечно же. Иначе уйдете, а ему потом опять среди индусов и школьников искать толкового чувака месяцами.

    Вообще не парьтесь об этом. Если клиент настроен на короткое сотрудничество, никакими гипнозами не заставите его стать постоянным. Если качество вашей работы будет соответствовать или превосходить его требования, ему незачем будет искать другого исполнителя на возникшие в будущем подобного рода задачи. В конце проекта, можете сказать ему что-то типа: "Обращайтесь, если понадобится помощь, да и ещё я умею то-то и то-то".
    Ответ написан
  • Есть ли ISO описывающий позиции в отделе обеспечения качества?

    @kn0ckn0ck
    Продюсер
    Разговор с боссом можно строить по понятиям, а можно по общепризнанным стандартам.

    Если идти по первому пути, то в качестве примеров можно привести описания вакансий QA director-ов из компаний, близких по размеру/индустрии.

    Если по второму, то в РФ есть профстандарты и, в частности, 40.010. В нем много букв, не поленитесь и посмотрите.

    Например, там описаны трудовые функции начальника отдела контроля качества продукции. Если ваша деятельность соответствует этим функциям, то это лучшее обоснование вашей должности.
    Ответ написан
    Комментировать
  • Литература в которой описан ход разработки системы?

    Ptolemy_master
    @Ptolemy_master
    Цель Элияху Голдрат
    Правда, там не производство софта, а завод, но хорошо видно, как развивался менеджер.
    Ответ написан
    Комментировать
  • Делаем что то одно — все остальное ломаем?

    @azShoo
    Давайте будем честными, продукты имеющие реальную продуктовую ценность имеют такое число состояний, что какие-то из них будут всегда сломаны.
    Независимо от фреймворков, тестирования и прочего. Баги будут, и чем больше изменений вы вносите - тем больше шансов привнести и баги.

    Тем не менее, есть вполне стандартные методы минимизировать эту боль.
    Это и практики тестирования (не только силами тестировщиков) и повышение code culture, код ревью, мониторинг состояния продукта, нормальные практики релизов и прочее-прочее-прочее.
    Никакого единого способа "всё и сразу починить" нету.
    Ответ написан
    Комментировать
  • Делаем что то одно — все остальное ломаем?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Регрессии это нормальное явление. Почему такое происходит в принципе - интересный сам по себе вопрос.
    Регресс появляется когда добавление нового кода или изменение старого не учитывает всех задействованных частей программы.
    Отсюда можно сделать вывод, чтобы минимизировать эффект от регрессии, нужно огранизовывать код так, чтобы при его изменении, можно было легко понять, на какие другие части логики это изменение влияет. Именно это является целью создания идеальной архитектуры приложения. Чтобы все было по полочкам. Чтобы доставая из шкафа полотенце, вам на голову не падала матрешка которая стоит на шкафу сверху (кто ее туда поставил, и почему - неясно, записку с комментариями никто не оставил)
    Чтобы бороться с наваливанием кода в кучу - нужно чтобы кто-то следил за тем чтобы его не наваливали в кучу. Архитектор например. Архитектор это такой ландшафтный дизайнер для кода. Но нужен и садовник. Чтобы лужайки были зеленые, а огурцы не расли на грядке в перемешку с морковкой. Фреймворки конечно тоже отчасти справляются с этой задачей. Фреймворк для того в принципе и служит, чтобы для каждой части приложения была своя песочница. Мол, складывай вещи как хочешь но в коробки 40х50х30. Текстиль сюда, кухонную утварь сюда. Коробку подписать, занести в реестр. Как на складе.
    Но ничто не защитит вас от того, что в коробки накидают не того что там должно быть. Надо проверять (тестирование). Выстраивать процесс таким образом чтобы ошибиться по халатности было трудно (архитектура). Чтобы было легко локализовать источник ошибки (логгирование). Систематично избавляться от сложности во всем (здравый смысл).
    Ответ написан
    Комментировать