понедельник, 29 июля 2013 г.

Вопросы для собеседования тестировщиков

Добрый день Всем!

Работаю на протяжении года в развивающейся фирме. Отдел тестирования вырос с одного человека до 5. И продолжает расти. Собеседований было куча! Вопросы естественно одни и те же. Не думаю что для кого то я открою Америку, но я для себя отметил следующие критерии для поиска людей.

ТТ - теория тестирования. Здесь я кандидата спрашиваю - что такое тестирование в целом, какие виды тестирования он знает. И так далее.
АТ - автоматизация тестирования. Здесь могут быть тестовые задачи на написание кода на каком либо языке (предпочтительно JAVA). Чаще всего написать авто тест для логина в приложение.
SQL - здесь избитая задача на соединение двух таблиц и вывода информации из них.
ТП -  умение писать тест -кейсы или тест планы. Чаще всего прошу придумать сценарии для тестирования калькулятора. Заметил интересную штуку. Когда спрашиваю, что должно быть в результате деления на 0 - 4 человека из 10 говорят 0, 2 человека говорят, что должно получится число которое делят. И только 4 человека говорят фразу на ноль делить нельзя. 
ЛГ - задача на логику + даю несколько скриншотов, которые содержат один или несколько багов.

А что вы спрашиваете на собеседованиях?

вторник, 2 апреля 2013 г.

Нагрузочное тестирование и Selenium

  Приходит ко мне программист и говорит: "Можешь ли ты сделать нагрузочный тест", но такой, что если будут какие то ошибки, то писать их в лог. А еще хотелось бы что бы твой тест, который уже есть прошли одновременно несколько пользователей.  
  Для нагрузочных тестов по сути все используют старый добрый Jmeter. Я не исключение, и верю, что с помощью этого инструмента можно сделать все что душе угодно. Но наверняка случались подобные ситуации, когда необходимо сделать очень быстро! 
Я хочу показать свою реализацию, которая, возможно, многим автоматизаторам и программистам покажется глупой и нелепой. Но для тех кто не сталкивался может помочь.
Прочитав статью я приступил. 
Создал класс  Load. 
public class Load extends Thread{
 test t = new test();
 public void run() {
 try {                                                                                            
            try {
                t.setUp();
                t.test();
                t.tearDown();
            } catch (Exception ex) {
                Logger.getLogger(Load.class.getName()).log(Level.SEVERE, null, ex);
            }
           Thread.sleep(400);
        } catch (InterruptedException ex) {
            Logger.getLogger(Load.class.getName()).log(Level.SEVERE, null, ex);
     }
  }
}

Затем в main создал массив объектов Load 
 Load ld[] = new Load[50];

А далее грузите как хотите
 for (int k=1;k<=50;k++){
     ld[k] = new Load();
     try{
     ld[k].start();
     }

Результат данного теста можно было наблюдать только на сервере (слушатели и вывод я не писал). 

Более подробно и грамотно  нагрузочное тестирование с помощью Selenium рассматривается тут

среда, 30 января 2013 г.

Тестировщик - это врач диагност в IT?


Сейчас очень модны медицинские сериалы. Доктор Хаус, Клиника, Женский доктор,  Интерны, Склифософский и еще куча подобных сериалов. Работая в IT области, я решил сопоставить  медицину и IT. Если говорить конкретно, то к какой области медицины можно отнести непосредственно тестированиеНе будем ходить вокруг на около, а вспомним книгу  Сема Канера "Тестирование программного обеспечения"Представьте, что с вашим здоровьем что-то не в порядке. Вы приходите к врачу, и он проводит целый ряд анализов. Однако врач ничего не находитон утверждает, что вы здоровы. Хороший ли он диагност? Если вы в самом деле больны, остается признать, что врач некомпетентен, а дорогостоящие анализы были пустой тратой сил, времени и денег. При тестиро­вании диагностэто вы, а программа (абсолютно наверняка) — больной пациент. Так найдите же, что с ней не так!

Давайте выясним, действительно ли это так?

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

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

2) Описание дефекта = это по сути симптомы. Тоже вынужден согласится с этим определением, более того при желании можно сделать классификацию этих дефектов.

3) ???? = Диагноз. Что есть диагноз? Очень интересный вопрос. Я пришел первый раз в кампанию, нашел свой первый баг, при этом видя программу чуть ли не первый раз! Как я могу поставить конкретную причину бага
Тут можно поспорить... Есть логи, есть debug, которым тетстировщик, в идеале должен уметь пользоваться. Т.е. по сути это те же инструменты, которые есть у врача для проведения анализов и выявления точного заболевания. К чему я написал кучу непонятного текста? К тому, что тестировщик в состоянии поставить конкретную причину бага. Т.е???? = Причина бага.

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


Подобно врачу, тестировщик должен смотреть на симптомы бага, так же как врач смотрит  на симптомы человека. Если этих симптомов не достаточно, то врач назначает анализы, а тестировщик использует дополнительные инструменты. Тестировщик должен изучать проект, что бы знать его досконально. Представьте себе врача, который не знает, из чего состоит человек? Страшно да?  А теперь тестировщика, который не знает проект?  Не так страшно, особенно когда вы его только взяли на работу. Но если через 2 – 3 месяца  не знает, как работает функционал – это вызывает вопросы, и за тестирование становится уже страшно.  
Давайте подведем итог статьи. Можно ли тестировщика сравнивать с врачом диагностом? Я думаю, что хорошего врача и хорошего тестировщика можно сравнить. И тому и тому, для того что бы добиться статуса профессионала в своей области необходимо постоянно получать знания и адаптироваться под современные исследования и технические новшества. А для этого и тем и другим необходимо изучать свою предметную область.




Software-Testing.Ru