Рубрика «ошибки» - 13

Думайте при разработкеНедавно наткнулся на ошибку в Android приложении Яндекс.Метро. Если бы был чемпионкой мира по синхронному плаванию, то обязательно спросил бы: «Кто создавал программу „для галочки“? Кто работал „на отшибись“? Кто слабое звено?». Недоумение вызывала не сама ошибка, а то, что она попала в приложение и всё ещё не исправлена.

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

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

В статье же мы будем рассматривать распространённые приложения, которые протестировать может любой участник команды. Давайте проведём небольшой эксперимент. Если у вас нет Android устройства, то попросите минут на десять у коллег или друзей. Скачайте приложение Яндекс.Метро и попробуйте его протестировать. Интересует актуальная на текущий момент версия 1.63 от 02.11.2012 сборка 159 (на Google Play стоит дата 21.01.2013). Для корректности проверки предлагаю снять галочку «Автообновление» в настройках Google Play.

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

Эта же ошибка может проявить себя не так явно:

небольшая подсказка

Программа отображает маршруты между двумя станциям, но наиболее очевидный (и короткий) не находит.

Читать полностью »

В начале этого года известный сайт для вопросов и ответов formspring.me отключил возможность задавать анонимные вопросы без логина на Formspring (при этом опция «hide my name», позволяющая скрыть своё имя, пока ещё сохраняет своё действие). Теперь настройки, например, выглядят так:
Читать полностью »

Хочешь презентовать как Стив Джобс? Искусству презентаций можно обучиться довольно быстро. Но на первом выступлении сознание путается, и рассказчик повторяет все типичные ошибки. Я собрал самые очевидные из них. Это не советы из умных книжек, а недавний живой опыт таких же как ты. Как быстро сделать презентацию эффектной, и каких грубых ошибок стоит избегать с самого начала? С примерами.

Как понравиться инвестору (и не только). 10 ошибок при презентации проекта
Читать полностью »

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

Грабли, или 5 типичных ошибок настройки Asterisk

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

Читать полностью »

Как сообщают игроки на официальном форуме Blizzard, в компьютерной игре Diablo III найдена ошибка, позволяющая неограниченно клонировать объекты игры — т.н. дюп.

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

Автоматизируем сбор информации о падениях программы

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

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

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

Никогда не понимал зачем в PHP функция each. Ведь есть foreach…
Но сегодня у меня «сломался» один участок кода, который жил шесть лет.
Там была конструкция с использованием each.
ошибка была исправлена секунд за 30 — давно думал исправить это все на foreach, но оставлял в качестве напоминания о том, какой индокод у меня был в свое время. Но просто исправить и пройти мимо я не мог.
Итак each против ООП:
1 — each игнорирует области видимости и спокойно выводит private свойства.Читать полностью »

Приветам!

Достаточно долго работаю с сайтами, в том числе, с онлайн магазинами улучшая их юзабельность и увеличивая количество продаж для клиентов. За этот промежуток времени я поработал более чем со 150 различными сайтами, которые так или иначе что-то продают. Недавно щелкал сайты и удивлялся, как много плохих сайтов продает хорошие товары. Хотя, откровенно говоря, наши интернет магазины и удобство пользования ими идут на шаг вперед западного мира (не берем с иконостаса eBay и Amazon).

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js