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

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

Во многих малых и средних компаниях сисадмин планирует развитие и модернизацию оснащения. Грубо говоря - "Компьютер модели А устареет через полгода, поэтому мы часть техники заменим на модель B, а другую часть отдадим туда, где это не критично. А еще необходимо усовершенстовать информационную безопасность, поэтому через два месяца приобретем модель Г". Хотя, по-хорошему, это уже задача менеджеров.
#Где_то_за_кадром

Что было раньше: провайдеры или Интернет? Ты даже не представляешь как сложно ответить на этот вопрос.

Глубоко на дне океана, где обитает Спанч Боб, лежат оптоволоконные кабели, по которым передают 99% всех международных интернет-данных. И владеют этим баснословно дорогим удовольствием крупнейшие провайдеры первого уровня. Их меньше 10 и именно на них держится весь Интернет.

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

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

К сожалению - нет. И тому есть две причины:

1. Провайдеры первого уровня в принципе не продают трафик конечным потребителям.
2. Трафик продается оптом, т.е. малый объем будет стоить дороже. А ты вряд ли захочешь скупать даже десятую часть всего мирового трафика ради котиков в Интернете.
#Do_you_understand

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

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

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

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

Этот метод был предложен еще в прошлом веке, но до сих пор широко используется. Суть такая - человек (судья этого соревнования) общается с двумя невидимыми собеседниками, например, в чате. Один из них - живой человек, а второй - искусственный интеллект. Судья может задавать любые вопросы, но их количество ограничено. Если по итогу он не сможет отличить машину от человека - значит тест пройден.
#Вавилон_нашей_эры

Машинный код - это самые простейшие инструкции, которые может самостоятельно выполнить процессор компьютера. Их количество ограничено, как правило, можно выполнить следующие операции:

- поместить что-то в память
- извлечь что-то из памяти
- арифметические операции
- логические операции

На этом все) Код выглядит как на картинке - очень интересно и ничего не понятно. Непосредственно на таком, кхем, языке, разработчики не пишут, но все программы автоматически "транслируются" в машинный код, чтобы начать работу.
#Будь_как_все

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шников встречают его в первый и последний раз.

О чем рубрика?