Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Пример fuzzy testing для поиска URL в тексте
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Moscow Python Meetup
PRO
October 24, 2012
Technology
870
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Пример fuzzy testing для поиска URL в тексте
Как fuzzy testing помог дополнить регулярку и выявить не самые очевидные баги.
Moscow Python Meetup
PRO
October 24, 2012
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №111. Как мы изобретали Temporal, пытаясь просто создать приложение
moscowdjango
PRO
0
120
Moscow Python Meetup №110. Артём Тарасов (Альфа-Банк, Senior Engineer). Менторство как допинг: Как прокачать свои хард-скиллы, обучая других
moscowdjango
PRO
0
93
Moscow Python Meetup №110. Алёна Тямейкина (Островок.ру, Python Developer). Автоматизации процессов разработки
moscowdjango
PRO
0
100
Moscow Python Meetup №110. Адриан Макриденко (ГК Астра Линукс, разработчик серверной части). Токены авторизации: почему JWT легко использовать неправильно и как это исправляет PASETO?
moscowdjango
PRO
0
120
Moscow Python Meetup №109. Георгий Дьячков (Альфа банк, Главный разработчик). Векторные базы в агентной архитектуре и как изменятся вопросы на собеседованиях в 2026
moscowdjango
PRO
0
130
Moscow Python Meetup №109. Евгений Блинов (The Mutating Company). Ближайшее будущее мутационного тестирования на Python
moscowdjango
PRO
0
120
Moscow Python Meetup №108. Воркшоп "Построение AI-агента: Говори с данными на языке бизнеса"
moscowdjango
PRO
0
200
Moscow Python Meetup №108. Gather. Inspire. Deliver.
moscowdjango
PRO
0
150
Moscow Python Meetup №107. Бесшовные релизы глазами разработчика: обновляем код Облака без API
moscowdjango
PRO
0
140
Other Decks in Technology
See All in Technology
IR Today: Theory, Practice, and Agents
dtunkelang
0
340
Claude起点の仕様駆動開発
tanakaseiya
0
330
SDDの運用にめげずに向き合った話
sansantech
PRO
0
120
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
400
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
400
The kernel report
ennael
PRO
1
230
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
170
Deep Data Security 機能解説
oracle4engineer
PRO
2
650
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
240
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
260
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
150
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
110
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
A Modern Web Designer's Workflow
chriscoyier
699
190k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
Design in an AI World
tapps
1
340
The agentic SEO stack - context over prompts
schlessera
0
950
Deep Space Network (abreviated)
tonyrice
0
350
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Everyday Curiosity
cassininazir
0
340
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
Transcript
Пример fuzz testing для поиска URL в тексте Николай Ходов
(
[email protected]
)
Fuzz testing
Условное деление
Задача • В произвольном тексте: • Найти все URL'ы
Бесплотные попытки https?://(.*?) А как же вот это?! • ya.ru
• It.s.bori.ng • vk.com/durov • Google.com/#plus-plus • //st.domain.com/?q=1 • И еще миллионы вариантов...
Пишем регулярку (https?://)?<domain>{1,3}.<TLD>(/<path>)*(?<query_string>?)(#<hashtag>?)? RFC 1738 +
Тестируем вручную • self.assertEqual(strip_links('word1 https://ya.ru word2'), 'word1 word2') • self.assertEqual(strip_links('word1
domain.arpa/test.link word2'), 'word1 word2') • self.assertEqual(strip_links('word1 ya.ru/yandsearch? sdfsdfsdf=1fsdf word2'), 'word1 word2') • self.assertEqual(strip_links('word1 naked.domain.asia word2'), 'word1 word2') • … • На 15 строке мозг усиленно отказывается что-либо придумывать.
Пусть тестирует сам компьютер! Kwh89 ydhfj 09 u ><LAKSUy236 v
Fully Random URL Текст должен остаться неизменным
Баги • Домены не могут начинаться на “-” (тире) •
RFC не последняя инстанция (//) • Разные наборы символов для query string и для пути
Надежность • Не дает 100%-покрытия на границах (где обычно все
самое вкусное) • Не факт, что будут выявлены критичные баги • Но... • Вы можете прогнозировать поведение программы в стресс-режиме
Применимость • Применим на стыках взаимодействия программ (форматы файлов, передача
данных, внешние события) • Очень сильно помогает выявить на раннем этапе то, что может “завалить” программу в боевом режиме
Вопросы?