Bro, manage test data like a pro! (Mikalai Alimenkou, Ukraine) [RU]
Zusammenfassung
TLDRNikolai, consultant indépendant, discute de l'importance des données dans l'automatisation des tests. Il souligne que les tests doivent être indépendants des données pour améliorer leur exécution parallèle et leur efficacité. Nikolai détaille les trois composants d'un test : la logique de test, les données de test et l'application driver. Il aborde également les différentes méthodes pour gérer les données dans les tests, y compris l'utilisation de données en direct, les enregistrements de données, et les bases de données, tout en mentionnant les inconvénients associés à ces méthodes. La présentation met en avant la nécessité d'avoir un bon soutien infrastructural et de maintenir les données à jour pour assurer un processus de test fluide.
Mitbringsel
- 🔍 Importance des données tests
- 💡 Tests indépendants pour parallélisme
- 🛠️ Application Driver et logique de tests
- 📊 Gestion efficace des données de tests
- 🚀 Stratégies pour améliorer l'exécution des tests
- 🌍 Accès aux matériaux de conférence
- 🎤 Participation à des conférences de test
- 📚 Partage de connaissances et expertise
- 🔗 Outils pour l'automatisation des tests
- 🎯 Focus sur la logique de test.
Zeitleiste
- 00:00:00 - 00:05:00
Introduction de Nikolay, un consultant indépendant avec plus de 13 ans d'expérience en Java et en gestion de livraison, co-fondateur d'un centre de formation et d'une série de conférences sur l'automatisation des tests.
- 00:05:00 - 00:10:00
Présentation des conférences organisées, notamment la Selenium Camp, la première et plus grande conférence en Europe sur l'automatisation des tests. Invitation à accéder à une base de connaissances riche disponible en ligne.
- 00:10:00 - 00:15:00
Discussion sur les trois composants essentiels de tout test : la logique de test, les données de test, et le driver d'application, soulignant l'importance de chaque élément dans l'automatisation des tests.
- 00:15:00 - 00:20:00
Mise en évidence de l'importance des données indépendantes dans les tests. Les tests dépendants des données doivent être exécutés séquentiellement, ce qui réduit la vitesse des tests. L'importance d'avoir des ensembles de données spécifiques à chaque test a été soulignée.
- 00:20:00 - 00:25:00
Exploration des systèmes typiques pour les tests et de la manière de créer des données de test à travers une interface utilisateur. Les avantages et inconvénients de cette méthode, tels que la stabilité et la commodité, ainsi que les problèmes de dépendance de données ont été discutés.
- 00:25:00 - 00:30:00
Présentation du 'Data Registry' comme un moyen de gérer les données de test, permettant de créer des utilisateurs uniques sans dépendre des données existantes dans le système, augmentant ainsi l'indépendance et la vitesse des tests.
- 00:30:00 - 00:35:00
Utilisation d'API pour créer des données de test. Bien que cela soit plus stable et rapide, il existe des défis, notamment la nécessité d'une bonne documentation des API et des compétences techniques pour les utiliser correctement.
- 00:35:00 - 00:44:20
Conclusion sur l'utilisation des données live par rapport aux données de test, en soulignant les risques de confidentialité et de sécurité tout en reconnaissant la richesse des données disponibles en production. Appel à l'importance de gérer de manière efficace les données pour améliorer les tests.
Mind Map
Video-Fragen und Antworten
Qui est Nikolai ?
Nikolai est un consultant indépendant avec plus de 13 ans d'expérience en Java.
Quel est le sujet principal de la présentation ?
L'importance des données de test dans l'automatisation des tests.
Quelles sont les principales composantes d'un test selon Nikolai ?
Les trois composants principaux d'un test sont la logique de test, les données de test et l'application driver.
Comment peut-on améliorer l'efficacité des tests ?
En rendant les tests indépendants des données, ce qui permet d'exécuter des tests en parallèle.
Quelle conférence a été mentionnée dans la présentation ?
Nikolai parle de plusieurs conférences, y compris Selenium Camp.
Comment accéder aux matériaux de la conférence ?
Les matériaux sont disponibles sur le site du centre de formation.
Weitere Video-Zusammenfassungen anzeigen
Pelvis Part-5: Uterus
Comment ÉDUQUER son CHIOT ?
Le désarroi des propriétaires de maisons fissurées dans la Sarthe.
Comment protéger ma maison des fissures ? - Le monde de Jamy
Pourquoi ce phénomène menace plus de 10 millions de maisons en France
Phloem & translocation | Life processes | Biology | Khan Academy
- 00:00:12ночь меня зовут николай алиментов меня
- 00:00:13можно найти в интернете как xp injection
- 00:00:16я достаточно давно работаю войти более
- 00:00:2013 лет я работал java тип не дома
- 00:00:22delivery менеджером с мая прошлого с
- 00:00:25апреля прошлого года я полностью работаю
- 00:00:27как независимый консультант
- 00:00:29где-то больших антон взята меньше хантон
- 00:00:31то есть мы делаем множество разных
- 00:00:33интересных вещей в рамках тренинга центр
- 00:00:36их спин джексон который мы основали в
- 00:00:382009 году и от которым мы проводим
- 00:00:40множество конференций в том числе у нас
- 00:00:42есть три больших конференций конференции
- 00:00:44же икон конференции selenium camp
- 00:00:46которая была первой в мире конференции
- 00:00:48поселений ума теперь трансформировалась
- 00:00:50самую большую в восточной европе
- 00:00:52конференцию сугубо посвященной
- 00:00:54автоматизации тестирования вот за все
- 00:00:56годы видео доступно и все материалы
- 00:00:59доступны у нас в разделе
- 00:01:01history поэтому заходите там собрано
- 00:01:03очень большая база знаний
- 00:01:05материалы этого года как только мы
- 00:01:08закончим они будут собираться часть
- 00:01:09видео уже опубликовано но мы их не шарим
- 00:01:11чтобы исправить какие-то проблемы если
- 00:01:14они есть вот как только они будут в
- 00:01:16хорошем качестве уже доступны мы выложим
- 00:01:18я думаю что это будет где-то понедельник
- 00:01:19но я не думаю что вы придете воскресенье
- 00:01:22будете пересматривать еще доклады это
- 00:01:24уже нужно быть совсем таким фанатом
- 00:01:26вот все мои материалы лично моих
- 00:01:30докладов можно найти у нас в разделе
- 00:01:32материалы
- 00:01:33это самый простой путь наверное то есть
- 00:01:35вот этих слайдов еще нигде нету наверно
- 00:01:37первым делом они появятся в разделе
- 00:01:39материалов у нас на сайте
- 00:01:40также я не не перемену по рекламировать
- 00:01:44нашу замечательную к и гильдию которая
- 00:01:47находится в стеке
- 00:01:48на текущим моментом почти 700 человек
- 00:01:50достаточно активная комьюнити большая
- 00:01:53часть спикеров которые выступали у нас в
- 00:01:55эти два дня они тоже там поэтому если вы
- 00:01:57хотите задавать вопросы по совершенно
- 00:01:59разным
- 00:02:00направлением касательно коллите шанса
- 00:02:02тестирования и прочих направлений то
- 00:02:04присоединяйтесь
- 00:02:05абсолютно без регистрации sms если у вас
- 00:02:07есть снег то велкам все хватит об этом
- 00:02:11давайте непосредственно теме нашего
- 00:02:13доклада как известно любой тест состоит
- 00:02:15из трех компонентов это слайд я
- 00:02:17показывая его специально только что
- 00:02:19вспомнил что он у меня есть я его
- 00:02:21показывал не знаю
- 00:02:22лет семь или восемь назад наверно первый
- 00:02:24раз и периодически его показу из каких
- 00:02:26трех компонентов состоять любой тест
- 00:02:30какой самый важный компонент вы считаете
- 00:02:33в тесте как это назвать то что надо
- 00:02:38тестировать
- 00:02:40тестова логика правильно то есть это
- 00:02:42логика которую вы закладываете ваш тест
- 00:02:45ваш тестовый сценарий непосредственно
- 00:02:47логика то есть вы ее сотворили вы не
- 00:02:50взяли ее откуда автоматически сделали
- 00:02:52вашу тестовые логику следующее что есть
- 00:02:54у нас тестовые данные то есть это логика
- 00:02:57манипулируют какими-то данными
- 00:02:59ну и наконец логика сама по себе с
- 00:03:01данными не могут добраться до
- 00:03:03applications который вы тестируете то
- 00:03:05есть нужна некая связь с applications
- 00:03:07нитки апликэйшен драйвер который берет
- 00:03:09вашу логику берет тестовые данные и
- 00:03:12применяет непосредственно к апликэйшен
- 00:03:14о чем вы слушали в течение этих двух
- 00:03:16дней выслушали очень много про
- 00:03:18апликэйшен драйверы то есть как написать
- 00:03:21автоматизацию браузеров мобильных там
- 00:03:23еще чего-то то есть как построить этот
- 00:03:25промежуточный слой который позволит
- 00:03:27вашей тестовые логике добраться до
- 00:03:29вашего приложения
- 00:03:30выслушали еще много докладов по поводу
- 00:03:32того как а вот в каком-то инструменте
- 00:03:34или каким-то подходом сделать тестовую
- 00:03:37логику которая позволила бы вам
- 00:03:39автотесты писать лучше там быстрее ли
- 00:03:41еще что и получается тестовые данные
- 00:03:43никто не затрагивает им всегда скучно и
- 00:03:46одиноко вот и на конференциях и мало
- 00:03:48освещают поэтому я решил сделать вот
- 00:03:50такого доклад непосредственно
- 00:03:51посвященный только тестовым данным
- 00:03:53почему это вопрос данных так важен
- 00:03:55потому что независимость по данным
- 00:03:59является одним из ключевых аспектов в
- 00:04:02скорости ваших тестов почему так
- 00:04:04происходит давайте задумаемся вот у меня
- 00:04:05есть такая мотивационная корзиночка
- 00:04:07внизу которая говорит о том что если у
- 00:04:09меня тесты зависимые по данным то
- 00:04:11единственно что они могут делать они
- 00:04:12могут проходить последовательно ну то
- 00:04:15есть если я один и тот же тест имею на
- 00:04:16логин и тот же логин я использую для там
- 00:04:19изменения паспорта и тот же лаги не
- 00:04:21использует для удаления ну явно они
- 00:04:23могут проходить последовательно то есть
- 00:04:24я не могу запустить параллельно эта
- 00:04:26проблема правильно поэтому я бы хотел
- 00:04:28что иметь я хотел бы вот эти зависимости
- 00:04:31которые сделаны по данным я хотел бы
- 00:04:33от них избавиться потому что если у меня
- 00:04:35есть зависимая теста я не могу параллель
- 00:04:37из если у меня есть независимая тесты я
- 00:04:39их могу параллель из это же здорово
- 00:04:40правильно если я могу параллель я могу
- 00:04:42запускаться на не неограниченных просто
- 00:04:46масштабах то есть мне абсолютно спокойно
- 00:04:48могу запускать сотни тысяч тестов вот
- 00:04:50вчера парень из болгарии рассказывал что
- 00:04:52они там запускают 100 тысяч тестов не
- 00:04:55знаю зачем проблема в другом но тем не
- 00:04:57менее на это можно сделать но и самое
- 00:05:01интересное что данные это должны быть
- 00:05:03достаточно специфичны для каждого теста
- 00:05:06то есть если вы делаете просто какие-то
- 00:05:08общие данные то потом они
- 00:05:10натуральным образом начинают реализацию
- 00:05:12сделал круто юзера админы он hop и начал
- 00:05:14у всех использовать этот юзер админы все
- 00:05:16натурально это происходит вот и наконец
- 00:05:19чего бы хотелось достичь это иметь
- 00:05:21маленький сфокусированы дэйтасет и чтобы
- 00:05:23каждый тест он имел свой отдельный dtc
- 00:05:25то есть вот у него есть какие-то данные
- 00:05:27которые нужны только ему если идет
- 00:05:29какой-то рию из он идет только тогда
- 00:05:31когда действительно эти данные общие
- 00:05:33никому не мешают то есть вот наша задача
- 00:05:35и понятно для чего
- 00:05:36давайте рассмотрим какой-нибудь типичную
- 00:05:38систему причем смотрите под системой вот
- 00:05:41система у нас в центре подсистема я я
- 00:05:43могу иметь ввиду какой-нибудь майкро
- 00:05:45сервис я могу иметь целую большущую
- 00:05:47систему
- 00:05:48я могу иметь целую группу систем то есть
- 00:05:50абсолютно не важно что внутри принципы
- 00:05:52будут одни и те же техники будут одни и
- 00:05:54те же что важно отметить у нее есть ей
- 00:05:57возможно это неважно какая это может
- 00:05:59быть консольную а это может быть в пюре
- 00:06:01мобильный какой-то ей у нее есть и пиа и
- 00:06:05он может стать и не быть на самом деле
- 00:06:07да но вероятней всего ваш ей через
- 00:06:10что-то ходит на серверную логику если мы
- 00:06:12не говорим совсем про нативное
- 00:06:14приложение в мобильном например которая
- 00:06:16просто живет у себя в мобильном и
- 00:06:18калькулятор на при калькулятор никуда не
- 00:06:20ходит складывает локально числа и
- 00:06:22умножает их тоже никуда не ходит вот
- 00:06:25наша система которая есть предположим
- 00:06:27два интерфейса и 5 и у нее есть какие-то
- 00:06:29внешние стороны то есть базы данных у
- 00:06:32нее есть в очереди какие-то и возможно
- 00:06:34эта система общается с какими-то
- 00:06:36внешними сервисами по каким-то
- 00:06:37определенным контрактом который мы
- 00:06:39задействуем через ebay
- 00:06:41вот такую как бы достаточно общую
- 00:06:44с другой стороны банальную ситуацию мы
- 00:06:47будем рассматривать и первый самый
- 00:06:49логичный способ который вы можете
- 00:06:51придумать это идти через юань правильно
- 00:06:54то есть если у нас есть
- 00:06:55почему бы через него не пойти для того
- 00:06:57чтобы создать свои тестовые данные и вы
- 00:06:59абсолютно правы это самый простой способ
- 00:07:01с которого можно начать
- 00:07:03потому что во первых он очень понятный
- 00:07:05то есть тестировщик который использует
- 00:07:07такой подход он понимает что если нам
- 00:07:09надо зарегистрировать пользователь нужен
- 00:07:11пользователи зарегистрирую пользователю
- 00:07:13тебя будет пользователь вон из
- 00:07:15преимуществ давайте вот у нас одна
- 00:07:17половина будет говорить что хорошего у
- 00:07:19нас происходит вот с таким подходом
- 00:07:202 будет говорит что негативного есть в
- 00:07:22таком подходе вот первое это то что это
- 00:07:25black box помните есть white box грей
- 00:07:28бокс и black box какой самый лучший
- 00:07:32неправильно какой о разные цели отлично
- 00:07:38то есть нету хорошего и плохого да есть
- 00:07:40разные цели разные контексты
- 00:07:42и для одной цели хорошо работает white
- 00:07:44box вчера рассказывал никита макаров pro
- 00:07:46white box очень много для какой-то цели
- 00:07:48работает black box но с точки зрения
- 00:07:50тестирования чем более black box
- 00:07:53она будет с точки зрения данных тем
- 00:07:55лучше потому что это значит что мы будем
- 00:07:57просто засовывают какие-то данные
- 00:07:59говорит смотрите это точно так же будет
- 00:08:01работать как конечное пользователя то
- 00:08:03есть вероятность того что нам нужно
- 00:08:04будет платить за поддержку какую-то
- 00:08:06дополнительную что данное
- 00:08:08рассинхронизирует зачем то она будет
- 00:08:09минимальная потому что ровно также
- 00:08:11конечный пользователь придет эти данные
- 00:08:13туда вставлять это здорово с точки
- 00:08:15зрения вот
- 00:08:16повторения конечного пользователя для
- 00:08:18функциональных тестов вообще шикарно
- 00:08:20всунули туда какие-то данные они там
- 00:08:22есть вот второе это простой путь то есть
- 00:08:25его можно просто к любому человеку
- 00:08:27объяснить то есть вот ты говоришь там
- 00:08:29приходит к себе тестировщик говорит
- 00:08:31слушай а как мне вот юзера получите
- 00:08:32кажется rega его
- 00:08:33ну конечно пойду за реку не надо
- 00:08:36какие-то сложности на таких технических
- 00:08:38знаний специфических скилов отдельных
- 00:08:41инструментов все мега просто у вас есть
- 00:08:43инструмент которым вы автоматизируете
- 00:08:45ваше тестирование через ей круто этим же
- 00:08:48инструментом и
- 00:08:49извели юзеров туда или все остальные
- 00:08:52данные точно также но есть проблемы
- 00:08:55проблема в том что не очень стабильно
- 00:08:58это получается почему не очень стабильно
- 00:09:00потому что мы знаем что вообще ей
- 00:09:02тестирование не очень стабильно сегодня
- 00:09:04тоже не вчера андрей солнцев рассказывал
- 00:09:06про флэки тест да про особенности вот
- 00:09:09этого апликэйшен драйвера который может
- 00:09:11быть далеко не идеальным и и браузер не
- 00:09:13идеальны короче все не идеальна в этой
- 00:09:15цепочке
- 00:09:16имея такую не идеальную цепочку сложно
- 00:09:19потом понять это проблемы больше данных
- 00:09:21то есть вот данные не до конца
- 00:09:23заступились или эта проблема все таки
- 00:09:25тестовой логике ну то есть реально
- 00:09:26какие-то сердце не сработали из-за
- 00:09:28приложения из за то что логика не
- 00:09:30работает приложение или из заданных
- 00:09:32которые не до конца в бились у него там
- 00:09:34был пример с плавающей кнопкой там и
- 00:09:36прочее представившие от вас поля уплыла
- 00:09:38текстовая вы в него вбивали что-то и не
- 00:09:40довели вот не получилось у вас вот и
- 00:09:42данные зашли внутрь но не целиком и
- 00:09:44потом где-то это всплывает там на пятом
- 00:09:46шаге вашего теста не очень хорошая
- 00:09:48ситуация второе это то что это очень
- 00:09:51долго
- 00:09:51вот представьте для того чтобы меня
- 00:09:53зарегистрированного пользователя я
- 00:09:54должен открыть браузер пойти на страницу
- 00:09:57регистрации она должна загрузиться я
- 00:09:59должен вбить все данные пройдет к это
- 00:10:00валидация мне пришлют имейл я получу
- 00:10:03email куда-то с какой-то mail бокса
- 00:10:05подтвержу его и у меня наконец появился
- 00:10:08юзер самое смешное теперь что я этот с
- 00:10:10могу иметь
- 00:10:11на этого юзера что я хочу просто
- 00:10:13попробовать залогиниться под
- 00:10:14неправильным паролем если не получилось
- 00:10:16то не знаю сказать файл
- 00:10:18то есть представьте сколько усилий для
- 00:10:20того чтобы сделать гораздо более
- 00:10:22короткий тест это минус это не очень
- 00:10:24хорошо ну и наконец самая большая
- 00:10:27проблема у я и
- 00:10:29способа она заключается в том что если
- 00:10:31что-то поломалось
- 00:10:32в одном месте то падает сразу много
- 00:10:35всего в это вы например вбивали юзеров
- 00:10:37через ей и поломалась регистрация вы
- 00:10:40всегда имеете тупо все краса
- 00:10:42ну за исключением там каких-нибудь
- 00:10:44админских тестов или ещё каких-нибудь
- 00:10:45статических теста все остальное как бы
- 00:10:47вас красное то есть вот такой бинарный
- 00:10:49статус начинает либо ничего не работает
- 00:10:51либо все работает но это не то для чего
- 00:10:54мы делили там
- 00:10:55тестовый сценарий отдельно мышка теле
- 00:10:57если у полку это тестовый сценарий
- 00:10:58конкретно мы хотим знать что они
- 00:11:00работают а эта информация скрывается
- 00:11:02потому что нас зависимости теперь между
- 00:11:04функциональностью появились отвалилась
- 00:11:06еще кое-то функционале добавляла там
- 00:11:08комментарий а нам нужен был комментарий
- 00:11:09для 200 сценариев и все 200 сценариев
- 00:11:12отвалились не очень хорошо видите причем
- 00:11:16могло отвалится не по самой
- 00:11:17бизнес-логики могло отвалится просто но
- 00:11:19я и кто-нибудь криворукий разработчик то
- 00:11:22неправильно переменную объявил и нельзя
- 00:11:25добавить комментарий через ей
- 00:11:27ну как бы и горя не то есть другая эта
- 00:11:29функциональность работает а у нас уже
- 00:11:31тесты не работают а теперь представьте
- 00:11:33если эти тесты
- 00:11:34еще остались у вас вашей зоне
- 00:11:36ответственности то есть если они
- 00:11:38ломаются вам потом с этим разбираться и
- 00:11:40вот вы открываете у вас там test report
- 00:11:42в каком-нибудь не дай бог там report
- 00:11:44портале или аллюре там открывается и там
- 00:11:46сто пятьсот тестов упала и вы начинаете
- 00:11:49там колупать сама почему вот этот блин
- 00:11:51это из заданных там проще
- 00:11:53слегка эта группировка нам хотя бы
- 00:11:55как-то поможет это кстати очень
- 00:11:56интересная тема развитие вот этих
- 00:11:58группирования ошибок потому что можно
- 00:12:01было бы избежать проблем сгруппировал
- 00:12:03ошибку перед это вы с тестовыми данными
- 00:12:04у вас нам проблемы выходили в тестовые
- 00:12:06данные вот поэтому так получилось плохо
- 00:12:08то есть вообще подход не очень хорошие
- 00:12:11имена вот по последнему вот этому пункту
- 00:12:13и вот этот он тоже очень сильно влияет
- 00:12:15особенно там где тестовые данные сложно
- 00:12:17через через ей долго делать то ваши
- 00:12:20теста очень сильно удлиняются
- 00:12:21еще есть одна такая скрытая проблема
- 00:12:25что не все данные можно на самом деле
- 00:12:28так легко сбить то есть мы имеем
- 00:12:30какую-то систему достаточно простенькую
- 00:12:32например там социальную сеть там все
- 00:12:34данные предполагается что юзер может
- 00:12:35сбить а может даже и там не все а есть
- 00:12:39сложные системы где какие-то данные еще
- 00:12:41заходят там из каких-то боковых каналов
- 00:12:43например там вас прилетели ки нибудь
- 00:12:44транзакции с платёжной системы а не
- 00:12:46сбоку прилетели их никто через юани
- 00:12:48вбивает вот или у вас еще как эта
- 00:12:50информация из какого-нибудь другого
- 00:12:52ресурса из европе системы прилетела
- 00:12:54пользователя и опять их через ей никто
- 00:12:56не взбивая получается может быть такая
- 00:12:58система в которой вы не можете все
- 00:12:59сделать через ей это тоже накладывает
- 00:13:02свои ограничения но зато с этого подхода
- 00:13:04можно легко начать как можно сделать его
- 00:13:07ним
- 00:13:07ручка легче и проще для этого
- 00:13:10используется замечательный подарок под
- 00:13:11названием дейта registry в чем сущность
- 00:13:13этого суть этого паттерна что когда мне
- 00:13:16в каком-то тэсси
- 00:13:17нужен юзер то я вместо того чтобы
- 00:13:20говорить о гай пойду реджистер юзер
- 00:13:22использовать этого юзера я это скрываю
- 00:13:24за реджис 3 то есть я спрашиваю у реджи
- 00:13:26среди камни юзера и реджис 3 вот здесь
- 00:13:29вот в данном примере во-первых формирует
- 00:13:31мне уникального юзера видите у него есть
- 00:13:34юзер подчеркивание индекс это всего лишь
- 00:13:37пример то есть вы генерируете каждый как
- 00:13:39себе нравится для того чтобы он был
- 00:13:40уникальным
- 00:13:41если он будет уникальным то у вас
- 00:13:42появляется возможность потом не зависеть
- 00:13:45по тестам и теперь запускается процесс
- 00:13:47регистрации в данном случае он у меня
- 00:13:48пропущен потому что этот подход можно
- 00:13:50использовать вообще для любого вида
- 00:13:52управления тестовыми данными
- 00:13:54но именно за ним скрывается у вас может
- 00:13:56быть один юзер registry который умеет
- 00:13:59например ходить через юань то есть у
- 00:14:01него будет конкретная реализация you a
- 00:14:03use ridgid re он будет формировать
- 00:14:05уникальный вот этого юзера идти
- 00:14:07регистрировать его через ей назад его
- 00:14:09возвращать тогда ваши тесты в идеале
- 00:14:11оторваны от от детали откуда взялся этот
- 00:14:14юзер он появился из базы данных он
- 00:14:16появился из while он появился еще откуда
- 00:14:18то какая разница самому тесту тесту же
- 00:14:21важно знать что у него на руках есть
- 00:14:22юзер которым он может пользоваться со
- 00:14:24всей необходимой информации вот это
- 00:14:26скрытие вот этого самого механизма
- 00:14:28получения данных очень хорошо помогает
- 00:14:30для каких-то подходов все-таки
- 00:14:32использовать you are providing вот этих
- 00:14:34данных для каких-то подходов не
- 00:14:36использовать для каких-то тестов это
- 00:14:37используя для каких-то не используя но
- 00:14:39все это скрывается за вот этим режете
- 00:14:41очень полезным поттером вот идем дальше
- 00:14:44то есть следующий логичный способ
- 00:14:45совершенно это использовать для этого и
- 00:14:475 и 5 находится по соседству поэтому
- 00:14:50кто-то говорит ну так давайте вот
- 00:14:51дуайтом нестабильный попытаемся это
- 00:14:53исправить дуется через и переходить вот
- 00:14:56и вроде как это логично совершенно но
- 00:14:57если понятна эта тряпья есть у вас вот
- 00:15:00если его нет то вы его и дернуть никак
- 00:15:02нельзя причем некоторые так забавно
- 00:15:04некоторые приходят горит у нас в
- 00:15:05приложении г а вы используете нет у нас
- 00:15:07нет а это я говорю как вы считаете там
- 00:15:10какой-то код пачкать вжух у вас браузера
- 00:15:14типа hop и уже там в базе как-то
- 00:15:15оказывается не горит у нас очень и т.п.
- 00:15:18мы проверяли никакого этой они на самом
- 00:15:21деле не по любому есть просто может не
- 00:15:23называться и
- 00:15:24ну что сервер с браузером
- 00:15:26взаимодействует по протоколу http по
- 00:15:28бинарному протоколу по кому-то протоколу
- 00:15:31вот и этот протокол это и есть как бы
- 00:15:33поверх него ну ладно выращивать к это
- 00:15:35бизнес лойко это если 5 вы можете его
- 00:15:37так не называют но тем не менее он такой
- 00:15:39есть вот что тут хорошего
- 00:15:42ну в таком подходе через и 5 во первых
- 00:15:45вы можете использовать один и тот же и
- 00:15:46пиарь получается и для приложений для
- 00:15:48тестов но для тестовых данных получается
- 00:15:51вы спустились на один уровень ниже тем
- 00:15:52самым убрав проблемы в более высокого
- 00:15:54уровня то есть все вот нестабильности
- 00:15:56длительную работу и так далее вы выбрали
- 00:15:59это
- 00:15:59это здорово это позитив вот во вторых и
- 00:16:02пион больше ориентирован на данные ну то
- 00:16:05есть он дейта рендер
- 00:16:06это значит что вы в принципе уже там
- 00:16:08передаете конкретные данные вы не не
- 00:16:10вбиваете какие-то поляна в нанана в
- 00:16:13формочки там галочки еще что-то в уже
- 00:16:16непосредственно передается поля данных и
- 00:16:18мало этого
- 00:16:19если у вас есть например данные уже
- 00:16:20заготовлена например вы в джейсоне
- 00:16:22куда-то их сохранили вот если у вас был
- 00:16:24джейсон готовы вы где-то за sniff или из
- 00:16:26трафика и сохранили вы его взяли из
- 00:16:28какой-то примера например да или в
- 00:16:30swagger у вас описан где то ждите пиво
- 00:16:33шипя и там есть готовый пример вот
- 00:16:34говорит вот это пример к этому это вы и
- 00:16:37вас копию постель вставили его можно
- 00:16:38отправлять а если бы вы через
- 00:16:41сбивали то так бы не получилось потому
- 00:16:43что нужно теперь взять эти поля
- 00:16:45привязать кью ай фил да мы это отдельная
- 00:16:48работа которую нужно сделать а здесь
- 00:16:50очень удобно любой источник данных где
- 00:16:51вы только пол получили возможность
- 00:16:53вклиниться в вашей 5 можете life http
- 00:16:56header с плагином каким-то другим
- 00:16:58плагином который позволяет вам
- 00:16:59вклиниться и вы можете чуть ли не из
- 00:17:01реальных страничек
- 00:17:02получить много примеров то есть вы в
- 00:17:04рамках ручного тестирования например
- 00:17:06что-то делается с не фреза трафик
- 00:17:08снимаете этот трафик смотрится отлично
- 00:17:10пришел какой-то джейсон возьму-ка я его
- 00:17:12к себе в тесты сохранили его прямо в
- 00:17:14джейсоне он горит круто все можем
- 00:17:16работать через и 5 вот это позитив то
- 00:17:19что дейта orient ot упрощения большое
- 00:17:21второе он гораздо быстрее ну то есть не
- 00:17:23надо запускать браузер не надо там ждать
- 00:17:26дополнительного времени пукает все
- 00:17:27стартанет страница загрузится то есть
- 00:17:30все прямо идет под капотом
- 00:17:31позитив самый главный плюс это то что
- 00:17:35существует уже существующие инструменты
- 00:17:37которые позволяют очень легко такого и 5
- 00:17:39клиента написать вот и
- 00:17:41и это просто здорово потому что если вы
- 00:17:44использовали нормальную документацию к
- 00:17:46своему и пишите пиши ну например
- 00:17:48разработчики использовали тот же самый
- 00:17:49swagger то у вас есть
- 00:17:51задокументированные пиа и вы берете
- 00:17:53swagger натравливает на него swagger
- 00:17:55caught ген выбирается тип клиента
- 00:17:58который вы хотите сгенерировать ваш язык
- 00:18:00программирования go у java java script
- 00:18:02даже упаси бог вот какой-то другой язык
- 00:18:05и он вам генри сразу готового клиента
- 00:18:07удобного sd с элем там и так далее если
- 00:18:10вы больше все-таки для тестов мы не
- 00:18:12значит не просто клиент извне нам не
- 00:18:14нужен retrofit 2 который потом с вами
- 00:18:16голову с этими кубиками вот я надеюсь
- 00:18:19кто-то хоть понимает о чем я говорю но
- 00:18:21тем не менее вот нам все-таки если мы
- 00:18:23находимся в тестах то нам наверное
- 00:18:26хотелось бы иметь что-то приближенное к
- 00:18:28тестам к тестам лучше наверное выбор это
- 00:18:30использовать какие-то тестовые клиенты
- 00:18:32например с ашуры хороший выбор с
- 00:18:35недавней версии swagger коллаген
- 00:18:36поддерживает 300 should вы можете
- 00:18:38спокойненько генерить клиента нарисую у
- 00:18:41вас получается красивый доменный клиент
- 00:18:44то есть вы потом приходите и говорите
- 00:18:45пошли пожалуйста запросов на такой и 5
- 00:18:47прим вот вызывается java методы
- 00:18:49передается туда объекты готовы там и так
- 00:18:52далее как это соединить вот с тем что у
- 00:18:54нас была у нас был помните джейсон мы
- 00:18:55где откуда взяли джейсон нет ничего
- 00:18:58проще у вас есть обжиг mapper через
- 00:19:00джексон натравливаете его на джейсон
- 00:19:02горит восстановим не этот объект и вас
- 00:19:04объект прямо появляется это же круто в
- 00:19:06этот объект потом через прямо java и пео
- 00:19:08или другой 5 прим вызвали вызов у вас
- 00:19:11исчезает весь http то есть выше
- 00:19:13используя клиента генерить генерят яся
- 00:19:15тулы
- 00:19:15ну вот получается прямой вызов классно
- 00:19:18удобно надежно нету никаких проблем и 5
- 00:19:21поменялся вы перегенерировать
- 00:19:25на минимум усилий то есть автоматически
- 00:19:28ставится просто генерацию после того как
- 00:19:30и любые изменения выпивая делаются перри
- 00:19:32генерируется если что у вас произойдет
- 00:19:34ошибка компиляции если ошибка компиляции
- 00:19:37круто да вы сразу посмотрели год акаши
- 00:19:39опять поменялся не надо отлавливать
- 00:19:41флажок появился какой то вы его ним не
- 00:19:43знаете или поле поменялось а вы
- 00:19:45посылаете старый name вот это супер
- 00:19:47преимущество вот это существующие
- 00:19:49инструменты но есть минусы во-первых
- 00:19:52нужен айпи и самый главный минус но сама
- 00:19:56еще более главный минус это же я
- 00:19:57рассказывал когда выше 5 хорошо
- 00:19:59задокументирован
- 00:20:00есть дар парадокс хорошо документирована
- 00:20:02это я чтобы хорошо задокументированы 5
- 00:20:05существовал его должен кто-то хорошо
- 00:20:06задокументировать вот такой казалось бы
- 00:20:09да немыслимый парадокс вот и этот кто-то
- 00:20:12должен понимать как его хорошо
- 00:20:14задокументировать это такой следующий
- 00:20:17вывод и таких людей возможно у вас нет в
- 00:20:19команде и ваши разработчики возможно так
- 00:20:22не умеют вот поэтому тот плюс который по
- 00:20:24идее должен был быть для вас работать не
- 00:20:26факт что это сработает именно для вас то
- 00:20:28есть вот то что у вас есть хороший
- 00:20:30чистый красивый 5 это вам хорошо это это
- 00:20:34очень позитивный момент тогда на уровне
- 00:20:36это я очень классно можно это используя
- 00:20:39следующая минус это мы уже не black box
- 00:20:42мы уже грей бокс мы уже знаем что на
- 00:20:44самом деле когда жмется кнопочка
- 00:20:46registration
- 00:20:47надо на самом деле сделать там два
- 00:20:49действия например надо послать
- 00:20:51один вызов вот туда один вызов вот сюда
- 00:20:54если потом кто-то придет и на кнопочку
- 00:20:56на эту привяжут еще третий вызов но при
- 00:20:58этом уже что-то право лидировать то мы
- 00:21:00можем ни фига об этом не узнать
- 00:21:02а раз мы об этом не узнаем то получится
- 00:21:04так что наше тесто выданы уже не совсем
- 00:21:06правильно то есть их нужно был еще
- 00:21:08куда-то зарегать
- 00:21:09и вот эта самая большая проблема то есть
- 00:21:13идеального solution а никогда не будет
- 00:21:15но вы просто должны понять что если у
- 00:21:16вас это не ваш случай и у вас достаточно
- 00:21:18прозаично так называть тонкий клиент
- 00:21:20когда вот такой бизнес логики не
- 00:21:21хранится на клиенте это бизнес логика то
- 00:21:24есть если я завожу юзера то надо пойти
- 00:21:25еще куда то там его зарегать по идее это
- 00:21:28бизнес лойко должна была бы быть на
- 00:21:29сервере вот сервер должен был бы за это
- 00:21:31отвечать если оно у вас на клиенте и на
- 00:21:34клиенте у вас такой толстый клиент
- 00:21:35который делая часть бизнес-логики
- 00:21:37возможно вариант через и пиа не очень
- 00:21:39удачный для вас потому что вы будете
- 00:21:41часто падать из-за того что меняется
- 00:21:42бизнес-логика на клиенте
- 00:21:44но вот этом толстом клиенте вот и
- 00:21:47наконец это требует уже к dance skills
- 00:21:51которых у вас может не быть
- 00:21:53через его и все просто клип склад склад
- 00:21:55помнится там сколько всего методов если
- 00:21:57mode driver там и всего штук 10 наверное
- 00:21:59половину из них вы не знаете то есть
- 00:22:01клик и в виде кнопки все вот большинство
- 00:22:06этим пользоваться там все просто а здесь
- 00:22:09уже надо и пиа и вот я говорю там
- 00:22:11страшные слова которые старше там до
- 00:22:13джексон все это надо между собой
- 00:22:14завязать тоже надо кодировать никуда от
- 00:22:17этого не денешься генерация очень сильно
- 00:22:19позволяет упростить это то есть ваш уже
- 00:22:21готовая получается программная модель
- 00:22:22dth кей там куча всего
- 00:22:24но потом из этого все равно надо клепать
- 00:22:26вызовы если вы не знаете как клепать
- 00:22:29вызовы а еще и не знаете как это с
- 00:22:31генерит то печаль вот поэтому наверное
- 00:22:33это на этот вариант не для вас эти плюсы
- 00:22:36минусы присутствуют в обоих вариантах
- 00:22:38рассмотрены пойдем дальше то есть
- 00:22:41логично двигаться слева направо но мы не
- 00:22:43можем внутрь системы залезть внутрь всем
- 00:22:45это плохой вариант я его не буду
- 00:22:46рассматривать есть такие варианты делать
- 00:22:49плагин внутрь системы через которые
- 00:22:51управляя заводить данные есть и такие
- 00:22:53хаки
- 00:22:54я не привык приключениях не рассказывать
- 00:22:57будем считать что я вообще не упоминал
- 00:22:58эту тему потому что это плохой путь и вы
- 00:23:01потом нарветесь на очень много костылей
- 00:23:02но видео все записала на самом деле вот
- 00:23:05третий путь логичный и очень простой
- 00:23:07через из qu'elle то есть не смогли
- 00:23:09заставить этому ослу морковку сзади
- 00:23:12паромом наоборот спереди будем сзади вон
- 00:23:15мы идем через и сквер что логично ну
- 00:23:18подожди база данных есть если у вам кто
- 00:23:20такой так из кель только для реляционных
- 00:23:22базах есть на самом деле точно такие же
- 00:23:24инструменты один в один для новый сквер
- 00:23:26всех бананы то есть вообще нет никакой
- 00:23:28проблемы то есть идея в том что мы
- 00:23:30используем натуральный протокол для
- 00:23:31вашего хранилища который позволяет
- 00:23:33сбивать в него данные как это вообще
- 00:23:35выглядит обычно ну вот есть банальная
- 00:23:37square вот у нас есть за табличка бог у
- 00:23:40нее есть три колоночки юности
- 00:23:42insert and ebook 3 колоночки в люс
- 00:23:44travel usa все мега просто вот у нас
- 00:23:46объединили такие way to set the data
- 00:23:48сайт который нам нужен и говорим надо
- 00:23:50теперь его как-то вставить из кода нет
- 00:23:53ничего проще потому что если вы
- 00:23:54находитесь в каком-то более менее
- 00:23:56развитым языке программирования я не
- 00:23:58уверен что такое можно сделать через
- 00:23:59java script но
- 00:24:01из большинства языков программирования
- 00:24:02адекватных вы можете такое сделать то
- 00:24:05есть вот например в джаве вы можете
- 00:24:06просто пометить вы находитесь например
- 00:24:08spring будьте или подключили другую лигу
- 00:24:09с такими же свойствами вы просто над
- 00:24:11тестом ставится аннотация сквер и прям
- 00:24:14минимум от вас усилий требуется и он
- 00:24:16горит можно несколько и склеили
- 00:24:17перечислить это ответ всем людям которые
- 00:24:20скажут подождите
- 00:24:21так это же самый простой пример показан
- 00:24:23здесь бук и и не от кого больше не
- 00:24:26зависит ну типа бук сам по себе да это
- 00:24:28простой пример больше не влез бы просто
- 00:24:30по экран вот но на самом деле если вы
- 00:24:32пользуетесь вот у вас буки к ним к этим
- 00:24:34буквам у вас могут быть еще кто-нибудь
- 00:24:36там не знаю а второй этом к странице там
- 00:24:38еще что то то вы можете зависеть даже
- 00:24:40отдельными с гелями почему потому что
- 00:24:43вот здесь вот можно перечислить
- 00:24:44несколько искали про constraint и мы
- 00:24:47потом еще поговорим если кто-то не
- 00:24:48вспомнил вот это отдельный вопрос и я
- 00:24:51могу дальше делать очень прикольную
- 00:24:53штуку я могу дальше еще сказать а надо
- 00:24:55ли мне комитете изменения или нет ну то
- 00:24:58есть если например и нахожусь на
- 00:24:59системном to set который там на этой
- 00:25:01тесте которая тестирует
- 00:25:02там большой кусок систему то наверное
- 00:25:04хотел бы закомитить результаты
- 00:25:06если я нахожусь где-то внутри на
- 00:25:08ком-нибудь интеграционным компонентном
- 00:25:09тэсси в этом случае я хотел бы их
- 00:25:11откатить ну сделать rollback
- 00:25:13потому что мне бы не хотелось чтобы у
- 00:25:14меня два разных теста пересекались по
- 00:25:17данным помните самый простой способ
- 00:25:18чтобы они не пересекались я открываю
- 00:25:20транзакцию вставляю свои данные
- 00:25:22запускаю ту логику которая должна быть
- 00:25:24запущена на в транзакции вот она
- 00:25:27запускается все внутренние там сервисы
- 00:25:29все остальное готова так транзакций уже
- 00:25:30открыто мы не будем новой открывать
- 00:25:32запускается в этой транзакции в конце
- 00:25:34делали робок круто круто ну то есть все
- 00:25:37все все независимые не работает для всех
- 00:25:40случаев жизни потому что для некоторых
- 00:25:42случаях жизни вам жизненно важно
- 00:25:44закомитить потому что у вас на commit
- 00:25:46какая-то логика пример в определенных
- 00:25:48базах данных constraint и проверяются на
- 00:25:50комете не за комиссии constraint они
- 00:25:52проверились поэтому иногда это важно вот
- 00:25:56плюсы и минусы то есть получается что мы
- 00:25:58начинаем использовать внутреннюю с
- 00:25:59внутреннее состояние системы в чем оно
- 00:26:04заключается то есть с одной стороны
- 00:26:05получается мы получаем гибкость
- 00:26:07правильно то есть мы уже знаем четко как
- 00:26:09там под капотом все устроены мы горим
- 00:26:11так вот в эту табличку став одну запись
- 00:26:13вот здесь вот друг
- 00:26:14здесь под хоть и на самом деле мы
- 00:26:16возможно вообще уже не повторяем
- 00:26:18натурального дайте flow но зато это дает
- 00:26:20нам гибкость классно можем там каким-то
- 00:26:22образом даже оптимизировать свои
- 00:26:24действия 2 это самый быстрый путь
- 00:26:27помните через и piano было чуть лучше
- 00:26:30чем через войну всего ходила сквозь
- 00:26:32систему мы уже не ходим сквозь системы
- 00:26:34уже прям сто раз заливаем
- 00:26:36то есть по скорости работы это самый
- 00:26:38классный путь то есть вот вы прям
- 00:26:39идеально в самый так сказать нужны им
- 00:26:42нужно место засунули вот и прямой доступ
- 00:26:46к данным то есть вот прям к плоским
- 00:26:48данным к сырым данным то есть вам не
- 00:26:50надо выдумывать там как их encrypted не
- 00:26:52encrypted вы вообще полная свобода у вас
- 00:26:55да вы всю бизнес-логику обошли и
- 00:26:57вставляется просто данные но за большую
- 00:26:59гибкость приходится чем-то платить
- 00:27:00давайте посмотрим чем в данном случае
- 00:27:02заплатим это уже white box со всеми
- 00:27:05вытекающими
- 00:27:06то есть если мы не разобрались как
- 00:27:07работает система то печально мы вставили
- 00:27:11в одну табличку надо было ставить в
- 00:27:12другую и у нас все поломалась кто то
- 00:27:15поменял кусочек бизнес-логики которые
- 00:27:17теперь вставляет и в другую табличку и
- 00:27:18нас все поломалась поэтому вот этот вот
- 00:27:21white box to sing требует большей
- 00:27:23интеграции с разработчиками то есть
- 00:27:26требует того чтобы разработчик это меня
- 00:27:27он тоже знал где у вас завязка по данным
- 00:27:31и он точно знал куда надо еще заставить
- 00:27:33изменения или вы точно знали участвуя в
- 00:27:35кадре view в в обсуждение задач
- 00:27:37что о будет меняться структура базы
- 00:27:39данных я был на дизайн сессии кто был на
- 00:27:42вчерашнем моем докладе до ходить на
- 00:27:44дизайн сессии и там горит у мы поменяем
- 00:27:46структуру базы данных высоко любому
- 00:27:47отличную надо поменять у меня в тестах
- 00:27:50не сделали так извините это недостатки
- 00:27:53white box а если вы не знаете как
- 00:27:55устроена система изнутри вы не можете
- 00:27:57эффективно этим пользуется зато
- 00:27:59молниеносно то есть хоп и вставили
- 00:28:00данные вот следующая интересная проблема
- 00:28:03это кеширование то есть данные которые у
- 00:28:06вас в апликэйшен находятся они
- 00:28:08кешируется и таким образом получается
- 00:28:10выданные вставили они записывались самом
- 00:28:12приложении и надо как-то в этот кэш еще
- 00:28:15сбоку войти
- 00:28:16а мышц систему не хотели нарушает то
- 00:28:18есть мы не хотели каким-то образом в нее
- 00:28:20вклиниваться и тут начинается много
- 00:28:21интересных моментов обходится эта тем
- 00:28:24хорошей практикой чтобы каждый дэйтасет
- 00:28:26каждый тест и mills
- 00:28:27мой выделенный дэйтасет тогда получается
- 00:28:30вы не попадёте на хеширование но блин
- 00:28:32это сложно потому что ну пересечение по
- 00:28:35банальным каким-то вещам начинаются и
- 00:28:37потом начинается эфемерная проблема вот
- 00:28:39про одну такую мерную проблему андрей
- 00:28:40солнце вчера рассказывал своем докладе
- 00:28:42когда они долго ловили где этот кэш у
- 00:28:44них как вдруг на выращивался хороший
- 00:28:48принцип
- 00:28:48вот который помогает от этой проблемой
- 00:28:50избавиться это в тестах стартовать без
- 00:28:52кэша то есть вот вы когда вы запускаете
- 00:28:55ваш и тест это выглядит кэш должен быть
- 00:28:57выключен но тогда получается вы
- 00:28:59тестируется не совсем то что будет
- 00:29:01работать для конечного пользователя ведь
- 00:29:03опять трейдов
- 00:29:03то есть побороть можно но минус
- 00:29:06достаточно большое вот и наконец нужно
- 00:29:09это поддерживать
- 00:29:10то есть вот все интер ты которые вы
- 00:29:12вставляете представьте вас много data
- 00:29:14set of и у вас во всех дата сетах как-то
- 00:29:16называется колонка например name кто-то
- 00:29:18пришел в базу данных и горит теперь эта
- 00:29:20колонка будет называться full name
- 00:29:21все надо пойти во все datasette и
- 00:29:24аккуратненько везде все поменяю то есть
- 00:29:26за саппорт надо будет платить это не of
- 00:29:28the genie решаясь а штука это не очень
- 00:29:30удобно вот ну и наконец слишком много из
- 00:29:33киля то есть каждый раз когда вы пишите
- 00:29:35что-то выпишет это insert in тут-то и
- 00:29:37болт amd этот плюс этого простенький
- 00:29:40вариант привел да будет еще сложные
- 00:29:42варианты где еще куча куча всего вот это
- 00:29:45слишком как бы verbo us то есть такое
- 00:29:47слово слишком многословно что ли есть
- 00:29:50способ чуть лучше то есть вы можете
- 00:29:51следующий способ это использовать ровно
- 00:29:54на том же уровне только с помощью
- 00:29:55инструментов позволяющих оперировать
- 00:29:57чуть более высокого уровня абстракции то
- 00:30:00абстракция называется дэйтасет такая
- 00:30:02абстрактная абстракция то есть у вас был
- 00:30:04прямо сквер который говорил это просто
- 00:30:06набор sql statements
- 00:30:07а теперь мы будем говорить про дэйтасет
- 00:30:09и для этого существуют вот тебе юнит со
- 00:30:11всеми его дополнительными библиотеками
- 00:30:14написанными вокруг него что это
- 00:30:15позволяет нам сделать это позволяет нам
- 00:30:17предыдущий гель превратить вот в такую
- 00:30:19штуку у нас появляется datasette это xml
- 00:30:22там потом уже поддерживается джейсон там
- 00:30:25же подержится ямал там же поддерживаться
- 00:30:27сизве любой формат который вы захотите
- 00:30:29важно то что мы имеем мета информацию
- 00:30:31эта информация вот тут это что это
- 00:30:33дэйтасет что это у нас табличка который
- 00:30:36называется бук у нас есть колоночки
- 00:30:38которые называются полями и дальше у нас
- 00:30:40куча всего осталь
- 00:30:41новак примеру у нас может подключаться к
- 00:30:43деби юнит уточнение где бью не так x и
- 00:30:45мальком которым и генерим можно
- 00:30:47сгенерить схему мы можем взять схему
- 00:30:49база данных и сгенерить xml схему
- 00:30:51подсоединив xml схему к нашим xml к мы
- 00:30:54можем получать прямо выдает вор нинги по
- 00:30:56поводу того что колонка называется уже
- 00:30:58не так как она называется в базе дано вы
- 00:31:00сквере мы бы никогда не фига такого не
- 00:31:02видели вот можно вы съели добиться
- 00:31:05такого же если вы все искали
- 00:31:06зарегистрируйте подсоедините где это
- 00:31:08соусу в правильном и д.е.
- 00:31:09скажите вот эти с келли на самом деле
- 00:31:11написано вот для того datasource а тогда
- 00:31:13вы получите такую же ситуацию для xml я
- 00:31:15ну прям разруливаются на уровне вот
- 00:31:18схемы мало этого вы можете еще на
- 00:31:20уровень сборки вставить файл если вы
- 00:31:22пытаетесь собрать xml в котором есть
- 00:31:24выглядит он ее ошибки и в этом случае
- 00:31:27вот вы пытаетесь собрать ну вернее
- 00:31:28извини данные поменялись как бы надо
- 00:31:30пойти по меня плюс рефакторинг очень
- 00:31:32простой потому что теперь это xml и
- 00:31:35инструментарий для xml вы да я гораздо
- 00:31:38шире чем для и склеили то есть вы можете
- 00:31:40сказать эй поменяем не это тыква всех
- 00:31:43xml и она взяла поменяла во всех xml ах
- 00:31:46это удобно то есть можете схему просто
- 00:31:48применить сказать поправь и она поправит
- 00:31:50автоматически вплоть до того что вы
- 00:31:52можете настроить плагин который следит
- 00:31:54за изменениями и который поправляет за
- 00:31:57вас то есть вы например говорится
- 00:31:59отслеживая изменения в схеме если
- 00:32:01изменилась схема то будь добр и
- 00:32:02скорректируем немой xml но это опасный
- 00:32:05плагин потому что с ним можно много бед
- 00:32:08натворить вот как-то на выглядит тест
- 00:32:10тест выгляд мега просто это мы сейчас
- 00:32:12находимся на юнит интеграционных тестах
- 00:32:14я проставляю просто аннотацию дэйтасет и
- 00:32:16ведь вот но их самолет кусалась всем
- 00:32:20мега-мега просто могу несколько указать
- 00:32:22через запятую если я нахожусь в и пео
- 00:32:26или системных тестов то все ровно то же
- 00:32:27самое чуть-чуть сама сложности с
- 00:32:29получением baby юнита это уже детали
- 00:32:31java и spring будто но в остальном все
- 00:32:34то же самое дэйтасет и где лежит
- 00:32:36дэйтасет и вот тут еще стратегия то есть
- 00:32:39мы можем указать разную стратегий в
- 00:32:41данном случае я использую стратегию
- 00:32:42inserto
- 00:32:43то есть я добавляю всегда данные мою
- 00:32:45могла быть стратегия
- 00:32:47refresh то есть если такие данные уже
- 00:32:49есть просто за рефрешах
- 00:32:50могла быть стратегия апдейт это значит
- 00:32:52что за апдейта что чего то что есть а
- 00:32:55оставшаяся вставь то есть уже можно
- 00:32:57какими-то стратегиями управлять значит
- 00:33:00мы на этом дополнительном уровне
- 00:33:02абстракции что получили во-первых мы
- 00:33:04получили большой кусок инструментария
- 00:33:06который вокруг baby you не то есть то
- 00:33:08есть сразу вот это xml и к нему xml
- 00:33:10схемы вот эти красивые аннотации которые
- 00:33:13можно использовать гибелью нет очень
- 00:33:15старый инструмент он у него и библиотеки
- 00:33:17интеграционной есть для любого языка
- 00:33:18программирования не уверен насчет гоу
- 00:33:20только да потому что там чуть специфика
- 00:33:23и другая но вот для всех традиционных
- 00:33:25назову такс традиционной ориентация
- 00:33:27языков программирования вот там
- 00:33:29поддержка тебе юнита есть и она уже
- 00:33:31достаточно старая то есть просто мета
- 00:33:33информация меняется вот мы получаем
- 00:33:36удобный формат xml куда удобнее чем
- 00:33:38испей в этом плане мы получаем маленький
- 00:33:40сфокусированы дэйтасет и которые можем
- 00:33:43комбинировать между собой и самого
- 00:33:45лидирующая ну и наконец мы можем очень
- 00:33:47гибко управлять constrain to me потому
- 00:33:49что вот в этих обертках вокруг baby you
- 00:33:51не то есть замечательные механизмы
- 00:33:53отключение constraint а то есть можно
- 00:33:55например сказать я не хочу вставлять
- 00:33:56зависимые записи потому что я тестирую
- 00:33:59например только поиск по юзерам если я
- 00:34:01тестирую поиск по юзерам зачем мне там
- 00:34:03все дочерние записи яж тестирую просто
- 00:34:05поиск по юзерам по найму например я могу
- 00:34:07отключить на время моей транзакции
- 00:34:09constraint и вставить маленький дэйтасет
- 00:34:13который без constraint авто есть not
- 00:34:15налы отключены for некие отключены все
- 00:34:17отключена вставить его и после этого
- 00:34:19сделать то что мне нужно а после этого
- 00:34:22вернуть constraint и очень удобно
- 00:34:25функциональность очень простая но очень
- 00:34:27удобно минус и минусы те же самые white
- 00:34:30box
- 00:34:31стала только лучше с тем что мы
- 00:34:33чуть-чуть все-таки абстрагировались от
- 00:34:34самого из киля caching ничего не
- 00:34:37исправилась но я уже говорил как это
- 00:34:38лечить и поддержка ну тут тоже нужно
- 00:34:41будет поддержка только проще чуть-чуть
- 00:34:43она становится за счет вот
- 00:34:44инструментарий обвязки вокруг xml
- 00:34:47следующая очень хорошая интересная
- 00:34:50стратегия вы видите уже по-прежнему
- 00:34:52долгий москве льда то есть это дамб и
- 00:34:54дамбы это круто но когда вы начинаете
- 00:34:57работать с дамбами то ваша жизнь
- 00:34:59превращается в ад
- 00:35:00потому что выдам сняли а потом как его
- 00:35:03поддерживать ни хрена не понятно потому
- 00:35:05что вы об этом не подумали вам нужен был
- 00:35:07а сейчас сейчас вы сделали дамп сняли
- 00:35:09загрузили
- 00:35:10чего-то там протестировали а как дальше
- 00:35:12будет непонятно нехорошая стратегия
- 00:35:14то есть лучше всего сделать какую-то
- 00:35:17более надёжную стратегию например у вас
- 00:35:19есть nexus как артефакт репозиторий или
- 00:35:22артефакт или любой другой артефакт
- 00:35:24репозитории куда вы publish все свои
- 00:35:26артефакты и у вас где-то там наверняка я
- 00:35:29надеюсь что мы сейчас 2018 году поэтому
- 00:35:32вы версии они руется схему базы данных
- 00:35:34то есть у вас нет одного гигантского
- 00:35:35файлика create и сквер вот который вы
- 00:35:37просто руками отслеживается изменения
- 00:35:39тут я надеюсь это уже ни у кого не
- 00:35:40осталось у кого еще так кто так живет
- 00:35:44стесняясь я бы тоже не поднимал руку на
- 00:35:46самом деле увидеть они не все стесняются
- 00:35:49есть еще такие но это на самом деле
- 00:35:51пережиток то есть по хорошим вы должны
- 00:35:53versio не ровать свою схему
- 00:35:54если вы версия нерусь эту эта схема
- 00:35:56где-то хранится правильная между сами
- 00:35:58файлики ваши схемы
- 00:36:00они могут храниться предположим в вашем
- 00:36:01jar ники вы смотрите у меня там сервис а
- 00:36:04схема вершин вся та денди биджара это
- 00:36:07может быть жар ник ваш просто jar и
- 00:36:08неважно то есть какой-то артефакт и он
- 00:36:10верси они равану то есть у него понятная
- 00:36:12какая версия это версия последняя вашей
- 00:36:14схемы и предположим что у меня уже
- 00:36:16каким-то образом откуда-то появился
- 00:36:19изначальный дам под он у меня тут в
- 00:36:21торгах версии 50 ну то есть это значит
- 00:36:25как его получил наверняка я поднял
- 00:36:26приложения версии 50 пошел через ю ай
- 00:36:29накликал мне там 100 юзеров не знаю там
- 00:36:32кучу у них комментариев там всего чего
- 00:36:34мне нужен накликал и сказал там ну и
- 00:36:37снял оттуда дам круто круто сзади повал
- 00:36:40его положил его в nexus вот для 50
- 00:36:42версии есть тут кто-то поближе 51 что
- 00:36:46должно произойти правильно должны
- 00:36:49запустится дженкинс жопы которая подымут
- 00:36:51в докер контейнеры эту в пятидесятую
- 00:36:54версию на котят на нее 50 первую
- 00:36:57миграцию даже здесь у вас мигрирует базы
- 00:37:00они просто тупо стирается
- 00:37:01вот 51 на котят и опять сниму дамб и
- 00:37:04положите его в nexus смотрите как
- 00:37:07замечательно и вы получали версию 51
- 00:37:09теперь вы если захотели поднять свое
- 00:37:11приложение версии 51
- 00:37:13вы подымаете беря из nexus адам номер 51
- 00:37:16данные остались теми же вот структура
- 00:37:19данных которая ваша база она уже
- 00:37:21немножечко не то большое преимущество
- 00:37:23которое дает данный подход это что вы
- 00:37:25можете потом в любой момент времени к
- 00:37:27такому дампу подсоединить само
- 00:37:29приложение той же версии еда вбивать в
- 00:37:31него еще даны или подсоединю приложение
- 00:37:35такой же версии посмотреть отчётом с
- 00:37:37данными получилось это очень просто на
- 00:37:40самом деле то что я описал и благодаря
- 00:37:42этому вы получаете версии они раваны
- 00:37:43дампы для ваших тестов и что еще стоит
- 00:37:46отметить видите у меня тут дампы для
- 00:37:47разных типов тестов у меня могут быть
- 00:37:49дампы например для регрессии меня могут
- 00:37:52быть bump дампы для смоук тестов у меня
- 00:37:54бы могут быть дампы для низа для seo и
- 00:37:56то есть можно много разных дампов
- 00:37:58поддерживать не обязательно иметь
- 00:37:59одинаково но обязательно вот это вот
- 00:38:03синхронизация версии что мы получили мы
- 00:38:06имеем по-прежнему большой плюс суммы
- 00:38:08менеджер данные напрямую в базу данных
- 00:38:11но теперь они уже структурирован теперь
- 00:38:13я не могу разрушить этот я же их бил
- 00:38:15изначальным приложением то есть я
- 00:38:17получил вот этот плюс большой в отличие
- 00:38:19от когда я вставлял из крилем то есть
- 00:38:21она вбила сети данные должны жить по
- 00:38:23хорошему они валидные второе это
- 00:38:25по-прежнему быстро потому что
- 00:38:27восстановиться из маленького дампа
- 00:38:29особенно если вы подняли вашу базу в in
- 00:38:31memory режиме или подняли и инором диске
- 00:38:34то поднять из дампа этом мега быстрая
- 00:38:36операция
- 00:38:37вот при этом дам подготавливаться через
- 00:38:40юань
- 00:38:40это круто мы можем ручных тестировщиков
- 00:38:42ручных такое доброе слово от ручных
- 00:38:45тестировщиков попросить это сделать или
- 00:38:47попросить не знаю менеджеров и кого-то
- 00:38:49еще кто-то кто набьет данных туда
- 00:38:51изначально есть может любой набить через
- 00:38:53его и ходит вот и мы все это храним в
- 00:38:56артефакт репозитории с версиями со всем
- 00:38:58остальным то есть очень просто
- 00:39:00разруливать конфликты
- 00:39:01подбирать друг дружке версию короче все
- 00:39:03вот эти задачи становятся очень очень
- 00:39:04простыми вы даже можете такую штуку
- 00:39:06сделать
- 00:39:07а можно ли мне запустится на версии
- 00:39:09трехмесячной давности и посмотреть
- 00:39:12почему падают с ты мужчина проблем
- 00:39:14подняли трехмесячную версию подняли дам
- 00:39:16трехмесячной версии запустили и прогнали
- 00:39:18все тесты круто круто вот но есть минус
- 00:39:22и минусы небольшие но есть самый такой
- 00:39:25четки -
- 00:39:26уже сложно как то это все получается вот
- 00:39:29если раньше мы кому-то объясняли вы
- 00:39:30помните первый подход через ей открою
- 00:39:33айнов натыкал все годится тут уже
- 00:39:35какие-то версий дампы схемы апдейты то
- 00:39:39есть уже тяжелее объяснить как это все
- 00:39:40работает но ты много данных скрыто
- 00:39:43внутри в этих домах то есть не так четко
- 00:39:45становится видно что же там за данное на
- 00:39:47самом деле сидя следующий нужно в
- 00:39:49саппорт на уровне инфраструктуры то есть
- 00:39:51если у вас некому этим заниматься не и
- 00:39:53вот я только что назвал там какие-то
- 00:39:54слова дженкинс nexus и уже страшно
- 00:39:57звучит потому что никто этого не знает
- 00:39:58вот он наверное не очень хороший подход
- 00:40:01в этом случае наша поддерживать это все
- 00:40:03равно придется ну и требует каких-то
- 00:40:06навыков работы непосредственно с данными
- 00:40:08непосредственно с дамами из вашей базы
- 00:40:10данных что можно еще использовать еще
- 00:40:12можно использовать вот в этой области
- 00:40:13замечательный паттерн под названием
- 00:40:15блэкпул то есть что это обозначает
- 00:40:18не не обязательно грузить дам в тот
- 00:40:20момент когда он вам нужен то есть не
- 00:40:22обязательно тест приходит и говорит а
- 00:40:23дай-ка мне данных а мы горе мое ты
- 00:40:25знаешь нам нужно дам загрузить сидишь
- 00:40:27где пока загрузится дам вместо этого
- 00:40:29можно делать это в бэкграунде то есть
- 00:40:31представьте что вы загружаете роман
- 00:40:33несколько схем одинаковых и кто-то
- 00:40:36приходит горит ну давайте начнем с он
- 00:40:38горит отлично смотрит пузырит вот есть
- 00:40:41схема на котором можем работать отлично
- 00:40:42работаем на этой схеме
- 00:40:44эта схема заек спорилась вы абсолютно
- 00:40:47спокойненько подняли другую схему в
- 00:40:49бэкграунде
- 00:40:49а в это время другой тест работает с
- 00:40:51другой вашего темой вот это очень
- 00:40:54хороший подход он действует хорошо как
- 00:40:56для деби инстансов так и для каких-то
- 00:40:58тяжелых доменных объектов то есть вы
- 00:41:00какой тяжелый доменный объект создали
- 00:41:02он у вас базе хранится его нету смысла
- 00:41:04потом ну еще раз создавать вы его просто
- 00:41:07используется из пула и наконец последнее
- 00:41:09это вот что я называю дейдару то есть
- 00:41:12корни ваших данных
- 00:41:13это ваша ключевая сущность от которой
- 00:41:15потом растут все ваши данные то есть
- 00:41:17если это юзер все что связано с юзерам
- 00:41:19например гитхабе the repository все что
- 00:41:21связано с репозиторием еще где-то там не
- 00:41:23знаю в jiri the project все что связано
- 00:41:25с project am то есть вот это ключевая
- 00:41:27сущность от которой все зависит от
- 00:41:28который все потом расходится вот делая
- 00:41:30pulling на этом уровне очень легко потом
- 00:41:32писать ваши тесты ну и наконец из чего
- 00:41:35последний способ это использовать живые
- 00:41:37данные то есть вы пошли на
- 00:41:39на реальный nanostation ворман тупо
- 00:41:41взяли оттуда дамп это дамп
- 00:41:43восстанавливаете каждый раз для тестов
- 00:41:44какие у этого есть плюсы и минусы плюс
- 00:41:47естественно что это живые данные это
- 00:41:48класса ну то есть живые данные не всегда
- 00:41:51настоящие да то есть то что я настоящая
- 00:41:53юзера вбивают нету дополнительной
- 00:41:56подготовки потому что на лайве уже
- 00:41:58наверное данных при достаточно для
- 00:41:59любого вида теста если вам надо вставить
- 00:42:01там не знаю тысячу юзеров то на лаве вас
- 00:42:03могут быть миллионы юзеров и и все окей
- 00:42:05вот более реалистичные сценарии потому
- 00:42:08что есть кто-то кто вбил корявые данные
- 00:42:10есть кто-то кто там делал много
- 00:42:12транзакций кто-то мало транзакций то
- 00:42:14есть можно взяв из реальных данных и
- 00:42:16найдя правильной сущности с которыми
- 00:42:18работать можно на реальных примеров
- 00:42:20прогонять ваши тесты это классно то есть
- 00:42:22не просто на выдуманных она реально но
- 00:42:25до может быть большой
- 00:42:27это первая проблема я всегда смешит
- 00:42:29когда люди подход используют и горят мы
- 00:42:31сняли 100 гиговый там
- 00:42:33game то есть вы теперь для ваших
- 00:42:35функциональных тестов будете 100 гиговый
- 00:42:37дам каждый раз восстанавливать то есть
- 00:42:38явно вы сделали что-то не то значит надо
- 00:42:40брать сообщает этих данных не надо брать
- 00:42:42тогда все вот второе the security
- 00:42:45если у вас там хранятся кредитки телефон
- 00:42:48и e-mail и я один раз участвовал в
- 00:42:50проекте где один раз разослали около
- 00:42:53миллиона эсэмэсок на реальные номера в
- 00:42:56рамках тестов ну кто-то взял просто дам
- 00:42:58данных under я не знаю какие там телефон
- 00:43:00и запустим наш тестовый сценарий и
- 00:43:02запустили поэтому с этим надо быть очень
- 00:43:04осторожным и наконец пир миссии далеко
- 00:43:07не факт что у вас вообще есть доступ к
- 00:43:09лайвов то есть вы приходите таки отдать
- 00:43:11к нам слайго скачать базы данных у нас
- 00:43:13вы даже есть когда работал в помятом из
- 00:43:15такой пунктик кодов контакта что если
- 00:43:17вам кто-то предложит скачать слайго базу
- 00:43:20данных вы должны отказаться вот потому
- 00:43:24что ну как бы вы получаете
- 00:43:26дополнительную ответственность в виде
- 00:43:27живых данных которые крутятся в системе
- 00:43:29и бог его знает имеете ли вообще права
- 00:43:32смотреть эту информацию и вообще ее
- 00:43:34где-то используя поэтому вот тут вот это
- 00:43:36минус и зато в остальном большие плюсы
- 00:43:38вот я надеюсь что я с вами хоть чем-то
- 00:43:40полезным поделился и это изменит как-то
- 00:43:43вашу работу с
- 00:43:45с данными ваших конкретных тестах на
- 00:43:47разных уровнях и то что я хотел бы вам
- 00:43:50сказать напоследок
- 00:43:51что нельзя так взять просто и написать
- 00:43:53классный тест потому что у классного
- 00:43:56тестов а тот который независимый быстрый
- 00:43:59делая то что нужно может параллели со
- 00:44:02масштабироваться у него есть много вот
- 00:44:05таких вот критериев по которым не так
- 00:44:07это все просто сделать я надеюсь что тот
- 00:44:09инструментарий которым сегодня показал
- 00:44:11предоставил он вам в этом поможем это
- 00:44:14все что у меня есть для вас большое
- 00:44:16спасибо что пришли
- 00:44:17[аплодисменты]
- tests
- données
- automatisation
- Selenium
- consultant
- logique de test
- performances
- scalabilité
- conferences
- expertise