Pull to refresh
25
0.2
alexei lupan @astenix

QA дед

Send message

Как оценить задачу до начала разработки сайта

Reading time5 min
Views29K
Постановка задачи — ключ к успеху любой работы. Если задача не поставлена чётко, то невозможно даже понять, решена ли она.

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

Читать дальше →

12 навыков создания защищенных веб-приложений

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

Большинство примеров кода не привязаны к какому-либо конкретному языку программирования, но для наглядности я буду использовать PHP.

Итак, поехали.

Читать дальше →

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Reading time20 min
Views317K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

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

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.

Интеграционное тестирование web-приложения с Selenium WebDriver

Reading time6 min
Views36K
Интеграционное тестирование (в отличие от Unit- или модульного тестирования) это тестирование не отдельных атомарных компонентов системы (классов) а результата их взаимодействия между собой в какой-либо среде.

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

О том, как можно Unit-тестировать JavaScript я писал ранее, сейчас же расскажу о процессе интеграционного тестирования, применяемого в команде.
Читать дальше →

Проблема трех раскладок в Linux

Reading time2 min
Views15K
Имея одновременно три раскладки (английскую, русскую, украинскую) всегда в них путался, так как отличить их не глядя на индикатор не просто, а при потребности украинской раскладки, добавлять её и убирать каждый раз неудобно. Решается очень просто, расширением русской раскладки четырьмя дополнительными украинскими буквами (є, ї, і, ґ) и апострофом (’). Способ не претендует на уникальность, но здесь никто вроде бы еще не описывал.
Читать дальше →

«Правильная» музыка. Или как навести порядок в своей MP3 коллекции

Reading time5 min
Views81K

Мотивы

Навеяно хабратопиком.

Предыстория

В октябре 2008 года я купил себе iPhone 3G и, до нынешнего лета, в качестве mp3-плеера использовал именно его. Необходимость загружать музыку в смартфон, используя iTunes, по началу меня изрядно напрягала. Но, как выяснилось значительно позже, возможно именно это избавило меня от головной боли с конвертированием тегов, записанных кириллицей. Я просто не задумываясь добавлял альбомы из своей коллекции в «тунец» и всегда гарантированно получал на телефоне треки без «кракозябр». Удобно. Но всему приходит конец.
а дальше...

Тестирование методом свободного поиска: Отказ от плана не значит отказ от цели

Reading time2 min
Views3K
image

В статьях Джеймса Баха можно встретить несколько различных определений того, что такое тестирование методом свободного поиска (exploratory testing), и одно из них звучит так: «тестирование без заранее подготовленных сценариев, выполняемых в точным соответствием с планом» (Exploratory tests, unlike scripted tests, are not defined in advance and carried out precisely according to plan).

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

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

Кажущееся противоречие разрешается очень просто
Читать дальше →

Как оформить своё дело (в Украине)

Reading time7 min
Views11K
В этом посте я написал длинный текст о том как:
  • оформиться в Украине
  • стать физическим лицом-предпринимателем
  • платить единый налог
  • упростить себе жизнь при помощи интернет отчётности

Я описываю свой личный опыт. Простите за возможные ошибки. Навеяно этим постом
Исходные данные такие: Украина, удаленная работа с иностранным заказчиком, разработка сайтов.
Читать дальше →

Об экономии денег в проекте

Reading time4 min
Views13K
Однажды мне на глаза попалось исследование о том, какую цену предлагают наши конкуренты за те же самые услуги и работы, что и мы. И эти данные были неприятными: мы были заметно дороже. Чтобы сохранить заказы и удержать позиции, нам были нужны перемены.

Забегая вперед, скажу, что в итоге мы перестроили свою работу. Причем, не только понизив издержки, но и повысив зарплаты программистам. Как – читайте под катом.
Читать дальше →

Сверхурочные? Теперь у вас две проблемы!

Reading time4 min
Views4.6K
В одной старой шутке говорится: если у вас есть проблема, и вы собираетесь решать ее с использованием регулярных выражений, то у вас есть две проблемы. Мне кажется, сверхурочная работа — что-то из той же серии. Я сформулировал бы это так: если у команды есть проблема, и для ее решения планируется работать сверхурочно, то у команды две проблемы. В чем же заключается вторая проблема?

У регулярной сверхурочной работы множество вредных последствий — как для команды, так и для компании. Давайте их рассмотрим.

Истощение


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

Читать дальше →

Меньше слов — больше смысла

Reading time3 min
Views2.6K
На тренингах по тестированию методом свободного поиска, которые я провожу время от времени, каждый раз возникает обсуждение вопроса о том, нужно ли делать описания тестов, а если нужно, то насколько подробные. Я обычно даю достаточно радикальный совет — если есть возможность, не пишите вовсе, либо, если очень надо, то пишите, но как можно меньше. Записывайте не сценарии, а идеи, в результате получается сплошная экономия — сначала тратится меньше времени на написание, а потом тратится меньше времени на переписывание.

Но экономия времени при написании — это ещё не всё. Едва ли не более важным фактором является то, что в многословных описаниях теряется смысл, который туда пытался заложить тест-дизайнер. Поэтому опытному тестировщику работать с короткими описаниями проще, чем с подробными длинными сценариями. И сегодня я хочу представить вашему вниманию перевод небольшой заметки Роба Лэмберта (Rob Lambert), в которой он описывает эксперимент объясняющий этот феномен.


Less Is More, или Меньше слов — больше смысла.

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

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

Если вы пользуетесь твиттером, вы представляете, как это происходит. Иногда приходится немало потрудиться, чтобы суметь выразить свою мысль, используя всего 140 символов, но зато результат получается впечатляющим. Это очень полезная практика, потому что краткость, как известно — сестра таланта.

Большинство моих текстов становятся существенно короче после того, как проходят этап «ужимания», хотя, если постараться, там можно найти ещё немало «ваты».

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

PulseAudio, часть 1: управление из командной строки

Reading time11 min
Views158K

Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa :)

В статье я с самого начала расскажу что это такое и как оно работает, а так же:
  • Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
  • Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
  • Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
  • Как управлять громкостью и усиливать тихий сигнал (!);
  • Как сделать Skype громче музыки?

И представлю своё решение, призванное упростить управление PulseAudio ;)
Любопытно!

Тестировщики, хотите знать, как положительным образом влиять на менеджеров?

Reading time2 min
Views1.5K
Предыдущая заметка содержала перечень советов тестировщикам, как положительным образом влиять на программистов.

А вот рекомендации относительно того, как тестировщики могут оказывать позитивное влияние на менеджеров.
  • Оказывайте проекту сервис, а не будьте помехой. Вы поставляете информацию, а не насаждаете процессы.
  • Предоставьте менеджерам информацию, которая им требуется для принятия решений, а затем позвольте им принять эти решения.
  • Полностью осознавайте, что они принимают не технические, а бизнес-решения.
  • Помните, что продукт не обязательно должен соответствовать вашему стандарту качества.
  • Ни менеджер разработки, ни кто-либо другой не обременен должностной обязанностью делать вас счастливым. Возможно, часть их работы — помочь вам работать более эффективно. Помогите им разобраться, как это сделать. В частности, обратите внимание на тот факт, что…
Читать дальше →

Тестировщики, хотите знать, как положительным образом влиять на программистов?

Reading time2 min
Views3.1K
Недавно в комментариях в очередной раз попалась мне на глаза легенда про Чёрную Команду, рассказанная Томом ДеМарко в свой книге «Человеческий фактор». Книга замечательная, а легенда дурацкая. Так и хочется пожелать, чтобы ДеМарко всю жизнь пришлось работать с такими тестировщиками!

Давно уже прошли времена, когда тестирование было каторгой, куда ссылались неугодные или нерадивые разработчики. Давно наступили времена мирного взаимовыгодного сосуществования. Но некоторые программисты, прочитав книжку умного дядьки начинают бояться злобных тестировщиков. А начитавшиеся менеджеры и того хуже — начинают (о, ужас!) культивировать и внедрять.

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

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

Ну очень простая идея, которая повышает эффективность тестирования в разы

Reading time3 min
Views14K
Как обычно строят процесс тестирования непросветлённые тест-менеджеры?

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

Релиз.

Не работает основной функционал.

Почему такое возможно?

1. Заведение всех подряд ошибок мешает разработке. Разработчики тратят своё время на исправление минорных ошибок и вносят новые, зачастую более серьёзные.

2. Потраченное на мелочи время не дало возможности проверить более серьёзные пользовательские сценарии и найти более критичные дефекты.

3. Обратная связь по статусу сборки предоставлялась разработчикам с запозданием: вместо критичных дефектов непрерывно сыпались миноры.

4. Проектный паттерн «дохлая рыба» сыграл своё дело: все участники команды прекрасно понимали, что протестировать всё нельзя, и это не могло не сказаться на качестве работы. А реалистичных целей им никто не поставил…

Что просветлённые тест-менеджеры делают по-другому?

Что они поменяют в первую очередь?
Читать дальше →

«Что желаете на гарнир к тестам?»

Reading time4 min
Views1.7K
Так получилось, что завершение перевода этой статьи Майкла Болтона удачно совпало с появлением на хабре заметки Натальи Руколь «Почему тестирование — это тупо и скучно?», которая вызвала достаточно бурное обсуждение. Эта статья призвана в какой-то степени объяснить, почему одним тестирование кажется скучным, а для других людей это самое интересное занятие в мире.

Когда мне было лет двадцать с небольшим, я решил быстро научиться вкусно готовить. Нашел книгу «Гурман за 60 минут» Пьера Фрейни, и пошел читать.

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

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

Эти истории научили меня намного большему, чем сами рецепты. Рецепты уделяли основное внимание технике, а истории учили навыкам и заставляли меня думать.
Читать дальше →

Грабли при верстке HTML писем

Reading time3 min
Views104K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →

GRUB: Получаем полный доступ к системе

Reading time3 min
Views99K
GRUB, безусловно, является самым продвинутым загрузчиком на сегодняшний день, и за это любим админами и разработчиками по всему миру. Его функционал настолько широк, что он практически монополизировал рынок загрузчиков в мире *NIX, а некоторые вообще говорили, что GRUB2 — это скорее маленькая операционная система, чем просто загрузчик. Эдакий швейцарский нож в мире загрузчиков.

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

Помещаем строку меню Firefox 4 в заголовок окна: расширение Personal Titlebar

Reading time2 min
Views3.7K
Есть на Тайване разработчик, действующий под псевдонимом yuoo2k это тот самый, который в своё время сочинил расширение «Hide Menubar», показывающее строку меню Firefox 4 после нажатия клавиши ALT. Таким манером стало можно держать строку меню скрытою бóльшую часть времени (до тех пор, пока она не станет действительно нужною), и тем экономить вертикальное экранное пространство.

Сегодня я пришёл познакомить вас с новым произведением этого разработчика — с расширением «Personal Titlebar», которое также направлено на экономию экранного пространства за счёт строки меню, но использует иной подход: содержимое строки меню размещается в заголовке окна Firefox 4, подменяя собою его обычный текст (название страницы да браузера).

Вот как это выглядит на примере Minefield (тестовой еженощной сборки Файерфокса):

[изменённый заголовок окна Firefox]
Сразу скажу: пример этот получился несколько сумбурным, потому что он демонстрационный, а не взят из реальной жизни.

Он показывает, что в строку меню (при помощи «View → Toolbars → Customize…») можно накидать самые разные объекты: значки с панели инструментов, папки закладок и отдельные закладки, вращающийся индикатор закачки, пункты меню — и все они будут невозбранно отображаться в строке заголовка окна Файерфокса.

Естественно, в реальной жизни никому и в голову не придёт устроить у себя в строке меню такую свалку. Например, у меня в ней лежит только меню Файерфокса, а за ним (после вертикального разделителя) ряд папок с закладками.
Расширение «Personal Titlebar» основано на новейшей способности браузера Firefox 4 помещать XUL-элементы в заголовок окна. Судя по Багзилле, эту способность пока внедрили не во всех системах. (Например, в Linux её нет ещё, а в OS X и в Windows — есть.)
В частности, хотя в вышеприведённом примере используется современное оформление Windows, элементы XUL способны отображаться и поверх классической темы оформления Windows XP (голубой полоски, оканчивающейся тремя серыми кнопками управления окном). Выглядит умопотрясающе.

И ещё про «домашний» Asterisk

Reading time4 min
Views19K
Прочитав этот пост, решил поделиться и своим опытом.

В данный момент решены 2 простые задачи:
  • все звонки, поступающие на PSTN номер (обычный городской), переадресовываются на мобильный телефон, который у меня всегда в кармане и, одновременно, на SIP телефон, который стоит дома
  • с SIP телефона я могу звонить как по России, так и в некоторые нужные мне страны по минимальным тарифам.

Как это сделано?
Читать дальше →

Information

Rating
3,106-th
Location
Кишинев, Молдова, Молдова
Date of birth
Registered
Activity

Specialization

Quality Assurance Analyst, Тренер
Intern
Linux