Добрый день.
В выпуске: баги и дыры; архитектура систем; разработка приложений; тестирование ПО и тестировщики; процессы; победы и поражения; эпизоды.
Баги и дыры
• Функция округления возвращает неверный результат? Протестируйте её на всех возможных числах типа float (четыре миллиарда чисел). Тестирование займёт всего полторы минуты.
• История одного бага, проявлявшегося при передаче SMS-сообщений: картина маслом, анализ, извлеченные уроки.
• Баг в Twitter: как увеличить количество последователей в своем аккаунте путем простейших манипуляций из другого аккаунта.
• Последствия одного сбоя в GMail: как проснуться знаменитым и получить тысячи писем в свой почтовый ящик.
• Бразильский инженер по компьютерной безопасности с легкостью находит уязвимости в сервисах Google и Facebook.
• Встроенное ПО холодильников и телевизоров содержит уязвимость, позволяющую включить их в ботнет и рассылать спам.
• Главная страница Yahoo! заразила миллионы компьютеров: встроенный код за несколько дней превратил миллионы компьютеров в машины для получения электронной криптовалюты.
• Авария разгонного блока Centaur в 1999 году: разбор полетов.
• Баг может быть настолько удобным, что пользователь может попросить его оставить.
• Старый баг борозду испортит, или история с одним интернет-магазином.
• Scott Hanselman приводит удручающие цифры по потреблению ОП современными браузерами и ищет альтернативу.
• Try/catch: мое приложение никогда не упадет, и о его ошибках никто никогда не узнает.
Архитектура систем
• Bitly.com: 10 индикаторов, которые нам нужно было отслеживать в своей системе.
• Ренессанс в eBay: гигант индустрии бросает все яйца в корзину JavaScript и радуется полученным результатам.
• Архитектура NYTimes: система на базе RabbitMQ будет функционировать даже при отказе отдельных компонентов.
• Facebook: выбор Mercurial в качестве системы контроля версий и ее масштабирование. Бонус: сравнение систем хранения версий в Google и Facebook.
• Критика Facebook: социальная сеть нуждается в коренном пересмотре алгоритмов работы чтобы в большей степени соответствовать паттернам человеческого общения.
• Способна ли технология iBeacons кардинально изменить наше взаимодействие с окружающими миром и открыть новое поле деятельности для разработчиков?
Разработка приложений
• Optional parameter missing: в чем может причина такой парадоксальной ошибки?
• TDD: что такое хорошо и что такое плохо в изложении и применении популярной методики разработки ПО.
• Семь привычек неэффективных программистов: список неполный, но заслуживающий внимания.
• Как создать простое приложение, работающее с Node.js, в соответствии с практиками TDD?
• JavaScript: что такое хорошо и что такое плохо.
• Один из лидеров рейтинга StackOverflow рассказывает о причинах, побудивших его прекратить свою деятельность в этом сервисе.
• Никаких побочных эффектов не предвидится, если программный код ни разу не будет выполнен.
• Кодер, хакер, программист, разработчик, ученый: классификация по типам и рекомендации юношам, обдумывающим житие.
• Что произойдет, если в вычислительном кластере каждый работник (node) возомнит себя менеджером (hub)?
• Программный код, мелькающий в художественных фильмах: от “Девушки с татуировкой дракона” до “Социальной сети“.
Тестирование ПО и тестировщики
• В блоге опубликована заметка “WebDriver, PageObject и динамические локаторы“.
• Хороший онлайн-инструмент для анализа аргументов вызова утилит в Unix.
• Модульные тесты: несколько полезных советов.
• Gabriel Schenker рассказывает об организации тестирования приложений, работающих на базе AngularJS.
• Регрессионное тестирование: краткое пособие для начинающих.
• Steven Lott отказывает в доверии ручному тестированию: то, что называют ручным тестированием, либо не нужно, либо тестированием не является.
• Чем больше внимания уделяется регрессионным тестам в начале разработки продукта, тем меньше усилий понадобится на его ручное тестирование.
• Сравнение тестирования ПО с игрой в шахматы: на текущий момент, автоматизация вычислительных операций не способна уничтожить ни первое, ни второе.
• Michael Bolton призывает не успокаиваться на ожидаемых результатах тестов, а спрашивать себя: “Это ожидаемые результаты, или же результаты, которые я хочу“? И еще один пост на эту тему.
• Компания Google помогла устранить более тысячи проблем в исходном коде проекта FFmpeg: подробности процесса тестирования и найденные ошибки.
• Тестирование ПО в Google: прежде чем предлагать продукт широкой аудитории, поработай с ним сам.
• Обеспечение качества: король умер. Да здравствует король!
• Если с помощью модульного теста был обнаружен серьезный баг, нужно избавиться от модульного теста.
• Michael Bolton сравнивает тестовые сценарии с железнодорожными вагонами, вскрывает их недостатки и предлагает альтернативу.
Процессы
• Опасность культа Карго в разработке ПО: нужна смелость в противодействии навязываемым средствам от всех болезней.
• Что такое DevOps и как этот подход преобразует взаимодействие между разработкой, тестированием и обслуживанием продукта.
• Разработка, сборка и тестирование в Google: взгляд с высоты глазами инсайдера.
• Автоматизация может полностью избавить от рутинной работы. Или не оставить времени ни для чего другого.
• Пять мифов, следование которым способно разрушить любой проект, в целом, и проект по разработке ПО, в частности.
• SCRUM: принципы, роли, спринты и другие артефакты (краткое введение в тему). Бонус: пользовательские истории – это вам не шухры-мухры.
Победы и поражения
• DuckDuckGo рассчитывает откусить от пирога Google за счет анонимности, отказе хранить любую пользовательскую информацию и использовать фильтрацию.
• DuckDuckGo: наши руки чистые, так что ищите вместе с нами.
• История одного стартапа: даже успешный продукт не гарантирует процветания его создателям.
• Истории заката 51 стартапа: разбор полетов и извлеченные уроки.
• История одного стартапа: два года работы, 300 пользователей, нет прибыли, извлеченные уроки.
Разное
• Если Дилберт не перешел на новую работу, это означает что он середнячок и никому особо не нужен.
• Горячие головы способны предсказать разрушение основ мироздания по динамике запросов в Google.
• События прошлого через призму стандартных операций в Git: живи Мартин Лютер в наши дни, работа над собственной доктриной была бы и проще, и сложнее.
• Размещение контента на web-страницах: прошлое, настоящее и будущее.
• Дилберт: лучший способ протолкнуть идею – убедить босса в том, что идея принадлежит ему.
• Список вопросов потенциальному работодателю со стороны потенциального сотрудника (программиста).
Эпизоды
http://openquality.ru/episodes/241
Р. Не ходи туда. Тебя там ждут неприятности.
Т. Ну как же туда не ходить? Они же ждут.
http://openquality.ru/episodes/242
М. Ты вчера сказал, что баг будет исправлен завтра. Но завтра уже наступило.
Р. Я так и думал, что завтра ты скажешь, что исправить баг нужно было вчера.
Всего доброго в последний месяц зимы.
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.