Итак всё гораздо серьёзней чем я думал, поэтому придётся подробно.
Джон, При этом тестерам как правило платят в несколько раз меньше, чем девелоперам. Не думаю, что толковый программер пойдет на такую работу. Остается одно, студенты старших курсов, которые получают как бы опыт работы. И кстати у кого то из классиков я читал, рекомендуют в команде на одного программера иметь 2 тестеров.
Вить, мне искренне жаль такие фирмы. Они сами себе оказывают медвежьи услуги. Доверять тест проги дилетантам это всё-равно, что давать испытывать новую модель самолёта, находяшуюся в разработке, курсанту-первогодке лётного училища с надеждой на то, что если уж он сможет взлететь приземлиться, то значит машина удалась. Однако в жизни лётчики-испытатели это асы из асов, как правило имеющие высшее инженерное образование, ибо испытатель должен иметь чёткое представление о физике процессов происходящих во время полёта, с сознанием совершать тот или иной манёвр.
Давайте рассуждать логично. Что даст тест студента-практиканта? Что именно он сможет протестить? Для начала он должен в совершенстве изучить программу и область её применения, что сделать без как минимум инженерного образования в современных условиях практически невозможно. Хорошо допустим фирма потратила драгоценное время своих сотрудников, которые ввели его в курс дела и он таки понял для чего прожка нужна. Даже после этого он ещё не тестер, а простой ловец ошибок. Я это по личному опыту знаю.
Общения с такими "тестирами" выглядит примерно след. образом:
Т. - Я ошибку нашёёёёёёл!!!
П. - Что ты сделал?
Т. - А фиг его знает, вот тут потыкал, потом там потыкал, потом кнопки понажимал. Она и вылетела.
Занавес.
И что мне делать с ТАКОЙ ошибкой? А времечко-то идёт...
Пошли дальше. Допустим вы работаете в такой фирме как наша (см. ниже) и практикант не нашёл глупых ошибок, допущеных безалаберными программерами-разгильдяями. Ваша фирма с гордостью передаёт продукт важному клиенту, пользователи которого в реальных "заводских" условиях находят кучу ошибок в непредусмотренных программером ситуациях.
Например клиент забыл скзать, что у него в цеху стоят исключительно 98е окна.
Заказчик ессно ставит вопрос, а вы вобще-то тестировали прожку? Ну разумеется, тут у нас один... этот... как его... ну короче да, вроде тестировали. Не знаю как в других странах, но в Германии после этого можно смело переквалифицироваться в дворники или грузчики.
Ибо фирме потерявшей всего один только раз репутацию больше нечего делать на софтверном рынке. Ну и кто теперь доверит репутацию своей фирмы какому-нить студенту?
Ведь дело не в том, что ошибки допущены, а в том, какие меры были приняты фирмой-исполнителем, чтобы их избежать. И в подобной ситуации такая фирма будет выглядеть очччень бледненько.
Насчёт количества тестеров, тоже сразу отвечу, не знаю что это за классик такой, но мой личный опыт показывает, что Тестера необходимо и достаточно одного на один продукт.
Если же профиль фирмы не разнообразен, то достаточно одного на фирму. Только это должен быть настоящий Тестер (ну если хотите в моём понимании смысла этого слова).
тестеры - это могут быть и полные чайники
Лёш, я понимаю твой юмор, но тема гораздо серьёзней, чем кажется. И приводимые до сих пор примеры, только лишнее доказательство моих слов. Ибо после настоящего Тестера, чайникам уже просто будет нечего делать.
Согласен, что тестеры не обязательно должны быть программерами. Это разные тестеры. Иной тестер, ничего не понимающий в программировании, тоже может многое.
Ром, ещё раз повторюсь также касательно твоего примера - это произошло из-за того, что просто кто-то сэкономил на хорошем Тестере. А то, про что вы говорите - случайность, везение, но никак не система, пусть не 100%, но система. Её можно свершенствовать, изменять, её можно стандартизировать наконец. Спросите у своих студентов-чайников-тестеров, что они знают о ISO 9001:2000?
Я ни в коем случае не хочу сказать, что наличие подобного Тестера обсепечивает 100% безошибочность конечного продукта. Это можно грубо сравнить с рисованием окружности с длиной равной её диаметру. Это я обязан сказать, чтобы исключить мелочные докапывания по этому поводу.
Теперь в деталях. А после прочтения задайтесь вопросом, сможет ли "чайник-тестир" выполнить все те ф-ции, которые выполняет Тестер (пусть пока будет в моём понимании смысла этого слова).
Фирма, на которой я работаю почти десять лет (будет в апреле), относительно молодая - в феврале отпразновалм 14ю годовщину. Мнение заказчиков - очень дорогая, но зато очень качественная. Не сочтите за рекламу, но чтобы не быть многословным и голословным, кому интересно загляните в
список наших клиентов.
Ну и непосредственно быка за рога. Во-первых сразу скажу как мы научились работать без тупых ошибок безалаберных программеров. Под тупыми подразумеваются ошибки, когда программер не может внятно объяснить почему он допустил такую ошибку. Ваш покорный слуга лично очень долго страдал "копипейстным"-синдромом. Всё оказалось очень просто. Пластиковая банка с небольшой щелочкой в крышке. Каждая ошибка - 50 центов. Когда она заполняется все идут в ресторан. Первые 50 евро мы набрали довольно быстро.
Теперь каждый программер в завершении задания, закрывает его с пометкой для Тестера "тест разработчика проведён". Таким образом я "подписываюсь" в отсутствии глупых ошибок.
Теперь о функциях нашего Тестера. У него две основные задачи: 1. Главная - обеспечить минимальное количество ошибок в конечном продукте, попавшего в руки клиента. 2. Не менее главная - обеспечить необходимую информацию для наискорейшего устранения найденых ошибок.
Плюс он выполняет ещё второстепенные ф-ции, такие как, например, характеристика ошибок и установка приоритетов. Он даже имеет право разрешить определённые ошибки в конечном продукте и перенимает ответственность за эти ошибки на себя. Сразу остановлюсь на этом моменте. Это происходит в противоречивых случаях, когда выполнение заказа в оговореных рамках (сроки-цена) невозможно без наличия ошибок в определённых НЕстандартных условиях. Это очень важно предусмотреть такие ошибки и сообщить клиенту о них, таким образом предоставив ему самому решать, что для него важней и/или выгодней. Опытный Тестер как правило безошибочно определяет такого рода ошибки. В противном случае, если ошибка обнаружена клиентом, то он требует её исправить и... остаётся только либо с бледненьким лицом отмазываться, а значит терять репутацию и идти на уступки в других вопросах, чтобы хоть как-то компенсировать, или же всё-таки выполнять работу в свободное от работы время. Ни то, ни другое с экономической точки зрения не выгодно.
Простой пример. Клиент притаскивает принтер с драйвером, надо жёстко привязать прожку к этому драйверу. Работы на три дня. Тестер выясняет, что с другим драйвером "почти" таким же, прожка не работает. Что делать? Исправлять? Обеспечивать работу с любым драйвером?
Сколько на это надо времени? И тд и тп. Сообщает клиенту. Клиент официально заверяет, что будет использовать ТОЛЬКО указаный драйвер, и соглашаетя с тем, что если кто-то поставить другой драйвер, то либо сам дурак, либо пусть ищет деньги в бюджете для заказа "универсальности". В итоге все довольны и всё проходит без стресса. Программер потратил отведённые три дня и не секунды больше.
Идём дальше. Как я уже сказал, Тестер является юзером-специалистом. Для этого он посещает места работы конечного продукта, знакомится со всеми мелочами реального его применения.
Принимает активное участие в разработки концепции и тд и тп. Таким образом продукт проходит "заводское" тестирование не покидая пределов нашей фирмы. Он устанавливает если это необходимо предоставляемое заказчиком железо (в случае, когда прога должна с ним работать), для чего ессно сначала до отказа в нём разбирается. Спектр железа - самый широкий. Для симуляций в особых случаях собираются электронные схемки моделирующие те или иные сигналы от БОЛЬШОГО устройства. И всё САМ.
Таким образом он выступает так же в качестве консультанта по вопросам создания программерами отдельныз модулей или элементов пользовательского интерфейса и в конечном итоге делает заключение о пригодности прожки для выполнения заданых условий.
Идём дальше. Теперь о Тестере-программисте. Ну как можно тестить программу не зная, что у неё внутри и из чего она сляпана? Даже простые пилоты самолётов знакомы с "железной" начинкой их машин и принципами их работы, чего явно не скажешь о юзверях софта. Поэтому Тестер должен знать о возможностях используемых софтверных технологий, их совместимости с целевыми платформами. Простой пример. Ф-я автозаполнения. Что делает тестер чайник? Заполняет от фонаря 34, 756, 345974 раз. Всё работает, он успокаивается.
Тестер сначала ознакомится с алгоритмом автозаполнения, найдёт слабые или уязвимые места и сначла распишет тестовые сценарии, которые будут покрывать все (по возможности конечно) ситуации, а потом эти сценарии обкатает. И теперь в случае обнаружения ошибки программер получает не просто тупую реплику, а 1. повотряемый ПРОСТОЙ сценарий воспроисзведения ошибки со всеми деталями плюс 2. рекомендации по её устранению или возможные причины её возникновения. Ооооочень часто именно эта вторая причина экономит кучу программерского времени.
Альтернативная ситуация - ошибка приходит от клиента. На полстраницы расписано (начиная со старта винды) что именно было сделано, ессно кроме того, что действительно необходимо.
Начинаются жалкие метания программера с колосальной потерей времени, на выяснение, а какая же система, какой СП, и какие букаффки таки стояли "в таком окошке с ошибкой".
Заметьте, всё это время программер тратит не на свою непосредственную работу, и даже не на исправление ошибки, а на... да ни на что по сути. В нашем же случае ошибки от клиентов сначала приходят к Тестеру, он проверяет их, выясняет почему он их сам пропустил (не боги горшки обжигают), мотает на ус, настраивает свои автоматические сценарии тестирования (если необходимо), разрабатывает ПРОСТОЙ сценарий воспроизведения ошибки для программера плюс рекомендации. Или же просто объясняет клиенту, почему клиенту выгодно забыть об этой ошибке как о кошмарном сне, ибо в противном случае ему придётся раскошелиться (см. выше).
Самое ценное для программеров - это профессиональное описание ошибки. Не будет ходить далеко. Схема поведения на форуме при просьбах исправить ошибку? Ах если бы все эти чайники были программерами, уж они тогда точно написали бы всю необходимую инфу, а не "доктор у меня это" (с) в лучшем случае с аглицким текстом ошибки. Разве не так? Ну и кто может эту инфу лучше опытного программера предоставить? Ну и кому спорим?
Ну все прелести инфы от Тестера-программера вы можете сами представить. Если нет, я завтра продолжу.
В заключении добавлю. У нас на фирме таких Тестеров два. Один отвечает за общие тесты GUI на VB и C#, плюс в совершенстве разбирается в веб- и серверных технологиях, другой за проекты на C++, C#, Java и тд. Непосредственным программированием они занимаются очень редко и мало, в исключительных случаях.
Уф... устал. Пошёл спать. Завтра перечитаю, может чего подправлю.