Тестирование | QA, QC
3.5K subscribers
246 photos
82 videos
332 links
Всё о тестировании ПО простым языком.
Download Telegram
#Будь_как_все

TMTOWTDI - еще один известный IT принцип. Аббревиатура читается как «Тим Тоуди», хотя некоторые пытаются произносить это прямо как есть. Ну, удачи им. В расшифровке принцип звучит как «There’s More Than One Way To Do It», в переводе на великий могучий - «Есть больше одного способа сделать это». Если ты понимаешь, о чем я. 😏

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

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

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

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

Я предпочитаю компилируемые языки, потому что они позволяют создавать более быстрые и компактные программы
#Где_то_за_кадром

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

В общем-то все просто - передаем по воздуху ток. Мечта Теслы и Фарадея сбылась. С физической точки зрения оно выглядит так: в смартфоне (или что ты там заряжаешь) и зарядке стоят две маленькие индукционные катушки. Когда зарядка включается в сеть, она становится передатчиком - вокруг образуется магнитное поле. При попадании в него катушка внутри смартфона становится приемником и преобразовывает энергию поля в электричество. Вот и вся магия XXI века.
Do_you_understand

Ревертнуть равносильно откату изменений. Помнишь, я недавно рассказывала про сленг, который подарила нам система контроля версий gIt?

Название произошло от команды "revert", которая в переводе обозначает "повернуть назад". В двух словах работает следующим образом: ты выбираешь какие изменения необходимо сбросить, и git создает новые изменения, которые нивелируют старые.

Возможно, последнее предложение было слегка запутанным, поэтому на примере: пусть было 4 + 5 = 9. В качестве операции для реверта ты выбираешь операцию сложения. Тогда git сделает следующую операцию: 9 - 5 = 4.

P.S. Если что, "ally" с картинки - это "союзник".
#Do_you_understand

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

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

P.S. Единственное, стоит помнить, что экстраполировать всегда надо аккуратно. Иначе получится как на картинке.
#Респонс_на_реквест

У меня тут недавно был пост про необходимость диплома для программиста, где я упомянула, что военные и IT - это крайне интересный симбиоз. Ну и естественно, меня спросили "почему?".

Итак, чтобы любой технологии попасть на вооружение в вооруженные силы ей необходимо пройти сертификацию, попасть под требования всех ГОСТов и принятых нормативных актов. Собственно, это камень преткновения.

Во-первых, проведение такой сертификации - процесс долгий (от года) и дорогой. А во-вторых, тестировать все новые технологии подряд явно никто не будет - денег нет, так что держитесь. Поэтому, если технология вдруг зародилась не в военном НИИ, а на "гражданке", то до ее появления в вооруженных силах могут пройти десятилетия.
#Вавилон_нашей_эры

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

Код, созданный на таких языках, отдается на исполнение интерпретатору. Это специальная программа, которая переводит файлы в машинный код прямо во время исполнения.

Т.е. если в случае с компилированным языком сначала идет перевод, а потом отдельной командной выполнение написанной программы, то для интерпретируемого языка перевод идет прямо в момент выполнения. И это довольно сильно сказывается на скорости.
#Фантастические_твари_и_кем_они_работают

У нас когда-то был опрос на тему того, о какой айтишной профессии вы хотите узнать. О системном администраторе я уже рассказала и вроде как обещала написать о втором победителе - архитекторе. Жми на 👍, если все еще ждешь статью об этой профессии и я опубликую ее вечером в воскресенье.
#Где_то_за_кадром

Кто из нас не копировал файлы в Windows? В начале процесса копирования тебе пишут, что до конца осталось 3 минуты, а через 3 минуты сообщают, что надо подождать еще 10. Почему так происходит?

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

Так и при копировании. В самом начале алгоритм просто играет в угадайку. Система знает сколько файлов ей надо скопировать, но она не знает насколько загружена память, как быстро ответит диск, какое качество у Интернет-соединения.
#Будь_как_все

Парадокс лжеца - любопытное противоречие, формулировка которого звучит как "Я лгу". Да и это все. Просто, кратко, лаконично, в лучших традициях Чехова.

Но давай подумаем над истинностью этой фразы. Если человек врет, когда произносит "Я лгу", то он говорит правду. А если человек говорит правду, когда произносит "Я лгу", то он врет.

Впервые этот парадокс появился у древних греков. Эпименид утверждал, что все критяне лжецы, но сам был родом с острова Крит. Сейчас это противоречие является частью теоретической информатики.
#Do_you_understand

Рекурсия - это первое понятие, с которым знакомят первокурсников любого технического вуза. В программировании оно обозначает вызов функцией самой себя.

Давай приведу пример из жизни, чтобы было понятно - рекурсия появится, если включить web-камеру компьютера и навести ее на экран этого же компьютера. Камера записывает изображение экрана и передает его на экран, где снова записывает и снова передает, и т.д.
#Респонс_на_реквест

Подписчик попросил привести еще один пример рекурсии, но уже не бесконечной.

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

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

Ну а если у ты тоже хочешь задать какой-то вопрос и получить ответ на канале - пиши @programmistkas_bot
This media is not supported in your browser
VIEW IN TELEGRAM
#Где_то_за_кадром

Как хакеры взламывают программы?

Один из способов - это использование reverse engineering, который еще называют обратной разработкой.

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

По такому сопоставлению достаточно легко предположить, как устроено все внутри программы. А отсюда можно сделать вывод в каких местах могут быть уязвимости.
This media is not supported in your browser
VIEW IN TELEGRAM
#Где_то_за_кадром

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

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

Результат перевода внимательно анализируется и модифицируется.
#Вавилон_нашей_эры

Итак, постом выше я упомянула такую вещь как ассемблер.

Количество команд у этого языка весьма ограниченное - около 20 и каждая из них напрямую соответствует инструкции машинного кода. Только представлена в более удобном для человека виде. Например, вместо условного C01B 7E C0 79 будет JMP.

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

О чем рубрика?
This media is not supported in your browser
VIEW IN TELEGRAM
#Do_you_understand

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

Теперь тоже самое по-человечески: вместо 1 + 2 будет 1 2 +. Такое извращение оправдывается тем, что оно не требует скобок. Например, (1 + 2) * 3 преобразовывается в 1 2 + 3 *. А раз нет скобок - компьютеру проще вычислять, потому что сразу понятен порядок действий.

О чем рубрика
#Где_то_за_кадром

Как проходят собеседования в IT?

Типичное собеседование состоит из 3-4 этапов. Почему так много?

Первый этап - собеседование с HR. Посмотрят резюме, спросят почему именно наша компания и все в этом духе, по классике, ответят на твои вопросы. Суть в том, что убедится, что ты - адекватный человек, минимально подходящий на должность.

Второй этап - техническое собеседование. Здесь все просто: теоретические и практические вопросы по всей области предмета.

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

Четвертый этап - пре-оффер или обсуждение результатов первых трех этапов и зарплатной вилки.
#Do_you_understand

Хакатон - увеселительное мероприятие в течение 24 или 48 часов, где разработчики меряются скоростью разработки, качеством идей и чем придется на благо организаторов.

Например, тебе нужно приложение, которое будет управлять светофорами в городе. Организовываешь хакатон, объявляешь призовой фонд в 500к - и через сутки получаешь с сотню решений вместе с демоверсиями.

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

О чем рубрика
#Фантастические_твари_и_кем_они_работают

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

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

О чем рубрика
This media is not supported in your browser
VIEW IN TELEGRAM
#Где_то_за_кадром

В 3 часа 14 минут и 8 секунд 19 января 2038 года по всему миру прокатится сбой в программном обеспечении. Маленький конец света, когда время повернет вспять и многие системы будут думать, что на дворе 13 декабря 1901 года.

Причиной будет код, который активно использует даты и время в формате UNIX (я расскажу, что это за формат в следующем посте).

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

О чем рубрика