понедельник, 24 ноября 2014 г.

Урок 5. Слайд 242-243

Поехали:

Слайд 243
В предыдущем примере мы считали, что операция G делает с  X что-то простое наподобие печати. Но что если G более сложен, например деление чего-либо на X? В этом случае особые значения переменной X могут быть важны.
Пока вы тестируете переменную, важно знать, каким образом программа будет использовать эту переменную и тестировать различные ее значения, чтоб покрыть различные варианты использования. Тестирование влияния рассматривает то, что программа делает  переменной когда присваивает ее значение - навык подобного тестирования как раз отличает опытных тестировщиков от новичков.

Содержимое слайда:
Поток данных
Когда вы тестируете поток данных, недостаточно установить значение X и использовать его. Нужно задать следующие запросы:
Что программа делает с X?
Какие значения X могут вызвать проблемы при использовании?
Используется ли X в комбинации с другими переменными?
Создает ли программа новые переменные на основе X?


Слайд 244
Давайте посмотрим на следующий пример.

Отзывов пост

На просторах интернета, отзывы.

«Излишне интеллигентен на маршруте»
«Физически подготовлена слабо, развита хорошо, рекомендуется к завозу в альплагеря»
«Активен на ночевках»
«Активна на биваке»
«На бивуаке ленив, хотя может работать первым»
«Груб в отношениях с инструктором и примусами»
«Носил на ночевки баян и ни в чем себе не отказывал»
«Туп, ленив, прожорлив. Любит жумарить первым.»
«Ест много и ходит медленно»
«Грубил и дерзил, называл их пупырями, грозил уйти в спелеологи»
«Писал с гребня на соседнюю дружественную республику»
«Физически и технически подготовлен отлично. Несколько скован на спусках. Активен, инициативен, рассудителен»
«Может...»
«Бережлив»
«Физически и тех. подготовлен отлично Ищет трудности и находит»
«Алчен, мелочен, склочен, завистлив»
«Хороша на любом рельефе...»
«Излишне авторитетна»
«Печет блины»
«Страховаться любит, но не умеет»
«Рекомендуются восхождения в районе Валдайской возвышенности»
«Уверенно чувствует себя на горизонтальном рельефе типа тропа»
«ПРИДУРОК»
«Физически и технически подготовлен отлично. Любит ходить первым. Ленив и нахален, требует подзатыльников»
«Все плохо. Рекомендуется для занятий в других лагерях»
«Сонлив, сварлив, прожорлив»
«Обратить внимание на работу с верёвкой на маршруте и учитывать планы восхождений с планами инструктора»
«...уверенно передвигается по любым формам горного рельефа со скоростью, опережающей ход мысли...»
«Вечно голоден, готов есть всегда и везде. Умеет спускаться на снегобурах. Приветлив и улыбчив, и только за счёт этого живёт в палатке с дефчёнками»
«В состоянии крайнего физического утомления умирает молча, не нарушая движения»
«Обладает лучезарной улыбкой и отсутствием лишнего веса»
«Рекомендуется к восхождениям пока получает от этого удовольствия»
«Внимателен к женскому полу...любит ходить первым»
«Способна выполнять любую, посильную женщине работу»
«Рекомендуются занятия конными видами спорта»
«…удобна в транспортировке»
«На маршруте и на бивуаке готова работать в любой роли»
«Прожорлив и голосист»
«Имеет свойство есть общественный продукт индивидуально»
«Физическая подготовка хорошая. Морально–волевая отличная! Лыжная подготовка отличная. Владеет горнолыжной техникой. Хорошо справляется с обязанностями фотографа»
«Эрудирован, любознателен, хорошо подготовлен теоретически. Доброжелателен, но несколько эгоистичен»
«Поет на маршруте»
«Типичная гоняшка»
«Нагл и хитёр. Способен врать глядя прямо в глаза. Поедает недоброкачественные продукты в огромных количествах. Категорически не рекомендую занятия альпинизмом»
«Сколь прекрасна, столь и далека от альпинизма»
«Проявил себя способным,но способностей своих не проявил!»
«Страховаться любит, но не умеет. Физически слаба, в остальном положительна, на бивуаке всегда готова, пользовалась уважением многих инструкторов»
«Неуклюж, но музыкален. На страховке усидчив. На физическое воздействие реагирует правильно».
«Внизу ничего не боится, но на маршруте спуталась».
«Теоретически страшен, технически безнадёжен, кулинарно аморален и вообще чудовищен. Во сне храпит».
«В антабках толк понимает, к трещинам ледовым неравнодушен».
«Коммуникабельна, но никому не кобельна».
«Хороша вдали от альпинизма».

среда, 19 ноября 2014 г.

Итогов одного рабочего года пост

Вчера был ровно год, как я пришел работать в яндекс.
Статистика проще всего, она, быть может, натолкнет на другие мысли.

Я написал 466 писем.
Провел 2 дня в отпуске.
Завел 634 бага и проверил в два-три раза больше задач.
Перевел 151 страницу новой книги Канера.
Всего лишь раз попал в ДТП и то без повреждений.
Сменил банк и велосипед. Интернет провайдера не сменил, а стоило.
Проехал 3 131 километр на велосипеде, это не считая дороги на работу и обратно.
С командой запустил 2 проекта - Город и Мастер.
Прочел 43 книги.
Четыре раза побывал в Питере. Каждый раз - в командировке.

Чуть больше года назад я написал пост-прощание, а сейчас  я пишу пост-приветствие. новай компании, новым людям.

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

Отсутствие контроля и полное доверие довело до того, что я сам теперь веду таймшиты и списываю трудозатраты. Для себя. Из чистой паранойи. Непривычно знать, что между решением о релизе и тем, как его смогут увидеть миллионы пользователей проходят минуты. Нет лага между выпуском и установкой клиентам, как раньше, как привык.
Обратно же, долгое время был единственным тестировщиком пары проектов. Интересные ощущения.
А еще наблюдаю странный диссонанс. Мне нравятся результаты того, что я делал в этом году. Но тем, как я это делал - недоволен. Качество совсем не дотягивает до того, как я себе представляю реальность. Еще немного не нравится процесс.

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

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

Как я и загадывал  - конференция ДАМП  и боевые роботы тестирования со мной случились. О том, удались ли они, судить не мне, тем не менее, качеством своего участия в них я не удовлетворен, нужно было больше готовиться.

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

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

В мае загадал желание - посетить Гранд Макет Россия, в сентябре оно сбылось. Надо быть спокойным и упрямым, да...

Этой осенью я перестал путать местоимения, связанные с бывшими коллегами. Перестал говорить "мы", "у нас" и начал говорить "они", "вы", "у вас". Это случилось после того, как зашел в гости и не узнал больше половины людей.
Теперь у меня просто есть несколько очень хороших знакомых оттуда.

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

А еще в сентябре произошло событие, ставшее с неожиданной стороны важным для меня - мы провели вторую городскую сессию тестирования.
Все как обычно - участникам вроде как понравилось, я остался крайне недоволен.
Есть над чем поработать, если в феврале будем проводить следующую - она будет лучше.
Но, как обычно, сессия не главное, главное - люди, с которыми я там познакомился.

Что сейчас?
Сейчас есть много интересных проектов у каждого из которых несколько занятных возможностей.
Сейчас есть большая и чистая надежда, что конец 2014 года не расстроит меня.
Есть десяток непрочитанных книг, немного, но достаточно времени и самое приятное - денег чуть больше, чем времени.

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

Урок 5. Слайд 232-241

Поехали:

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

Слайд 233
Я рисую пути используя блок-схемы. Они вышли из моды, но я знаю много тестировщиков, которые находят их удобными и я сам их использую.

Слайд 234
Графы сейчас более популярны. Чтоб перевести наши схемы в графы, просто замените все ромбы и прямоугольники на круги.

Слайд 235-241
(Блок схема, на примере которой рассматривается покрытие ветвей и комбинаций. Ничего интересного.)

вторник, 18 ноября 2014 г.

Про двух тестировщиков

Про этот пост - читайте тэги.

Теперь - к делу.
Макс Дорофеев любит  модели. Моделей он, наверное, тоже любит. но вот именно модели он обожает. Они не только описывают реальность, но их еще можно обсчитать чиселками и сделать интересные выводы.

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

Ну вот представьте:
У нас есть продукт, состоящий из 100%. В нем 20% важных фич и 80% неважных.

Первый тестировщик перед релизом плохо (50% вероятность нахождения бага) поверит 10% из 20% (половину) важных фич и 60% из 80% неважных. Остальное пропустит.
Второй хорошо (80%) проверит все 20% важных и всего 10% неважных. Остальное не успеет.

Допустим, в каждых 5% продукта есть баг. То есть 4 критикала и 16 миноров.

Тогда получается, что:




Первый найдет 1 важный баг и 6 неважных.
А второй найдет 3,2 важных бага и 1,6 неважных.

А более честная метрика - сколько пропустят?
Первый - 3 важных и 10 неважных.
Второй - 1 важный и 14,4 неважных.

Очевидно, надо брать Настю второго, а меня первого уволить.
Пытаясь оправдаться, я подумал, что в жизни вероятности нахождения багов немного другие. И вообще тянет поиграть с цифрами.
Потому создал табличку:
https://yadi.sk/i/NsBH5ruhcnSSq

Игры с цифрами не помогают, как ни крути. правильный ответ - медленно тестировать важные фичи.

понедельник, 17 ноября 2014 г.

Урок 5. Слайд 230-231

Кстати, по случаю в питере посетил дом книги и буквоед. Ассортиментом и конскими ценами первого остался недоволен.
Во втором приобрел немного свежей серии Ойкумены Громова и Ладыженского и, по старой памяти Мастер ветров и закатов, Мартынчик.

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

Поехали:

Слайд 230
Существуют техники тестирования, оптимизирующие выборки, так, что небольшим набором тестов можно найти большинство связанных с комбинациями ошибок. Из 1600 тестов на принтеры и видеокарты, эвристика выборок называемая all-pairs оставит 80 тестов.
Мы обсудим это более детально на курсе по тест-дизайну, но сейчас нужно понять, что 80 тестов, полученных благодаря технике, найдут большинство багов, но оставшиеся 1520 тестов отличаются от них. Эти тесты могут пропустить баг, который воспроизводится на системах с небольшим количеством памяти с этим специфическим принтером и этой специфической видеокартой.

Слайд 231
Далее мы рассмотрим ошибки, которые связаны с последовательностями действий.

Урок 5. Слайд 227-229

Вернулся из питера.
Городом доволен.
А вам - задачка на сообразительность: в какую сторону едет автобус?

 Поехали:

Слайд 227
Мы называем тестирование комбинаций конфигурационным, когда комбинации образованы окружением программы, например комбинации устройств, версий ПО и связями между внутренними сервисами.
Итак, если у вас для тестирования 40 принтеров  и 20 видеокарт, то всего будет 800 конфигураций. Что если еще вы проверяете, сколько доступной памяти имеется - предположим, мы рассматриваем уровень, когда паряти едва хватает и второй уровень - когда у нас есть много свободной памяти. Тогда у нас будет уже 1600 конфигураций.

Слайд 228
Если вы рассматриваете больше переменных и тестируете их вместе, суммарное количество тестов очень сильно быстро возрастет.

Слайд 229
Конфигурационное тестирование лишь один из примеров тестирования комбинаций. Другие примеры включают данные.
Однажды, когда я работал с текстовым процессором, у нас была утечка памяти. Если вы выделите текст, сделаете его жирным, затем курсивом, то все работает нормально. Но если вы сперва примените курсив, а затем сделаете текст жирным, экран будет таким же, но в памяти произойдет сбой. Комбинация ошибок может быть неожиданной и казаться беспричинной.
Вернемся к квадратному корню Hoffman. Он тестировал функцию, которая принимала 2 в 32 степени значений. У нас 2 в 32 степени комбинаций. Теперь представьте калькулятор. Сколько различных формул нужно протестировать?
Комбинации данных могут привести к делению на ноль, переполнению или ошибкам округления. 

четверг, 13 ноября 2014 г.

Перемещений по офису пост

Я только что измерил линейкой по карте длину БЦ Бенуа, получилось 220 метров. А значит, общая протяженность коридоров питерского яндекса на двух с лишним этажах - больше половины километра.
Вопрос перемещений сперва решался сотрудниками самостоятельно, а затем это стало тенденцией и правилом.
Появились дикие самокаты и даже самокатопарковки.

Намедни прошелся по этажам и устроил фотоохоту на эти самые самокаты - причем только те, что не спрятаны в кабинетах. Получилось немало - 12 единиц транспорта. А сколько их заныкано по углам - не знает никто.
Понеслась. Раз, в коридоре у парковки:
Два, в переговорке:
Три:
Четыре:
Пять, возможно тот же, что на предыдущем кадре, кто-то приехал на обед:
 Шесть, иногда попадаются занятные экземпляры:
 Семь:
 Восемь:
 Девять:
 Десять:
 Одиннадцать, этот, судя по всему, ранен:
Двенадцать, не самокат, но тоже имеет право на существование:

вторник, 11 ноября 2014 г.

Баллада двойников

Из Олди, сборник "Ваш выход":

- Нежнее плети я,
Дешевле грязи я -
В канун столетия
Доверься празднику.

- Милее бархата,
Сильней железа я -
Душей распахнутой
Доверься лезвию.

...Левая рука - правою
Ложь у двойника - правдою,
Исключенье - правилом,
Лакомство - отравою.
Огорчаю?
- Нет!
Радую...

Червонней злата я,
Из грязи вышедши -
В сетях проклятия
Доверься высшему.

- Святой, я по морю
Шел аки посуху -
Скитаясь по миру,
Доверься посоху.

...Правая рука - левою,
Шлюха станет королевою,
Трясогузка - лебедью,
Бедность - нивой хлебною.
Отступаю?
- Нет!
Следую...

- Возьму по совести,
Воздам по вере я,
На сворке псов вести -
Удел доверия.

- Открыта дверь, за ней -
Угрюмый сад камней.
Мой раб, доверься мне!
Не доверяйся мне....

...В зеркале глаза - разные
Позже ли сказать?
Сразу ли?!
Словом или фразою,
Мелом или краскою?
Сострадаю?!
- Нет! -
Праздную...

Урок 5. Слайд 224-226

Поехали:

Слайд 224
Даже если вы протестируете полностью каждую отдельную переменную, то программа все равно не работает только с одной переменной в одно время. Она работает с несколькими.

Слайд 225
Вот пример, который застал меня врасплох. Мои сотрудники и я тестировали программу на предмет совместимости с принтерами. В другой серии  тестов мы проверяли совместимость с различными видеокартами. Также часто мы проверяли превью печати. Что мы не проверили - так это комбинацию принтера, печатающего с высоким разрешением с видеокартой, поддерживающей высокое разрешение для превью печати. От этой комбинации у клиентов произошло переполнение памяти и падение системы.

Слайд 226
Когда мы проверяем переменные вместе, то называем это тестированием сочетаний (комбинаторным). Если вы тестируете три переменные, V1. V2. V3 и у них соответственно N1, N2, N3 значений, то суммарное количество сочетаний будет равно N1*N2*N3

понедельник, 10 ноября 2014 г.

Урок 5. Слайд 222-223

Именно сегодня хотелось бы процитировать сумасшедшего Френки, выпуск "Зритель":

Кстати, а кто-нибудь из вас знает, на какой срок избирается Господь Бог, есть ли на небесах Демократия? И Конституционно или неконституционно переизбирать Бога на повторный срок? Да и возможно ли это вообще, хотя это я так, к слову. Ловкий жест, отвлекающий внимание, чтобы исподтишка, заехать кое-кому прямо в нос, чтобы эта дурацкая лампа, все же выскочила из чьих-то рук, и он перестал ее тереть, терзая нашего бедного Джина, своими ужасными желаниями, на которые он просто не может ответить иначе, как, «Слушаю и Повинуюсь, Я раб лампы и моя работа, реализовывать всю эту мерзость и возводить в статус реальности. Я раб лампы! Если вы скажете «пойди и убей», Я пойду и убью, Я раб лампы.
Слишком много всего в последнее время сбывается, надо как-то аккуратней, что-ли.
Фото кота, чтоб расслабиться:

Поехали:

Слайд 222
Недозаполнение также вызывает сбои. Если вы просто нажмете ввод в диалоге ввода данных, вы передадите программе пустую строку. Некоторые программы сбоят на пустых строках.
Еще есть пасхальные яйца. Пасхалки - скрытые сюрпризы в программе. Если вы введете особую последовательность символов в особом месте программы, то программа выдаст специальный ответ. Некоторые пасхалки являются шутками, другие - критикой компании от уволенных программистов. нецензурными выражениями или танцующими голыми девушками. Ваша компания может не хотеть выпускать программу с такими сюрпризами.
Тестирование программы на пасхалки - другая проблема выборок. Любая последовательность символов или действий может привести к проявлению пасхалки и невозможно проверить их все.

Слайд 223
Наконец, рассмотрим полностью невалидный ввод. Некоторые тестировщики и многие программисты не беспокоятся о нем, так как не ждут от людей подобных действий.
В 1997 на USS Yorktown (крейсер соединенных штатов) матрос ввел ноль в поле ввода, в котором не ожидалось появление нуля. Результатом стало зависание систем корабля в результате чего прекратила работу двигательная система корабля.
Люди делают то, чего вы от них не ждете. Может быть, они устали или не понимают системы или ждут, чтоб система сделала то, для чего она не была спроектирована или просто уронили что-нибудь на клавиатуру.Или они умышленно пытаются сделать что-нибудь, что вы бы не одобрили. Ваша система должна справляться со всем этим, так как все это может случиться.
Но вы не сможете все это протестировать.
И в этом суть.
Даже если вы тестируете всего одну переменную, вы не сможете проверить все, что люди туда попытаются ввести. Вы можете много тестировать. И это будет полезно для того, чтоб узнать, как много времени займет подобное тщательное тестирование, так как иногда вам действительно нужно провести большой набор тестов, как Hoffman. Но в большинстве случаев, лучшее, что у вас есть - это выборка.

пятница, 7 ноября 2014 г.

Урок 5. Слайд 220-221

Поехали:

Слайд 220
Тесты Hoffman сфокусированы на тестировании функции, читающие данные из известной области памяти. Они не рассматривают, как эти данные туда попадают.
Когда вы тестируете пользовательский ввод, у вас есть намного больше вариантов некорректного поведения.
Например, когда вы вводите число, у вас есть возможность редактировать его во время ввода вы можете ввести 123, затем стереть это и ввести 456. Некоторые программы могут сломаться даже на этом и прочесть 123456 вместо 456.
Другая забавная проблема может случиться, когда вы печатаете слишком быстро или слишком медленно или когда другая активность компьютера занимает процессорное время. Программа может неправильно истолковать пользовательский быстрый ввод данных.
Или может закончиться время. Попробуйте набрать на телефоне 6 цифр и перестать набирать. Через минуту кончится время. Вы услышите звук ошибки. Что если вы введете 7ю цифру в тот момент, когда система сообщает о том, что время закончилось? Это известный источник багов в телефонных системах. Такие тайм-ауты есть в большинстве многопользовательских систем и системах реального времени.
Тайм-ауты вызывают больше проблем. когда вы уже ввели несколько значений в диалог или несколько. Что программе делать с вашим неполным набором данных?

Слайд 221
У нас появятся еще несколько рисков, если переменная, которую мы проверяем связана с пользовательским вводом. Например, допустим мы умножаем два числа. Ввод может быть валидным, но результат может вызвать переполнение. Мы должны спроектировать тесты, которые вызовут переполнение внутренней переменной и, если это значение будет выводиться или печататься, то попытаться переполнить место для отображения или печати.

четверг, 6 ноября 2014 г.

Урок 5. Слайд 219

Поехали:

Слайд 219
У MASPAR был встроенный механизм для работы с числами с плавающей точкой. Один из них читал 32-битное слово как integer и извлекал из него корень.
Когда я спрашиваю студентов, как много времени займет прогнать 4 миллиарда тестов, большинство считает, что это займет слишком много времени. Так отвечают и студенты с несколькими годами опыта.
Большинство людей, зная, как много можно провести тестов, проверят самое большое и самое маленькое числа - 0 и 4294967295. Некоторые проверят степени двойки: 1,2,4,8,16 итак далее. В терминах бинарной логики, у этих чисел все биты содержат нули, кроме одного с 1.
Некоторые люде проверял случайные числа, или такие, в которых они сомневаются, но мало кто проверит больше ста чисел.
А что, если предположить, что нужно полностью выполнить эту задачу? Hoffman оценил время, вышло около 6 минут. И он проверил все числа.
2 теста упало. 2 из четырех миллиардов.
Ни один из упавших тестов не находился на какой-либо границе. Ни один из тестов, которые я описал не нашел бы эти 2 бага.
Сможете ли вы найти эти баги? Либо вы проверите все варианты, либо вам невероятно повезет.
Рассмотрим функцию извлечения корня из 64битного слова. Это 2 в 64 степени тестов, вместо 2 в 32. Их проверка займет около 24 миллиардов минут, это 49 тысяч лет компьютерного времени.
И если вы найдете достаточно компьютеров для проведения такого теста, то вам все равно останется проверить 64-битное умножение, 64-битное деление и все остальные функции.
Вы не сможете запустить так много тестов. Поэтому, даже если существуют еще ошибки и этот компьютер используется для управления ракетами, то лучшее, что вы сможете сделать - провести достаточно много тестов.
Есть другие стратегии для увеличения надежности ПО, такие как аккуратное ревью кода или TDD, но с точки зрения тестирования черного ящика, всегда есть больше тестов, чем вы смогли бы провести.

среда, 5 ноября 2014 г.

Поговорок пост

Найденогде-то в недрах контактика. Велопоговорки:

1. Встречай по велосипеду, проважай по результатам.
2. Спица не воробей, вылетит-не поймаешь.
3. Сколько маунтинбайкера на шоссер не сади, все равно в лес смотрит.
4. И сколько маунтинбайкера не корми, все равно жрать хочет.
5. Лучше руль в руках, чем колеса в небе.
6. Весна покажет кто как ОФП занимался.
7. На чужую гонку со своим номерком не ездят.
8. Велогона-ноги кормят.
9. Все тайное со временем становится доппингом.
10. Всех гонок не выйграешь.
11. Проехал лучше чем смог, но хуже чем хотел.
12. Горбатого дропчик исправит.
13. Шоссер бмх-еру не товарищ.
14. Двое пашут, а семеро на колесе сидят.
15. Делу время, тренировке час.
16. Срезка срезана, комар носа не поддочит.
17. Держи ноги на педалях, голову-в шлеме, а живот -в голоде.
18. Велогонам закон не писан.
19. Велосипедиста без байка не бывает.
20. Куда руль-туда и велосипед.
21. Лучше поздно, чем без велосипеда.
22. Мал золотник)), да дорог.
23. Медведь на ногу наступил.
24. На бога надейся, а сам тренируйся.
25. Вел-второе счастье.
26. Не было забот, купила баба велосипед.
27. Не все то велосипед, что едет.
28. Не пойман-не срезал.
29. Не стыдно быть слабаком, стыдно не тренироваться.
30. Нет велосипеда-нет проблем.
31. Ни байк, ни шоссер.
32. Новый велосипед, по новому едет.
33. Один на старте-не гонщик.
34. Одна педаль хорошо, а две лучше.
35. От гонщика до инвалида-один дроп.
36. От прокола да от поломки не зарекайся.
37. Крутит как курица лапой.
38. Педали есть, осталось купить велосипед.
39. Дх-ника видать по полету.
40. Родился в джерси.
41. С работы- на гонку.
42. МТБшник всегда грязи найдет.
43. Семеро одного не ждут)).
44. Семь тренировок на неделе.
45. Не говори гоп, пока не перепрыгнешь)).
46. Сила есть-рулить не надо.
47. Слезами проколу не поможешь.
48. Велосипедисты часов не наблюдают.
48. Тише едешь-хуй доедешь).
48. У страха глаза велики😃
48. Велосипед в чехле не утаишь.
49. Вел хоть и херов, да свой.
50. Если хочешь быть счастливым, будь велосипедистом.