Ответ
Monkey testing (или «обезьянье тестирование») — это техника тестирования, при которой приложение подвергается случайным, бессистемным входным данным или действиям без заранее определенных тест-кейсов. Цель — проверить устойчивость системы и обнаружить критические сбои, такие как падения (crashes), утечки памяти или зависания.
Ключевые характеристики:
- Случайность: Действия (клики, ввод, жесты) генерируются случайным образом.
- Отсутствие сценария: Тест не знает о структуре приложения.
- Фокус на надежность: Основная задача — «сломать» приложение, а не проверить функциональность.
Пример псевдокода для GUI-приложения:
import random
import time
actions = ["click", "input_text", "swipe", "press_back"]
for i in range(10000):
action = random.choice(actions)
x, y = random.randint(0, 1080), random.randint(0, 1920)
if action == "click":
device.click(x, y)
elif action == "input_text":
device.input(random_string())
# ...
time.sleep(random.uniform(0.1, 0.5))
| Плюсы и минусы: | Плюсы | Минусы |
|---|---|---|
| Может найти неочевидные, редкие баги. | Баги сложно воспроизвести. | |
| Не требует глубокого знания системы. | Низкое покрытие с точки зрения функциональности. | |
| Полезно для стресс-тестирования UI. | Требует тщательного анализа логов и мониторинга ресурсов. |
Разновидности: Smart Monkey (знает структуру приложения) и Dumb Monkey (полностью случайные действия).
Ответ 18+ 🔞
А, слушай, про обезьянье тестирование! Это ж классика, блядь, ёпта! Представь себе: сажаешь мартышку за комп, даёшь ей банан и говоришь: "Впердоливай по клавишам, пока не надоест, или пока всё не накроется медным тазом!"
Суть в чём, блядь? Берёшь своё приложение, этот свой шедевр, в который ты, сука, душу вложил, и начинаешь тыкать в него наугад, как пьяный ёж в клубок проводов. Никаких умных тест-кейсов, нихуя! Просто рандом: клик сюда, ввод текста "аыфваыфва", свайп нахуй, кнопка "Назад" — и всё это в случайном порядке, с интервалами, от которых у любого нормального тестировщика волосы дыбом встанут.
Вот, смотри, как это примерно выглядит, если на коленке написать:
import random
import time
actions = ["click", "input_text", "swipe", "press_back"]
for i in range(10000):
action = random.choice(actions)
x, y = random.randint(0, 1080), random.randint(0, 1920)
if action == "click":
device.click(x, y)
elif action == "input_text":
device.input(random_string())
# ...
time.sleep(random.uniform(0.1, 0.5))
Видишь? Просто берёшь и долбишь по интерфейсу, как Герасим по ебалу, пока что-нибудь не отвалится. Цель — не проверить, работает ли кнопка "Купить", а выяснить, выдержит ли твоё творение атаку полного, блядь, распиздяйства.
Чем это, сука, хорошо и чем плохо?
С одной стороны, пиздец как полезно:
- Может вылезти такой баг, о котором ты и подумать не мог. Типа, нажмёшь 15 раз подряд на логотип, повернёшь экран, введёшь иероглифы — и приложение, блядь, взрывается, унося с собой кэш пользователей. Удивление пиздец!
- Не надо быть семи пядей во лбу. Даже стажёр-кофевар справится — главное, чтоб палец был и желание всё сломать.
- Отлично показывает, насколько приложение держит удар, когда его используют не по уму.
С другой стороны, полный пиздец:
- Найденный баг потом воспроизвести — это ж, блядь, квест. "Ну оно упало когда я... э... вроде просто тыкал... а потом ещё... хз, честно".
- О нормальном покрытии функционала можно забыть. Обезьяна может 10 тысяч раз ткнуть в одно и то же место на экране и ни разу не зайти в настройки.
- Нужно пилить тонны логов и следить за памятью, а то обезьяна тебе такую утечку устроит — мало не покажется.
Бывают ещё, блядь, "умные обезьяны" (Smart Monkey) — они хоть немного понимают, где кнопки, и не тыкают в пустое место. И "тупые обезьяны" (Dumb Monkey) — это как раз наш случай, полные дебилы, которые только и могут, что ломать. Но иногда, блядь, именно такой дебил и находит критические косяки, мимо которых прошла целая армия аккуратных тестировщиков. Вот такой парадокс, в рот меня чих-пых!