Добрый день.
В выпуске: баги и дыры; архитектура систем; разработка приложений; модульные тесты; тестирование ПО и тестировщики; инструменты автоматизации; человеческий фактор; эпизоды.
Баги и дыры
• Баг из прошлого: симпатичный алгоритм постраничного отображения записей на странице.
• Отсутствие кнопки Start в Windows 8 обыгрывается на новый лад.
• Финансовая эффективность программ Bug Bounty: кто оказывается в выигрыше?
• Если простого обывателя так легко превратить в квадриллионера, не будет ли так же легко списать кровно заработанные средства со счета невнимательного труженика?
• Сотрудника Google премировали за найденные в Internet Explorer баги.
• Marco Arment cделал расправу с багами в iOS более комфортной с помощью Bugshot.
• История одного низкоуровневого бага: нашел, изучил, победил.
• Разбор бага в системе безопасности Android, который прогремел на весь мир.
• Из-за бага в финансовом программном обеспечении можно угодить в тюрьму.
• Программа поощрения за найденные баги порой может оказываться эффективнее найма собственных тестировщиков.
• Visual Studio и не только: забавные сообщения в интерфейсах.
• Привет из девяностых: одним из критериев качества программы может служить срок ее службы.
Архитектура систем
• Нормализация базы данных: что такое хорошо и что такое плохо.
• Универсальная Модель Данных, которая гарантированно подойдет для любой системы.
• Риски в функционировании информационных систем: перечень параметров и формул для их вычисления.
• Paul Graham призывает создателей информационных систем больше внимания уделять пользователям и не класть все яйца в корзину масштабирования.
• Горизонтальное и вертикальное масштабирование: несколько вопросов, которые стоит задать при анализе системы.
• Архитектура продукта порой сформирована в череде сменяющих друг друга архитекторов, каждый из которых успел наследить.
• Анализ архитектуры Twitter, позволяющей обслуживать миллионы активных пользователей и обеспечивать быструю передачу твитов.
• Масштабирование информационной системы: где постелить соломку и как избежать потенциальных трудностей.
• Облака – белогривые лошадки, или комикс о необходимости бэкапа облака в другом облаке.
• Пять советов по созданию масштабируемой системы на PHP в облаке EC2.
Разработка приложений
• Пушкой по воробьям: всегда ли методики ООП эффективны, или задачу можно решить с помощью простой функции?
• Гибкие методы разработки ПО привносят не только плюсы, но и минусы.
• Ничто не вечно под луной, или сказание о неизбежности изменений в процессах разработки ПО.
• Правило трех: при каком условии программный компонент выходит на орбиту многократного использования?
• Jes Schultz Borland рассказывает о хорошем навыке решения задач в IT.
• Wally справедливо полагает, что для незавершения проекта в срок всегда найдется уважительная причина.
• Самое важное в создании программного продукта – хорошо понимать предметную область, в рамках которой он будет работать.
• OAuth 2.0 – The Good, The Bad & The Ugly: обзор популярного фреймворка.
• Как вывести из себя пользователя приложения для мобильных устройств с помощью самых высоких технологий.
• Мнение разработчика: почему так ненадежно программное обеспечение для бизнеса и как сделать его надежным?
• Uncle Bob и Uncle Ben призывают решать поставленные задачи максимально простым способом.
• Greg Brockman, ведущий инженер в Stripe, рассказывает о том, как в компании организован процесс разработки программного обеспечения.
• Краткое пособие по созданию альтернативы для почтовой системы GMail с сохранением ее достоинств и избавлением от недостатков.
• Что такое хороший коммит и почему он хороший?
• Raymond Chen приоткрывает завесу над наследованием окружения родительского процесса дочерним процессом.
• At its heart, web design should be about words. Words don’t come after the design is done. Words are the beginning, the core, the focus.
• Введение в язык Go: сильные стороны и первые шаги.
• Шпаргалка по основым операциям и правилам хорошего тона в Git.
• Что такое декларативное программирование и в чем его преимущества.
• Разработка игр: как выйти сухим из воды.
• Don Knuth делится своим мнением о компьютерной инженерии и программно обеспечении, а также дает несколько практических советов.
• Война ботов за место в ресторане: высокие технологии на службе гастрономических изысков.
• Забавный конвейер конверторов из одного языка программирования в другой.
Модульные тесты
• TDD: тест должен быть зеленым. А если не зеленый, то мы ему подсобим.
• 12 уроков, извлеченных в процессе внедрения модульных тестов в рамках и вне рамок TDD.
• Google Testing Blog: что такое test doubles и с чем их едят. Три года назад на эту тему.
• Модульные тесты: несколько полезных советов и замечаний.
• Что такое Vertical Slice Testing, и почему ноги у него растут из TDD?
Тестирование ПО и тестировщики
• Evil Tester выражает негодование по поводу дыр в безопасности неназванного сайта и рассказывает об атаках, которые он провел.
• Как проснуться и взглянуть на продукт и баги под новым углом, когда глаз замылен?
• Data-driven test cases: несколько полезных идей и рекомендаций.
• A/B testing: подводные камни на пути к достоверным результатам.
• Web-приложения для мобильных устройств: какие факторы оказывают влияние на их производительность?
• Elisabeth Hendrickson рассказывает о прошлом и делится своим видением будущего.
• James Bach разбил тестировщиков на 7 типов и описал каждый из них.
• Опечатка: от перемены мест букв (from -> form) кардинальным образом меняется смысл фразы.
Инструменты автоматизации
• Adam Goucher c очередной подборкой публикаций о тестировании web-приложений и смежных областях (0, 1, 2, 3).
• Scott Hanselman публикует обзор инструментов, позволяющих совершать чудеса в командной строке Windows.
• Хорошая статья по тестированию Spring-приложений, которая может оказаться полезной при тестировании продуктов любой направленности.
• Тестирование производительности и нагрузочное тестирование: обзор инструментов и сервисов.
• О чем говорят нестабильные автотесты: “That ‘randomly failing test’ was really ‘a genuine bug in the code‘”.
Человеческий фактор
• Что можно узнать о кандидате на позицию разработчика по его тестовому заданию.
• Подъем от инженера до менеджера может оказаться достаточно простым при несоблюдении корпоративных этических стандартов.
• Великолепный марафон от новичка до гуру в web-программировании: 180 сайтов за 180 дней.
• Частное мнение: 7 причин поработать в большой компании.
• Надежность хранения личной информации в Facebook зависит от человеческого фактора.
• Потенциальный пользователь (клиент или потребитель) в значительной мере определяет требования к продукту и его жизненный цикл.
• Качество ПО? Дилберт потрясен размером прибавки к зарплате и обещает возместить это сторицей.
• Чемпионам мира по программированию подготовлены комфортные условия для воинской службы.
• Дилберт цинично насмехается над возможностью прочитать одну волшебную книжку и стать лидером. И вдогонку получает под дых от своего коллеги.
Эпизоды
М1 (waterfall). Уже два года не было релиза. Печальный конец.
М2 (waterfall). Ну мы же зарелизимся в конце концов. Раз не зарелизились, то это еще не конец…
М3 (agile). Обо’Scrum’ились по полной. Все acceptance-тесты зеленые, а билд дырявый.
М4 (agile). А потому что гибче надо, гибче!
Р1. Не могу справиться с этим багом.
Р2. Либо это не твой баг, либо не баг вовсе.
Р1. Не могу объяснить тестировщику, что это не баг, а если и баг, то не мой.
Р2. Либо это не тестировщик, либо тестировщик, но не твой.
Всего доброго в августе.
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.