Про парадокс пестицида

Более 20 лет назад, в 1990 году, Борис Бейзер в свое книге «Software Testing Techniques» ввел понятие, известное как «парадокс пестицида» (pesticide paradox), которое формулируется следующим образом:

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

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

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

Существует ряд обстоятельств, по которым хороший тестовый набор со временем утрачивает свою эффективность:

1. Невозможно проверить все возможные сценарии

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

2. Функциональность приложения изменяется с течением времени

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

3. Люди осторожничают только там, где чувствуют непосредственную опасность

Это означает, что разработчики всегда будут проявлять гиперосторожность лишь в тех местах, где ранее тестировщики обнаружили проблемы. Однако там, где раньше было «все ОК», их внимательность снижается на порядок. Т.е. другими словами, разработчики учатся избегать ошибок, которые находятся тестами.

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

Вот несколько рекомендаций на этот счет:

1. Следите за изменениями в продукте и предугадывайте их возможные последствия

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

2. Откажитесь от неэффективных тестов

Бесполезно держать большое количество тестов, которые в итоге не помогают вам. К примеру, если у вас есть 10 тестов, которые покрывают одну и ту же область, и ни один из них за все время так и не нашел ошибок, то вполне целесообразно сократить число таких тестов.

3. Постоянно меняйте тестовые данные

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

4. Используйте неформальные средства тестирования

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

Источник

Про баг в программе Talking Spoonya (v1.0.7 для iOS)

В программе Talking Spoonya («Говорящий Спуня»), созданной в стенах i-Free, есть незамеченный разработчиками баг.

При первом старте, приложение начинает автоматическую загрузку дополнительного контента (набор анимаций для Спуни), после чего он сохраняется в  системном кеше приложений. В дальнейшем приложение оперирует данными, сохраненными в кеше. Если же данные приложения удалить из кеша (к примеру, через программу PhoneClean), то программа аварийно завершает свою работу при попытке запуска:

Jan 19 12:11:33 iPad ReportCrash[209] <Notice>: Formulating crash report for process Talking Spooni[207]
Jan 19 12:11:33 iPad com.apple.launchd[1] (UIKitApplication:com.i-free.talkingspoonya[0xc8d3][207]) <Warning>: (UIKitApplication:com.i-free.talkingspoonya[0xc8d3]) Job appears to have crashed: Abort trap: 6
Jan 19 12:11:33 iPad backboardd[31] <Warning>: Application 'UIKitApplication:com.i-free.talkingspoonya[0xc8d3]' exited abnormally with signal 6: Abort trap: 6
Jan 19 12:11:33 iPad ReportCrash[209] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/Talking Spooni_2014-01-19-121133_iPad.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

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

А мне остается лишь сейчас взять и отправить отчет об ошибке в i-Free.

P.S. обойти проблему можно просто взяв и переустановив приложение.

Про первые $15 на uTest.com

Есть такой сайт — uTest.com. Это площадка, на которой заказчик может искать людей, готовых протестировать его продукт. Сайт весьма популярный за бугром, который в первую очередь ставит на качество оказываемых услуг.

Между заказчиком и конечными тестировщиками выступают, как и в обычных практиках, посредники в виде PM’а (Project Manager) и TM’а (Test Manager). PM набирает команду и потом отдает работу TTL (Test Team Lead), который занимается консультацией по вопросам тестировщиков, общается с PM о продукте и пр. Если у ТТL’а имеется статут Premier, то он также может еще апрувить или реджектить  найденные ошибки.

Большая часть людей, которые выступают в качестве исполнителей, не являются профессиональными тестировщиками. Таким образом, uTest.com — это хорошая площадка для фрилансеров (в основном —  любителей), которые готовы помочь проверить продукт и при этом заработать.

Я зарегистрирован на uTest еще с конца 2012 года, но активности там никакой не проявлял в виду сложной системы отбора исполнителей. И вот недавно меня включили в один из циклов. Задание было не сложное — пройтись по тест-кейсам и проверить правильность работы приложения. Т.к. в ходе верификации ошибок не было найдено, то я смог получить только 15 долларов. Ну что ж, на первый раз неплохо. Выводить деньги можно через систему PayPal или Payoneer. В будущем постараюсь более активно искать проекты ^_^

[Chrome] Куда подевались настройки эмуляции?

Начиная с последних версий браузера Google Chrome из привычного места пропали опции настройки User-Agent’а, размером экрана и пр. Все это раньше можно было сделать через инструменты разработчика (F12 -> Settings -> Overrides). Я использую версию 32.0.1700.72 m и вот что сейчас есть в этом разделе:

chrome_settings

Пичаль, ведь там нет ничего нам нужного! Думаете, что из Chrome удалили так нужные тестировщикам и разработчикам инструменты? Нет, оказывается, их просто вынесли в другое место (F12 -> Drawer -> вкладка Emulation):

chrome_settings_2

 

Запись доклада с Mobile ConfeT&QA (осень 2013)

Запись моего выступления с небольшим обзором операционной системы Tizen в рамках онлай-конференции Mobile ConfeT&QA, которая проходила с 9 по 11 декабря 2013 года.

Tizen — это новая открытая операционная система, наследница MeeGo, LiMo и Bada, которая в будущем призвана стать прямым конкурентом Android. Крупнейшим производителем мобильных устройств, которые будут работать под управлением ОС Tizen, станет Samsung, который совместно с Intel является непосредственным разработчиком этой платформы. Уже сейчас идет активная работа над созданием приложений под новую ОС, а непосредственный выход Tizen на рынок планируется уже в начале 2014 года.

Основные моменты доклада:

1. Что такое Tizen и с чем его едят?
2. Какие типы приложений можно писать под Tizen?
3. Обзор Tizen SDK и средств для отладки и тестирования приложений.
4. Заключение и небольшие авторские мысли по Tizen’у.

Про то, как достать фразы из qaanswers.ru

Сегодня в чат скинули ссылку на сайт http://qaanswers.ru/, который каждый раз выдает забавную фразу из жизни QA-инженера, или как их там правильно называть?

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

Сколько всего фраз хранится в базе – я не знаю. Набросал простейший скрипт, который дергает qwe.php 300 раз (думаю, выборка более, чем достаточная). Получив список фраз, я прогнал их через скрипт, который ищет совпадение строк и удаляет дубликаты. Таким образом, в итоге я получил чуть более 100 уникальных фраз.

Вот они:

Читать далее «Про то, как достать фразы из qaanswers.ru»

Cleanmymac

Вчера на рабочем ПК установил Хакинтош (OS X 10.9) в качестве виртуальной машины. В образе ОС уже были защиты несколько сторонних утилит, в том числе крякнутый CleanMyMac. Так вот, при попытке им воспользоваться появилось сообщение:

Ваша копия CleanMyMac 2 нелегальна и будет деактивирована.

Мы определили, что вы используете пиратскую копию. Пожалуйста, скачайте CleanMyMac 2 с нашего сайта и поддержите нас покупкой лицензии. В течении часа мы предлагаем вам скидку в размере 50% на CleanMyMac 2.

cleanmymac

Во-первых, фраза «в течении» написана с ошибка, правильно в данном случае — «в течение«. 🙂 Во-вторых, я все же нажал на кнопку «Купить со скидкой 50%» и да, мне открылась страница покупки, где значилась цена со скидной. Однако я сразу бросил взгляд на ссылку, по которой осуществляется переход на сайт:

http://macpaw.com/ru/store/cleanmymac?campaign=crk2cmm2&utm_source=cmm2_cracked
&utm_medium=app&utm_term=&utm_content=&utm_campaign=crk2cmm2_50
&clh=Mzg1MjU5fGUyMjQwZTNiOTEzNDg3NWVmYzViYTgyMzNmYTMwODE3

Как видно, ссылка содержит параметры, в которых фигурирует упоминание о том, что текущая версия является нелегальной. А если убрать подобные параметры, то такая измененная ссылка уже не даст нам возможность приобрести CleanMyMac с 50% скидкой :’-(

http://macpaw.com/ru/store/cleanmymac?campaign=utm_medium=app&utm_term=&utm_content=
&clh=Mzg1MjU5fGUyMjQwZTNiOTEzNDg3NWVmYzViYTgyMzNmYTMwODE3

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

[iOS] Просмотр системных логов

Существует несколько способов просмотреть логи с iOS-устройства.

1. Через само устройство — в этом случае посмотреть можно лишь только краш-репорты (crashlog), но ведь это самое то для тестировщика! Идем в «Settings» -> «General» -> «About» -> «Diagnostic & Usage» -> «Diagnostic & Usage Data» и смотрим все доступные отчеты о падении приложений. Единственная проблема заключается в том, что здесь нет удобного средства для экспорта этих самых отчетов. Тем не менее, при крайней необходимости можно скопировать нужный участок лога через стандартную функцию копирования текста.

2. Через XCode — к сожалению, среда разработки XCode доступна исключительно для MacOS. По этой и многим другим причинам было бы неплохо, если тестировщики iOS-приложений имели в своем распоряжении хотя бы Mac mini. Для просмотра краш-репортов нужно подключить iOS-устройство к компьютеру, нажать кнопку «Use for Development», после чего в разделе «Device Logs» уже можно непосредственно просматривать логи и, что не маловажно, импортировать их!

Просмотр системных логов с iPhone и iPad

3. Через программу «iPhone Configuration Utility» — хотя основная функция этой утилиты заключается в настройки профилей для iOS-устройств, в ней имеется консоль, куда выводятся все логи с подключенного устройства. Незаменимая вещь для тестировщика. К тому же, утилита доступна и для Windows.

Просмотр системных логов с iPhone и iPad

4. Через синхронизацию iTunes — каждый раз, когда вы синхронизируете свое iOS-устройство с iTunes на компьютере, логи сохраняются в следующие директории:

Mac OS X:
~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>

Windows XP
C:\Documents and Settings\<USERNAME>\Application Data\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>

Windows Vista or 7
C:\Users\<USERNAME>\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>

Octane 2.0: IE11 vs Chrome vs Firefox

Octane — это еще один бенчмарк, который оценивает общую производительность обработки JavaScipt в браузере. И так, результаты прогона на моем ПК таковы (Windows 7 x64, Intel Core i5-2500 3.30GHz, RAM 16.0 GB):

  • Internet Explorer 11 — 13597 баллов
  • Firefox 25.0 — 18212
  • Chrome 31.0.1650.57 — 20695

Тест производительности браузера Safari 7

Несколько месяцев назад я сравнивал совместимость браузеров Safari и Chrome на поддержку HTML5 и их общую производительность. И вот недавно Mac OS обновилась до версии 10.9, а вместе с ней и Safari до седьмой версии. Я решил проверить, на сколько лучше теперь обстоят дела с Safari, если прогнать его через тест Peacekeeper.

Странно, но Safari 7 набрал даже меньшее количество очков, чем Safari 6.0.5 — 3486 против 4019. Однако совместимость в HTML5 возросла, и теперь составляет 4/7 против 3/7, которые были раньше.

Тест производительности браузера Safari 7

А вот Google Chrome (31.0.1650.57) теперь имеет полную совместимость с HTML5 — 7/7 и набирает 4720 очков.