Получи случайную криптовалюту за регистрацию!

Протестировал

Логотип телеграм канала @sqaunderhood — Протестировал П
Логотип телеграм канала @sqaunderhood — Протестировал
Адрес канала: @sqaunderhood
Категории: Технологии
Язык: Русский
Количество подписчиков: 1.88K
Описание канала:

Рекламу и анонсы не размещаю.
Авторский канал о качественной разработке ПО (процессы, тестирование, формальная верификация и спецификация).

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал sqaunderhood и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

1

1 звезд

0


Последние сообщения 6

2021-03-15 13:48:48
Коллеги поделились удобным способом представления результатов измерения производительности. Способ заключается в том, чтобы показывать обобщённые результаты выполнения тестов на цветовой карте (color map) с градиентами. По графику можно быстро оценить состояние продукта: много ярко красного - деградация производительности, много зеленого - наоборот, все ускорили, однотонный серый - нет изменений в результатах. На иллюстрации пример такого графика, сделанный с помощью matplotlib.
550 viewsSergey Bronnikov, edited  10:48
Открыть/Комментировать
2021-03-12 11:20:51 Использование SQLancer при разработке ClickHouse: написали свой драйвер для SQLancer, тестируют на сборках с включенный динамическим анализом (TSan, ASan, MSan, UBSan), нашли 200 багов и из них 191 уже исправлены.

https://clickhouse.tech/blog/en/2021/fuzzing-clickhouse/
547 viewsSergey Bronnikov, 08:20
Открыть/Комментировать
2021-03-12 10:52:46 Есть ли среди моих подписчиков студенты?

В этом году мы в Tarantool решили принять участие в Google Summer of Code. Для тех, кто не знает: это программа по поддержке проектов с открытым исходным кодом от Гугла. Как это работает: проекты, которые хотят принять участие в программе, описывают идеи для задач и подают заявку для участия. Гугл выбирает проекты для участия и публикует их список. Далее студенты (по условиям программы для участия нужно быть студентом или аспирантом) выбирают проекты и задачи, которые им будет интересно сделать, и подают заявки на участие в программе. Потом студенты все лето работают над выбранной задачей при поддержке менторов из проекта и к концу срока выполнения задачи предоставляют рабочий прототип или патчи. При успешном выполнении задачи студенты получают вознаграждение от Гугла (размер вознаграждения варьируется от места проживания, см. описание).

Мы потратили немало времени, чтобы выбрать самые интересные идеи. В основном это задачи, на которые у нас не хватает времени. То, что требует не только кодирования, но и предварительного ресёрча. В список попала и одна задача для тестирования LuaJIT. Дело в том, что Tarantool это не только СУБД, но и сервер приложений на Lua и LuaJIT это в буквальном смысле сердце Tarantool. С одной стороны LuaJIT популярен среди высоконагруженных приложений, а с другой стороны не так много людей, которые занимаются его разработкой. Мы используем ванильную версию LuaJit и максимально возвращаем свои изменения в основной проект. Для тестирования LuaJIT мы используем тесты из основного проекта, тесты интерпретатора Lua в реализации PUC Rio (которой Роберту Иерусалимски занимается) и из других форков (LuaVela например) и lua-Harness. И несмотря на наши старания есть примеры багов, которые наше тестирование пропускает. Поэтому есть идея по разработке рандомизированного теста с использованием технологий фаззинга и метаморфического тестирования. Тестирование LuaJIT это только одна из 22 идей, которые мы отобрали. Другие задачи относятся к поддержке SQL, движкам Tarantool и коннекторам.

До 29 марта студентам нужно выбрать проект и задачу для участия и в период 29 марта - 13 апреля подать заявку на участие.
709 viewsSergey Bronnikov, edited  07:52
Открыть/Комментировать
2021-03-11 17:21:39
Пример запроса в sqlancer
713 viewsSergey Bronnikov, 14:21
Открыть/Комментировать
2021-03-11 17:21:17 Профессор CMU Энди Павло организовал во время карантина серию докладов о различных СУБД от людей из индустрии.
Часть докладов посвящена тестированию СУБД. Я посмотрел каждый из них и напишу, что в них было интересного. Сегодня про два из них.

Доклад Performance Testing at MongoDB от David Daly, MongoDB.

Давид рассказывает о том, что они разделяют все тесты производительности на системные тесты (тесты для нескольких машин, запускаются в облаке), микробенчмарки (тесты для одной машины, запускают на выделенном пуле машин) и юнит-тесты на производительность (используют Google Benchmark, запускают часто на выделенном пуле машин). Потом рассказывает о трех вариантах подхода к мониторингу деградаций: оценка результатов человеком, автоматически с помощью пороговых значений, мат. методы, описанные в их статье. Для тестирования они используют свою собственную систему для непрерывной интеграции, написанную с нуля - Evergreen CI. Все тесты запускают с помощью Evergreen. (Выглядит она неплохо, но каждый раз когда я захожу туда она у меня сильно тормозит. Как они ею пользуются?) В докладе он ссылается на их статью про выявление деградаций Change Point Detection in Software Performance Testing, в которой в деталях описываются методы оценки регрессий при тестировании MongoDB, исходный код доступен.

Доклад Finding Logic Bugs in Database Management Systems от Manuel Rigger, ETH.

Доклад про тестирование SQL в общем и про SQLancer, автором которого Мануэль является, в частности. Я немного писал про SQLancer ранее. Если кратко это инструмент позволяет генерировать валидные SQL запросы, на которых сломались самые популярные СУБД (PostgreSQL, sqlite и т.д. См. полный список). Идея в основе SQLancer это подход Ternary Logic Partitioning (TLP). Хотел описать пример словами, но из картинки всё становится понятно гораздо быстрее.
725 viewsSergey Bronnikov, edited  14:21
Открыть/Комментировать
2021-03-11 10:57:59
Интересные результаты опроса за 2020 год о популярности SQA активностей в проектах в сравнении с 2017-2019 гг.
763 viewsSergey Bronnikov, 07:57
Открыть/Комментировать
2021-03-10 21:56:29 Платформа для фаззинга OSS Fuzz от Гугла стала ближе к миру энтерпрайза вместе с поддержкой кода на Java. В феврале компания Code Intelligence опубликовала с открытой лицензией код своего фаззера Jazzer. Помимо языка Java Jazzer ещё поддерживает Scala, Kotlin и Clojure. А сегодня Гугл анонсировал поддержку Java проектов в OSS Fuzz с помощью Jazzer.

Чтобы два раза не вставать. OSS Fuzz это только одна платформа для фаззинга и только для проектов с открытым исходным кодом. Для проприетарных проектов есть ClusterFuzz, на базе которого работает OSS Fuzz, и платформы от других компаний: Microsoft OneFuzz, сервис уже упомянутой компании Code Intelligence, FuzzBuzz.

https://google.github.io/oss-fuzz/getting-started/new-project-guide/jvm-lang/
870 viewsSergey Bronnikov, 18:56
Открыть/Комментировать
2021-03-06 18:35:27
Инициативная группа компаний организовала Mobile Native Foundation, в рамках которого планируется обмен опытом между инженерами в сфере разработки мобильных приложений. Недавно дискуссии стали публичными и там есть интересные треды. Например в треде про тестовую стратегию сотрудники компаний делятся данными о том, сколько у них тестов для самого большого мобильного приложения:

- Airbnb: 10K unit, 30K screenshot tests, zero UI & E2E
- Robinhood: thousands unit, 400 snapshot, 10-15 E2E
- Norstrom: 30K unit, 1,500 UI
- Shopify: 8K unit, 2K screenshot, 20 E2E
- Target: 10K+ unit

А в треде про культуру тестирования мнения об использовании BDD, TDD, покрытия кода, геймификации процесса тестирования.
909 viewsSergey Bronnikov, 15:35
Открыть/Комментировать
2021-02-24 17:57:22 За последнее время в Hypothesis (библиотека на Python для property-based тестирования) появились новые фишки, о которых я расскажу в нескольких следующих постах.

Гугл недавно опубликовал под свободной лицензией исходный код Аtheris. Это фаззер для кода на Python, он использует LibFuzzer и, как следствие, генерирует такие входные данные, которые максимимизируют покрытие кода, то есть это фаззер с обратной связью. Как пишут в анонсе, в 2013 году гуглеры организовались и начали писать фаззеры для внутренних проектов кода. В рамках этой активности и был создан Аtheris. Hypothesis позволяет использовать внешние фаззеры для генерирования тесткейсов (например на базе AFL - python-afl), и теперь есть интеграция с Atheris. В инфраструктуре oss-fuzz, в которой Гугл фаззит код открытых проектов, теперь появилась поддержка проектов на Python и туда уже добавили два модуля (ujson и urllib3), которые теперь регулярно тестируются с помощью связки Hypothesis и atheris. Все это говорит о том, что Hypothesis умеет генерировать тесты не только с использованием свойств, но и абсолютно случайными данными. Кстати нативная поддержка coverage-guided генератора была в самом Hypothesis, но её удалили в основном из-за проблем с производительностью в 2018 году (см. тикет).

Пример кода для тестирования с использованием Atheris и Hypothesis:

@given(obj=JSON_OBJECTS, kwargs=st.fixed_dictionaries(UJSON_ENCODE_KWARGS))
def test_ujson_roundtrip(obj, kwargs):
"""Check that all JSON objects round-trip regardless of other options."""
assert obj == ujson.decode(ujson.encode(obj, **kwargs))

if __name__ == "__main__":
atheris.Setup(sys.argv, test_ujson_roundtrip.hypothesis.fuzz_one_input)
atheris.Fuzz()

#непишитетесты, а лучше генерируйте их
425 viewsSergey Bronnikov, 14:57
Открыть/Комментировать
2021-02-24 17:09:21
Компания Gremlin опубликовала результаты опроса об использовании Chaos Engineering в 2021 году. Для доступа к полному отчету надо зарегистрироваться, на InfoQ есть краткая сводка. Я добавил скриншоты тех частей отчёта, которые мне показались наиболее интересными.
231 viewsSergey Bronnikov, 14:09
Открыть/Комментировать