вторник, 20 декабря 2011 г.

Рутина

Помнится, еще М. Дорофеев говорил, что не надо автоматизировать бардак. Потому как получится автоматизированный бардак.

Такой вопрос: если команда работает плохо - поможет ли ей KPI?
А если команда работает хорошо - зачем ей KPI?

Анекдот в тему:

Лежит Каа. Прибегает Маугли:
- Каа, Каа, рыжие собаки бросили нам вызов!
Каа:
- Нууу...
Маугли:
-Балу принял вызов!
Каа:
- Нууу...
Маугли:
- И Акела принял вызов!!
Каа):
- Нууу...
Маугли:
- И Маугли принял вызов!!
Каа:
- Нууу?
Маугли:
- Ну и ты, ты, Каа, тоже принял вызов!!!
Каа:
- Бля...

Я просто оставлю это здесь

Bugs and Battleships
by Edward Z. Yang

http://blog.ezyang.com/2011/12/bugs-and-battleships/

понедельник, 19 декабря 2011 г.

Ы!

М. Дорофеев, презентация Shewhart, 6-Sigma and snowflake-men

Избранные цитаты:

Нужно ли думать что он - человек снежинка с руками из жопы?
Альбом: bug


У запора и диареи KPI - время сидения в туалете - одинаковые. Но лечить мы их будем по разному.

Ну это смех, а вообще - посмотрите, там интересно.

Доброе утро

Коллеги, значится, шутят:

Альбом: office

суббота, 17 декабря 2011 г.

Lesson 54

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

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

Если отбросить аспект критичности их работы, то у них хотя бы объект работы - организм - остается более менее один.

Хорошая песня, про выборы.
Выбери любого, главное выбери, не зря же тебе право выбирать, блядь, выбили!




Слово Канеру:

Классификация техник тестирования зависит от того, что вы о них думаете.

You might be puzzled about why we placed particular techniques where we did (ну не получилось у меня это перевести). Если так, то у меня для вас хорошая новость - ваш мозг включен. Вспомните, любое тестирование включает в себя все пять аспектов Five-Fold System. Мы перечислили техники по категориям, чтобы просто дать вам почувствовать разницу и выделить случаи, когда одни виды мышления превалируют над другими. Ваше мнение может быть иным. Например, один читатель спорил с нами о том, что нагрузочное тестирование может быть классифицировано как проблемно-ориентированное тестирование, а не как тестирование, основанное на активности(виде деятельности). Наш ответ - вы можете думать об этом в любом ключе.

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

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

Если вы думаете в терминах рисков, вы думаете о слабых местах программы и спрашиваете, как спроектировать тесты, которые эти слабости выявят. Когда вы знаете, какой тип теста вы хотите запустить, думайте о пути. которым вы его хотите провести. Если вы тестируете телефонию, вам может понадобиться инструмент или десять друзей, которые создадут серию звонков. Критерий проектирования теста - он должен иметь возможность обнаружить проблему, которую вы ищете.

В противоположность этому, если вы мыслите в терминах активностей, вы спрашиваете себя, как провести нагрузочное тестирование. Каким инструментом? Что делает этот инструмент? И так далее. Ожидается, что если вы используете инструмент грамотно, модель поведения клиентов составлена верно, а также поведены остальные мероприятия, связанные с качественным нагрузочным тестированием, то вы, вероятно, найдете те типы ошибок, которые способно выявить нагрузочное тестирование.

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

1. Кто будет тестировать?
2. Какие аспекты программы будут тестироваться?
3. Какие типы проблем мы будем искать?
4. Какие задачи будут выполнены при тестировании?
5. Как вы будете оценивать результаты?

Lesson 53

Слово Канеру:

Техники тестирования основанные на том, как вы оцениваете результаты теста.

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


Самопроверяющиеся данные Собранные данные несут в себе информацию, позволяющую определить, были ли выходные значения программы корректными.

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

Сравнение со спецификацией или надежным документом Несоответствие спецификации, вероятно, означает ошибку.

Эвристическая согласованность Согласованность - важный критерий оценки программы. Несогласованность может быть причиной регистрации дефекта или отражать изменения в архитектуре программы. Мы выделяем семь основных согласованностей:

1. Согласованность с историей. Нынешнее поведение функции соответствует ее прошлому поведению.
2. Согласованность с вашим представлением. Функция ведет себя согласно тому, как вы себе представляете организацию продукта.
3. Согласованность с аналогичными продуктами. Функция ведет себя подобно тому, как ведут себя такие функции в аналогах продукта.
4. Согласованность претензий. Функция ведет себя так, как люди говорят, что она должна себя вести.
5. Согласованность с ожиданиями пользователя. Поведение функция соответствует тому, что мы думаем, что хотят пользователи.
6. Согласованность с продуктом. Поведение функции соответствует поведению сопоставимых функций продукта или функциональных моделей продукта.

7. Согласованность с целями. Функция ведет себя согласно ее прямому назначению.

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

пятница, 16 декабря 2011 г.

Второе пришествие

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

Вот ее портрет, кстати:
Альбом: office


И в следующий раз будет новая Наташка. У нас этого добра полно.

Пока шли от метро, смотрели на гостиницу "Орехово", жалели, что наша бронь в "Царицыно". Это я уж потом понял, что жалели зря.

Ролик сняли какой-то нудноватый. Неясно, чего там колдовали руки. У казанцев в прошлый раз поживее получилось.

По докладам, ведь мое мнение крайне важно для вас.

Алексей Лянгузов Грамотная работа с дефект-трекером -- путь к успеху! Хороший, годный доклад про то, что и у программистов на собеседовании надо спрашивать умение работать с дефект трекером.
Заметки на полях: Статус - надо ли что-то делать, подстатус - что именно. Ответственный - тот, кто должен изменить код. Не настраивать воркфлоу жестко, разрешать любые переходы, но с аргументированием.

Александр Барановский Собеседование тестировщиков: что спросить и как ответить К собеседованию нужно готовиться, и, стало быть, понимать, что и зачем ты спрашиваешь. Спасибо, кэп.
Мои мысли: да, как же это классно, когда на собеседование приходят опытные тестировщики, им можно задавать умные и сложные вопросы. Только у нас не получается весело поболтать, потому как все опытные тестировщики города работают либо у нас либо у 1-2 конкурирующих компаний, которые ими упорно не хотят делиться.

Виктор Малый TPI Next®: оптимизируем процессы тестирования по-взрослому Очередная модель чвототам. Докладчик бойко рассказывал, отвечал и не отвечал на вопросы. Но уже есть TMMi. И их уже слишком много.

Роман Юферев О чем мы забываем в QA или “Знакомьтесь – Manageability!” Жог напалмом. Радовал и приводил примеры.
Заметки: Думайте заранее, блядь! Заранее, блядь, думайте. Проблемы не только и не столько от баг, сколько от сбоев. И их надо тестировать. Ибо кто, если не мы? Мне, как бывшему бойцу техподдержки сие близко, да.


Юлия Нечаева Команда, где каждый лидер
- Лидерство!
- Дааааааааа!
- Ответственность!
- Ото ж!
- Команда!
- Еще бы!
- Высокое качество!
- Конечно!
- Мы команда профессионалов!
- Дааааа! Ураааа!

Глеб Рыбалко Оценки имеют значение. Практические советы по оценке задач тестирования на каждый день Оценки в скрам и Agile своими словами, не?

Татьяна Зинченко Вредные советы для тестирования юзабилити Весело. Зажигательно. Интересно. Читайте Якоба Нильсена и Рольфа Молича. Лозунг: Интернет не для юзеров!
Только при чем тут тестирование? Доклад о проектировании интерфейсов.

Илья Фомин Вирусное тестирование. Что-то новое в конфигурационном тестировании Прикольно, забавно, но не мой домен, у нас серверная ява, вся конфигурация - тюнинг jvm.
Заметки: На этот доклад пошел методом исключения, а также потомушто Илья быстро говорит и мало капитанит. Исключил Наташу Руколь - ну не нравятся мне ее доклады, что поделаешь. Исключил "Качество софта ДО и ПОСЛЕ защиты" - у нас FOSS, нас невалнуэт.

Владимир Лысенко Увеличиваем мощь фреймворка: KDT & генератор тестов в TestComplete Междумордие DSL или как автоматизаторам сбагрить написание сценариев. Практическое руководство. Но - прозреваю значительное увеличение трудозатрат на техподдержку.

Николай Алименков DSL, Page Object и WebDriver – путь к надежным функциональным тестам Однозначный зачет. Были исходники.
Заметки: комментирование кода - для слабаков. Или для небольших проектов. Или для автоматизатора, который пишет тесты один.
Я то думал - мы с wurstenator и entarrion лабаем тесты, а Николай объяснил, что мы пишем на DSL согласно ODT и частично BDT.
Интересно было посмотреть, как другие специалисты решают проблему удаления тестовых данных. Решают они ее просто - они их, блин, не удаляют.
Первый час рассказывал, что рефакторинг, это, блядь, хорошо! А вот потом пошел цымес, да.
Подтвердил некоторые мои догадки, добавил пару идей. Думаю, что самый полезный для меня доклад.
В финале выступил А. Баранцев, сорвал покровы с webdrivera, показал пальцем на аудиторию и сказал: "А ты - выложил свой фреймворк на гитхаб?". Каюсь, мы не выложили.

Круглый стол "Сообщества тестировщиков. Старт дан. И что дальше?" Основной вопрос - откуда в Костроме столько тестировщиков? 0_о А в остальном - славно поговорили.
В кулуарах спросил Астеникса, что б такое натворить, чтоб взлабать у себя в городе сообщество. Он выразил мысль, что вряд-ли получится заставить сообщество быть. Жизнеспособней вариант, когда оформляется в сообщество уже существующая группа. Я буду эту мысль думать, чо.
Я знаком с одной жизнеспособной группой по it-интересам в ебурге, он она состоит из тестировщика, сисадмина и серверной техподдержки. Не получится даже сообщество любителей пива, 2 из трех почти не пьют. Как официально самоназваться-то?

Александр Александров Оценка трудозатрат на тестирование в проектах сопровождения Статистику нужно не только собирать, но и обрабатывать. И делать правильные выводы, да.

Павел Павлов Автоматизированное тестирование клиентской производительности Крайне полезный и актуальный для меня доклад... был бы, если бы, да кабы. В части теории и так все ясно, нужна была конкретика, тонкости, нюансы и исходники. Их не было, была ссылка на платный продукт, oh shi...

Евгения Фирсова Очередь на тестирование Зачетно проклассифицировала очереди. Причины. Последствия. Серебрянных пуль не давала. Статистику не вела. Мы статистику ведем, видим тенденции и тренды. Но с пулями тоже беда, декреты и насморки не запланируешь.

Андрей Терехин Автоматизация тестирования модели разграничения прав доступа к функционалу Хороший доклад для меня ибо домен близкий.
- Как тестировать права?
- Леххко! Берем эксель и разворачиваем 10 трехмерных матриц в плоскость.
- Что делать с получившимися 8 000 - 16 000 сценариями?
- Леххко! Кладем болт на атомарность, тестируем по 3-10 условий зараз.
- Что делать с получившейся 1000 длиннотестов?
- Леххко. Фигачить их.
- Что делать, когда на поддержку всей этой ереси будет уходить 40 часов за 5 рабочих дней?
- Хз, но уже страшно.


Алексей Лупан Качество отсутствует, коль баги присутствуют Этот доклад Алексей сперва рассказал участникам конференции по отдельности, а уже потом всем вместе. Хороший, индивидуальный подход, мне нравится.
Заметки: Качество не бывает второй свежести, оно или есть или его нет. Тестировщики работают по правилу мертвеца - они могут сделать не плохо. Хорошо они сделать не могут. Но - кто если не мы? Надо влиять: угрозами, подкупом и грубой лестью.

Теперь - фотки.

наташки и Оля:
Альбом: office


Я:
Альбом: office


Резюме:

Хорошо съездил. Больше не поеду.

четверг, 15 декабря 2011 г.

Holy shit

Заявление
"У нас большая и сильная команда/отдел тестирования"

для коммерческих продуктов можно перевести как

"мы настолько тупы, что исправляем ошибки, а не предотвращаем".

Дискасс.

Хех

Тридцать из тридцати.

http://nazva.net/logic_test1/

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

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

Так

Как то так:

http://kirguduev.livejournal.com/502184.html

- Ты многое забыл, - проворчал Странник. - Ты забыл про передвижные излучатели, ты забыл про Островную Империю, ты забыл про экономику... Тебе известно, что в стране инфляция?.. Тебе вообще известно, что такое инфляция? Тебе известно, что надвигается голод, что земля не родит?.. Тебе известно, что мы не успели создать здесь ни запасов хлеба, ни запасов медикаментов? Ты знаешь, что это твое лучевое голодание в двадцати процентах случаев приводит к шизофрении? А? - Он вытер ладонью могучий залысый лоб. - Нам нужны врачи... двенадцать тысяч врачей. Нам нужны белковые синтезаторы. Нам необходимо дезактивировать сто миллионов гектаров зараженной почвы - для начала. Нам нужно остановить вырождение биосферы...
"
(c)

суббота, 10 декабря 2011 г.

Политики пост

Из Брига. О политике, подпишусь под каждым словом:
Я иногда думаю, что мир, в котором мы живем - тускнеет. Смотришь телевизор - чернуха, слушаешь радио - чернуха, шляешься по улице - та же херня и куча дебилов в придачу. Но то - я думаю. А ты так не думай. Потому что ты - это будущее. Где-то еще есть такой же малолетний опездол. И еще и еще. Вас много, Студент. Вы не строите баррикады и не размахиваете флагами. Вы не лезете в политику и не рвете на себе футболки. Вы делаете то, что должно делать любое существо на этой планете - вы развиваете разум. Свой. А значит - все одно, как говорил профессор Иван Васильевич Вернадский, работаете на ноосферу. Когда таких, как вы будет большинство - планета станет умнее и чище.

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

четверг, 8 декабря 2011 г.

Горки

Сегодня Одепт и Джонни вытащили меня покататься на борде. И не зря, хорошие ребята.

Первый спуск только и делал, что кувыркался, падал и вспоминал, в какую сторону нужно ехать.
Зато потом - ехал прям таки с ветерком. Медленней Джонни, но тем не менее.

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

В целом хорошо, одобряю.

Пикрелейтед.



Не забываем, что наличие на фото ковра автоматически делает штаны и борд инсталляцией, а фото - предметом искусства.

вторник, 6 декабря 2011 г.

Скоро

Скоро будет отчета о sqadays пост.
А пока - не успел я вернуться, как приехало начальство и интересуется, зачем наш проект. Я один из тех, кто будет объяснять - зачем. И еще много всякого.

По эскуа. Доклад Катукату Каменевой стоил того, чтоб его слышали. Но она маленькая хрупкая девочка. Алексей Лупан, судя по ттх, голосом должен уметь останавливать параходы. Но говорил не громче маленькой хрупкой девочки. Жаль.

От каждого из них я ждал настоящего боевого рыка тестировщика. Доклады того стоили. Подробности позже.

среда, 30 ноября 2011 г.

Есть вопросы

Как часто вы хвалите своих коллег, своих бойцов?
Признаете победы, идеи, итпх.
Я посчитал. Четыре раза в день - я.
И еще посчитал. Меня - раз в полтора месяца.Непризнанны гений, епт.
Буду что-то менять.
Как-то так. Всем спасибо.

понедельник, 28 ноября 2011 г.

По результатам поста - я на sqa days буду в форме сотрудника NAUMEN, белая такая, с оранжевым текстом. Да-да, это пеар.

Сегодня очень хочу перевести еще немного этого замечательного Канера. Но, скорее всего, не успею.

Как вы заметили, тестирование у нас развивается семимильными шагами, не то что 10 лет назад. Каждые полгода - слет тестеров всея СНГ. Раз в неделю - тренинги разных гуру. Докладов - усмотреться.

Знаете, как создают все эти тренинги и доклады люди, зарабатывающие на них деньги и популярность? У меня появилось ощущение, что так:
1. Берется любой пост Виттакера, любая глава Майерса, любой урок Канера или любой абзац Бейзера. Любой давности.
2. Дополняется примерами из практики.
3. ...
4. ДОКЛАД ГОТОВ!!!

Неленивые и хитрые переводят по две статьи сразу и это тянет уже на семинар, тыщ за пять. Соответственно, три - тренинг, осилившие четыре называют свое творение курсом.

Я пока не знаю хорошо это или плохо. Наверное, хорошо.
Но по концентрации и по содержанию идей и мыслей - совпадает сильно

суббота, 26 ноября 2011 г.

Lesson 52

Ах, да.
Благодаря конторе и начальству еду на sqa days 10. Еще едут 2 тестировщицы.
Хорошо.

Екб, кто-нибудь еще будет там?
Не екб: Феликс? Редфокс? Думтест? Кто там еще-то... Вас увижу?

4-го буду в мск. Там есть что-нибудь интересное?

Слово Канеру:

Техники тестирования основанные на том, как вы тестируете.


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

Тестирование по плану Ручное тестирование, обычно выполняемое новичками, которые шаг за шагом следуют плану тестирования, написанному старшим тестировщиком.

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


Исследовательское тестирование Мы ждем, что тестировщик знает весь проект, продукт, целевую аудиторию, риски, сценарии, которые привели к предыдущим сбоям, Новые тесты постоянно создаются и используются. Они гораздо эффективней, чем старые, так как основываются на том, что тестировщик постоянно увеличивает объем знаний о проекте.

Партизанское тестирование Быстрая и грязная атака продукта. Форма исследовательского тестирования, ограниченная во времени, выполняемая опытным тестировщиком-исследователем. Например старший тестировщик может потратить один день на область, которая в противном случае игнорировалась бы. Он пробует на продукте самые мощные свои атаки. И если находит серьезную проблему, то область будет перетестирована и может быть изменен весь план тестирования. Если он не находит проблем, то и в дальнейшем область будет игнорироваться или походить лишь небольшие испытания.

Тестирование по сценарию Обычно обладает четырьмя атрибутами. 1) Тесты должны быть реалистичны. Они должны повторять то, что обычно делают с продуктом заказчики. 2) Тесты должны быть сложными, включать в себя использование нескольких функций. 3) По ним должно быть просто определить, прошла программа тест или нет. 4) Заинтересованные лица должны согласиться, что программа должна быть исправлена если не выдержит этой проверки. Тест, обладающий всеми четырьмя атрибутами будет убедительным, и давать на выходе реальные баги. Однако вам придется долго создавать и поддерживать качественные сценарии.

Тестирование по сценарию (прим. w_bf: это не я ошибся, это у Канера повтор) Тесты, основанные на кейсах использования продукта обычно называют тестами по сценарию (Jacobson 1992, Collard 1999) или юзкейс-тестами. (Многие люди классифицировали бы их как тесты основанные на покрытии важных сценариев использования)

Тестирование установки Установка ПО различными путями на различных системах. Проверка того, какие файлы добавлены и изменены на диске. Работает ли установленная программа? Что случится при удалении программы?

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

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

Тестирование производительности Такие тесты проводят для определения того, как быстро работает программа, чтоб решить, нуждается ли ПО в оптимизации. Но такие тесты могут найти и многие другие баги. Значительные изменения в производительности по сравнению с предыдущим релизом могут идентифицировать эффект от ошибки в программе. Например, если проверите, как долго работает некая функция сегодня, а затем проверите то же самое завтра, вы вероятно, сможете проверить это вместе с программистом и написать отчет об ошибке, в случае если тест прошел значительно быстрее или медленнее. Либо считать эти изменения подозрительными, так как произошли фундаментальные изменения в программе.
Sam Guckenheimer заметил: "Разница в производительности также может означать изменения в сторонних компонентах ПО или изменения в конфигурации. Например изменения в JVM с различными релизами JDK. Так тестирование производительности может даль удивительные результаты, даже если ваш код не менялся вообще."

среда, 23 ноября 2011 г.

Lesson 51

Что-то уроки у Сэма пошли немаленькие, быстренько перевести уже не получается, эх.


Слово Канеру:

Техники тестирования, основанные на проблемах сфокусированы на причинах тестирования (каких рисков мы хотим избежать)

Тестирование основанное на рисках имеет по крайней мере два основных значения.

Amland (1999) предоставил замечательное описание менеджмента тестирования основанного на рисках. Согласно его точке зрения, анализ рисков необходим для определения следующих шагов тестирования. Тесты приоритезируются с точки зрения вероятности того, что фича сломается и с точки зрения вероятной цены поломки фичи. И чем больше вероятность поломки, тем важнее тест и тем раньше его нужно проводить.

По другомум мнению, анализ рисков можно делать собственно для поиска ошибок. Когда мы изучаем особенности продукта, мы спрашиваем себя, как он может ломаться. Этот вопрос распадается на на множество дополнительных вопросов, таких как: Как будет выглядеть бага? Почему эта фича сломалась? (Мы опишем наш подход к тестированию основанному на рисках в дополнении к книге)

Оба этих подхода обсуждались в James Bach on Risk-Based Testing (1999c).

Whittaker и Jorgensen (1999 and 2000) предоставили отличное обсуждение и примеры широких классов ошибок, включающих нарушения ограничений:

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

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

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

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

Whittaker (2002) дал детальные рекомендации по тестированию этих ограничений.

Вот несколько полезных советов для проектирования тестов с учетом риска:

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


Настроение дня:


Готовая тема попутчика Декстера.

вторник, 22 ноября 2011 г.

Lesson 50 (часть 2)

Часть первая

Слово Канеру:

Техники тестирования основанные на том, что тестируется.

Тестирование репрезентативных значений Репрезентативные значения класса эквивалентности те, которые чаще приводили к ошибкам. В тестировании граничных значений - граничные значения всегда наиболее репрезентативны. Но предположим, что вы не можете отобразить класс эквивалентности на числовую ось. Например принтеры Hewlett-Packard PCL-5 являются классом эквивалентности, потому как должны работать одним и тем же образом. Теперь предположим, что для конкретной задачи один из принтеров имеет немного больше шансов заполучить проблему, чем другие. Это принтер и будет репрезентативным значением класса, и если он нас не подведет - не подведут и остальные.

Тестовая матрица для полей ввода Для каждого типа поля ввода ты можешь разработать достаточно стандартный набор кейсов и использовать их в этом и других продуктах. Пример мы приведем далее в этой главе.

Карта и проверка всех способов редактирования полей Часто есть возможность изменить значение переменной несколькими путями. Например, есть способ импортировать данные в поле, ввести значение напрямую, скопировать результат в поле, поле может программно вычисляться и перевычисляться автоматически и так далее. Поле имеет ограничения. Некоторые ограничения могут быть постоянными, друггие могут меняться в зависимости от значений в соседних полях. Например, если J и K - целые положительные числа, они ограничены значениями от 0 до MaxInt. Это постоянное ограничение, зависящее от языка программирования. Предположим, что N тоже положительное целое, N = J + K, и если N=5, то J = 5 − K, и J не может быть больше 5(значение N). Это меняющееся ограничение, чей диапазон допустимых значений зависит от N. Чтоб проверить, что J находится в диапазоне допустимых значений (5-K) мы должны попытаться изменить его значение в каждом возможном направлении.

Логическое тестирование Переменные имеют зависимости в программе. Например, в программе может быть правило, которое говорит, что если PERSON-AGE больше 50 и если SMOKER = YES, то OFFER-INSURANCE должно быть равно NO. Правило выражает логическую зависимость. Логическое тестирование пытается проверить все логические зависимости в программе. График причинно-следственных связей - техника проектирования широкого набора тестов основанных на логике системы.

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

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

Покрытие линий и ветвей кода Вы достигли 100% покрытия, если ваши тесты исполняют каждую линию или ветвь кода программы. Проектирование тестов для достижения покрытия называют "Тестирование основанное на покрытии" (После того, как вы достигли этого вы можете прекратить тестирование или прекратить создание новых тестов). Мы называем это покрытием строк и ветвей кода, чтоб отличить от других типов тестирования, основанных на покрытии. Покрытие конфигураций - отличный пример техники, которая проверяет один и тот же код несколько раз, но при этом все равно может потенциально привести к отличным результатам. Есть много других примеров. Для тестирования основанного на достижении высокого покрытия строк и ветвей кода характерно упущение многих видов ошибок, таких как(но не только) баги с участием пропущенного кода, баги некорректного обращения с граничными значениями, проблемы со временем, проблемы с совместимостью с железом и ПО, баги delayed-fuse, такие как дикие указатели, утечки памяти или stack corruption, которые в конечном счете ведут к переполнению стека, проблемы юзабилити и другие неисправности с точки зрения заказчика. Эта техника является более ценной в плане выявления неполноты тестирования (какой код сейчас не тестируется), как стандарт минимального необходимого объема тестирования. И в действительности опасно, если тестировщики останавливаются только потому, что они достигли определенного процента покрытия (Marick 1999).

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

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

Тестирование требований Тестирование сфокусированное на том, насколько программа удовлетворяет требованиям (как вариант доказательство того, что требования выполнить нельзя).

Комбинированное тестирование Тестирование двух или более переменных в комбинации. Мы поговорим об этом позднее в этой главе. Это важный вид тестирования, но многие тестировщики пренебрегают им. Профит от программ обычно заключается как раз во взаимодействии множества переменных и если вы не не учитываете это в тестах, то имеете шанс пропустить множество ошибок, вызванных сочетанием значений нескольких переменных, а не значением одной.

понедельник, 21 ноября 2011 г.

Рутина

Сегодня почти треть дня - спорим.

О том, что лучше - сравнивать две модели данных или пользоваться жестким списком assert'ов
Жесткой ли должна быть модель данных или динамически формирующейся.
О том, нужно ли помещать знания о манипуляциях в тестируемой системе в модель тестирующей системе или нет.

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

Потому как цель - не создание тестирующей системы, а тестирование продукта. И я уже начинаю ощущать разницу.

Альбом: randompics4lj



P.S. Или котоверсия, да:
Альбом: randompics4lj

пятница, 18 ноября 2011 г.

Lesson 50 (часть 1)

День сегодня какой-то неспокойный.

Процитирую Славу П.:

- Кто ее блин создает эту обстановку нервную, которая в проекте? Леша? По Леше можно приборы калибровать!

И еще сэра Терри:
- Нельзя сказать, что Витинари был расистом. Он одинаково ненавидел все расы.
(вроде так)



Слово Канеру:

Техники тестирования основанные на том, что тестируется.



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

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

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

Интеграционное функциональное тестирование Тестирование совместной работы нескольких функций.

Хождение по меню Проход по всем пунктам меню в графическом интерфейсе пользователя, выбирая каждый пункт меню.

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

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

Тестирование граничных значений Класс эквивалентности это набор переменных. Если вы можете отразить их на числовой оси, то граничными значениями будут наибольшие и наименьшие значения класса. В тестировании граничных значений вы тестируете их, а также те граничные значения близлежащих классов, которые лишь ненамного меньше, чем наименьшее значение вашего класса и ненамного больше, чем наибольшее значение вашего класса. Рассмотрим поле ввода, принимающее целые значения от 10 до 50. Значения, представляющие интерес, это: 10(меньшее значение), 9(наибольшее неподходящее значение), 50(наибольшее), 51(наименьшее неподходящее).


Часть вторая