powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование private методов
25 сообщений из 215, страница 5 из 9
Тестирование private методов
    #40076710
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
mayton
пропущено...

А можно пример такого бага?
Ну из своего проекта я конечно приводить примеров не буду, ну вот что-то подобное, синтезированное:
1. Решили для упрощения бизнес логики явно писать в БД имеет ли пользователь доступ к объекту или нет (вместо того чтоб вычислять на лету). Написали миграцию, которая проставляет флаг=true если пользователю >18. Но оказалось, что есть исключение - страна, в которой доступ можно разрешать только с 16. И админам (у которых возраст может быть не указан) тоже разрешать.
2. Добавляем новую колонку, знаем что она not null. Сразу же проставили constraint (а след строкой заполняем данными), хотя в таблице есть строки.
3. ... и т.д.

Задачи миграции. Апгрейда версий. Или просто одноразовые скрипты - это штучный товар. Они делаются 1 раз в жизни
и исполняются один раз. И тестирование для них нужно особое. Я-б даже сказал это не периодическое тестирование
а эксклюзивное. Можно договариваться заранее с админами БД Oracle например о подготовке flashback сразу после
неудачной миграции. Вобщем все это напоминает полёт на луну. Неформализовываемое. И бесконечно сложное
по комплексности.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40076716
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Мы редко пишем на это тесты. Но если пишем - ну заполняем данными, затем запускаем миграцию, затем проверяем результат. Это больше для background миграций, которые идут длительное время. Для таких приложение должно поддерживать и старые, и новые данные.

А так.. как правило у нас есть дамп с прода - на нем куа тестируют вручную. Проходятся по своей тестовой документации, вспоминают что могли упустить, анализируют результат.

Вот это самое интересное. Обычный разработчик софта оперирует кодом. Данные для него либо - синтетические.
Которые он создает сам. В этом случае он должен фактически выполнить работу по наполнению БД насколько
чтобы покрыть максимум краевых кейсов своего запроса. Насколько сложна эта работа? Я думаю - соизмерима
с разработкой основной user-story.

Либо данные - продуктовые. Дамп с прода - тоже интересная задача. Во многих организациях ИБ
его просто не позволит сделать. Прод - слишком ценен. Для этого придумывают невообразимые
трансформации данных (отбеливание) с целью убить любую sensitive инфу и обезличить данные кастомера.
Это эпика. Мдя. Тут можно отдельный программный продукт создавать. Отбеливатель. Со своими настройками.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40076792
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Поскольку SQL является декларативным языком то он изначально декларирует свой результат.
Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции.
Но есть качественная разница между SQL и императивным языком. Это примерно как разница
между maven и gradle.


"Бойся своих желаний они могут исполнится" :-)
Так же и с SQL.
Ты получаешь то что запрашиваешь.
Но может оказаться, что запрос не правильный.
И возвращает не то что нужно.
Хотя страшнее когда он возвращает не только то что нужно и/или не всё что только нужно. :-)

mayton

Кроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает
другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест.


Вот поэтому и "двигают в народ" unit-test.
Т.к. проще написать такой тест, проще протестировать.
Да и инструментарий очень простой.

Другое дело интеграционные тесты.
Там как раз вылазит NP-полная задача (с комбинаторным взрывом) тестирования всех веток БЛ.
Поэтому интеграционные тесты не могут быть простыми.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40076811
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

Третий пример (еще реалистичней) - написали какую-то concurrent структуру данных. И вот тут попробуй еще написать тесты которые бы выявили многопоточные проблемы..

Это - еще сложнее. Я не знаю тестов которые доказывают что мультипоточный код не содержит к примеру дедлоков.
Была теория (кажется на базе сетей Петри) что подобные вещи доказывают делая преобразования матриц переходов
(transition matrix) для сети которая моделирует проблему. Но эта теория осталась в универах и я никогда не видел
чтобы хоть один разработчик ею пользовался. Зачастую только PROD-эксплуатация показывает что в мультипоточном
коде есть проблема.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40076819
mayton
Stanislav Bashkyrtsev

Третий пример (еще реалистичней) - написали какую-то concurrent структуру данных. И вот тут попробуй еще написать тесты которые бы выявили многопоточные проблемы..

Это - еще сложнее. Я не знаю тестов которые доказывают что мультипоточный код не содержит к примеру дедлоков.
Была теория (кажется на базе сетей Петри) что подобные вещи доказывают делая преобразования матриц переходов
(transition matrix) для сети которая моделирует проблему. Но эта теория осталась в универах и я никогда не видел
чтобы хоть один разработчик ею пользовался. Зачастую только PROD-эксплуатация показывает что в мультипоточном
коде есть проблема.
Ну сети петри не обязательны, но в целом да - эта проблема решается с помощью Model Based Testing. Сам я многопоточность никогда не тестировал (да и толком не писал, что уж там), но периодически слышу что такой подход применяют на практике.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077251
gmugar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а знаете ли вы, что концепции unit-test более чем 40 лет? (первые публикации по теме были в конце 70-ых прошлого века)
и как-то никто особо и не пользовался...

а почему так? IMHO, потому что @asv79 во многом прав: unit-test - не серебряная пуля.
1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимум
2. и даже покрытие в 100% не избавляет совершенно от других видов тестирования; не говоря о том, что есть целые классы задач для которых unit-test-ы бесполезны или очень слабо полезны (как и обсуждалось выше)

далёкий от IT бизнес, по сей день, не понимает зачем это надо (сталкиваюсь постоянно)

я подозреваю, что первый реальный пропагандист: Kent Beck.
он написал о них в своей мега популярной книге( и он же, к слову, создатель JUnit)
оно и понятно: в контексте Agile unit-test-ы гораздо более ценны, потому что предполагается постоянный рефакторинг, а рефакторинг это как раз тот случай где unit-test-ы реально полезны.

но что прикольно: даже среди Agile евангелистов не все разделяют восторженное отношение к unit-test-ам (Dave Thomas :
YouTube Video
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077277
gmugar1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимумЯ пока не встречал проектов в которых модульные тесты замедляли их.. Они оттягивают перевод конкретной задачи в тестирование, но не сроки сдачи самого проекта. Я правда возможно по-другому пониманию "хорошим покрытием".
gmugarдалёкий от IT бизнес, по сей день, не понимает зачем это надо (сталкиваюсь постоянно)Никогда этого не понимал.. Откуда бизнес вообще узнает про тесты. Это подноготная программиста, о них никому говорить явно не надо.
gmugarоно и понятно: в контексте Agile unit-test-ы гораздо более ценны, потому что предполагается постоянный рефакторинг, а рефакторинг это как раз тот случай где unit-test-ы реально полезны.Рефакторинг есть везде, не только в Agile. И сломать только что работающий функционал тоже можно везде. Не знаю почему бы модульные тесты были как-то связаны с Agile..
gmugarнесмотря на то, что лично я большой поклонник unit-test-ов, я признаю, что они нужны и оправданы очень не всегда(в особенности с 100% coverage)
Про 100% покрытие не спорю (речь же про line/branch coverage?). Но интересно когда модульные тесты будут не оправданы? Ну, кроме каких-то прототипов. Я на своей памяти не могу припомнить такой ситуации..
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077290
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gmugar

1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимум

Никто не ставит таких задач. Ни на одном проекте нам (к примеру) не заказывали процентовку покрытия. Это глупо.
Код - не одинаковый. Есть 20% особо важного кода, который представляет собой костяк логики. Его и надо
покрыть обязательно. Можное не 20. Можно 15 или 25 не суть важно. Главное что меньшая часть кода обладает
большим влиянием на качество продукта. Как по Паретто. А оставшиеся 80% это различного рода интеграции,
конфигурации, DSL языки и формальные процедуры оставшиеся от фреймворков. Их покрывать не нужно. Покрытие
особо ничего не даст а лишь усложнит поддержку тестов при эволюции.

Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию.
Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу
тесты (сверху вниз) и озвучиваем что на наших глазах происходит. Если применять Scala или JBehave(Java) или
Spock(Groovy) то некоторые стейтменты можно писать на таком DSL что будет выглядеть как английски текст.
Бизнес-аналитики такое любят. Наглядно. И реально работает.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077364
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
mayton
Поскольку SQL является декларативным языком то он изначально декларирует свой результат.
Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции.
Но есть качественная разница между SQL и императивным языком. Это примерно как разница
между maven и gradle.


"Бойся своих желаний они могут исполнится" :-)
Так же и с SQL.
Ты получаешь то что запрашиваешь.
Но может оказаться, что запрос не правильный.
И возвращает не то что нужно.
Хотя страшнее когда он возвращает не только то что нужно и/или не всё что только нужно. :-)

mayton

Кроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает
другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест.


Вот поэтому и "двигают в народ" unit-test.
Т.к. проще написать такой тест, проще протестировать.
Да и инструментарий очень простой.

Другое дело интеграционные тесты.
Там как раз вылазит NP-полная задача (с комбинаторным взрывом) тестирования всех веток БЛ.
Поэтому интеграционные тесты не могут быть простыми.

интеграционные тесты как по мне полная куйня- какая та ситнтетика ,обвешаная моками
лучшие тесты как я уже выяснил это адекватно настроеный пайплайн ,наличие тест стенда и пары хороших макак на должности QA ,умеющих тыкать в постман
а все вот это джава тестирование ну оно вроде бы кто то сказал что нужно - а зачем уже давно забыли,как по мне просто юзлес хрень- у нас весь код в тестах ,coverage 90% и в реальности - разрабы только тратят время на актуализацию,а тестировщики потом находят все баги
поэтому как только я где то стану лидом) я тут же выпилю все тесты ,разгружу разрабов от поддержки и написания этой куйни ,а на высвободившиеся деньги найму пару QA макак их пту)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077365
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton


Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию.
Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу
тесты (сверху вниз) и озвучиваем что на наших глазах происходит..

Полнейшая хрень- никогда по тестам ты реально не поймешь что в коде происходит,ибо как ты выше заметил тесты обычно покрывают 20-30%
Давно уже надо признать ,что тесты это ярмо- которое тянет на себе разраб,а вот зачем - большой вопрос
Мой ответ - ну типо так принято,мы так привыкли,а вдруг на проде что то вылезет))ну какие то вообще не состоятельные пруфы,а бизнес за это платит
Ни какие тесты никогда не исключат багов в вашем апе,по большому счету поддержка и написание этих тестов выливается в очень большие суммы с нулевым бизнес велью к сожалению
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077366
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

вот с 2 последними постами- на 100500% согласен.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077368
asv79поэтому как только я где то стану лидом)Я надеюсь что это случится не раньше чем лет через 10 (хотя в наше время в общем-то и младших разработчиков назначают от безысходности). А к тому времени, если повезет, еще многое в голове поменяется.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077369
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

сам автор кода и не подозревает, сколько может быть вариантов не учтённых им комбинаций, которые может ввести хороший юзер....
да и тестирование какого-то куска кода не гарантирует, что прошедший тесты код, в системе будет работать нормально.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077370
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
asv79,

вот с 2 последними постами- на 100500% согласен.

это моя боль и борьба с лидом - который упорно не понимает,что тратит ресурсы разрабов вникуда требуя покрытия и актуализации
по факту что сейчас мы имеем - какой то распухший пак с тестами,в который никто никогда не ходит,но при любом изменении там что то краснеет и ты идешь туда и начинаешь под свой код подкручивать эти тесты - вопрос ну и нах они нужны?
Я как выше говорил воспринимаю нормально только SLA тесты,где видна хоть какая то польза - типо да не проходим по откклику и тд
а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репе ну и нахой оно?какой то непонятный секс в извращенной форме
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077373
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
asv79поэтому как только я где то стану лидом)
Я надеюсь что это случится не раньше чем лет через 10 (хотя в наше время в общем-то и младших разработчиков назначают от безысходности). А к тому времени, если повезет, еще многое в голове поменяется.
Я не хотел говорить,но это уже случилось)
Вся тест помойка скоро будет выпелена,так как я вижу что 20% уходит на актуализацию,при нулевом бизнес велью)
Чего и вам советую- включайте голову и задавайте сами себе вопросы - когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользу
если чо я не бизнес)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077378
asv79а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репеЕсли у вас в тестировании активно используются моки, то да, это проблема. Но не проблема тестирования, а именно того как вы пишете тесты (и скорей всего - прод код тоже). В том виде как описано выше тестирование и правда большого смысла не имеет.
asv79Я не хотел говорить,но это уже случилось)Соболезную.. Но в целом на сегодняшний день это частая проблема.asv79когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользуНу в моем проекте это каждый день, но у меня очень уж сложная бизнес логика. На проектах по-проще это происходит реже, но все равно достаточно часто. Опять же - сильно зависит от их качества.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077381
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
asv79а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репе
Если у вас в тестировании активно используются моки, то да, это проблема. Но не проблема тестирования, а именно того как вы пишете тесты (и скорей всего - прод код тоже). В том виде как описано выше тестирование и правда большого смысла не имеет.
asv79Я не хотел говорить,но это уже случилось)Соболезную.. Но в целом на сегодняшний день это частая проблема.asv79когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользуНу в моем проекте это каждый день, но у меня очень уж сложная бизнес логика. На проектах по-проще это происходит реже, но все равно достаточно часто. Опять же - сильно зависит от их качества.
сложная бизнес логика это несколько маперов после кафка листенера?)
братишь у нас гораздо серьезней логика - просто поверь мне на слово- и все эти тесты себя не оправдывают- так как их поддержка стоит существенных денег- не знаю про ваш вариант,может у вас бесплатно люди работают или просто нихуа не делают ,а судя по тому,что ты на форуме 24/7 то так и есть ) то тогда да,но в любой серьезной конторе так не получится к сожалению и твои доводы становятся несущественными.Хотя я оговорюсь тесты у нас есть - но их бизнес велью стремится к абсолютному нулю,и дело тут не в написании тестов и не в логике ,а в самой системе тестов- ибо тесты тестируют уже написанное - а что новое - оно сразу ломается
отсюда простой вывод нах.. они?если сами тесты тупо подгоняются под код
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077382
asv79братишь у нас гораздо серьезней логика - просто поверь мне на словоЕсли бы я не видел твоих вопросов на этом форуме, может ты бы смог обмануть, ну или хотя бы заставить усомниться.. Но нет :) Излишняя самоуверенность будет сильно замедлять тебя в развитии (речь про годы )..
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077383
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
asv79братишь у нас гораздо серьезней логика - просто поверь мне на слово
Если бы я не видел твоих вопросов на этом форуме, может ты бы смог обмануть, ну или хотя бы заставить усомниться.. Но нет :) Излишняя самоуверенность будет сильно замедлять тебя в развитии (речь про годы )..
опять же ты кидаешь камень сам в себя,так как не способен к анализу- ведь вполне возможно,что я могу пилить свой собственный проект,который не имеет к моей текущей работе никакого отношения- тоесть твои утверждения заведомо ложны ибо ты должен их проверить,но так как ты плохой программист ,а судя по темам где ты учавствуешь- это так и есть,то тебе простительно.
Но между нами есть одно большое НО - я в теме два года и уже лид,а ты скорей всего кратно больше и до сих пор жуешь тут сопли)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077385
asv79ведь вполне возможно,что я могу пилить свой собственный проект,который не имеет к моей текущей работе никакого отношенияКакая разница, я ж не про тематику вопросов, а про уровень их сложности.
asv79я в теме два годаЭто очень заметно, я как раз про два года и думал, хех.. Именно к двум годам чаще всего появляется гонор (у тех у кого он появляется).
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077393
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
Это как в статистике автоводителей. В первые пол года вождения учащаются аварии. Чайники начинают думать что они профи)))
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077396
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
Без обид,вчера я немного пошутил,так что не воспримай всерьез.До лида мне еще далеко.
Ну по тестам- на данном этапе и из своего кругозора я вижу ,что они замедляют ,а толку от них нет.
Типичный тест- из кафки получаем сообщение и преобразуем его в нужные нам представления,другими словами маппер
И вот есть тест,который этот мапер покрывает.Ну вот и для чего он?Если из кафки придет не валидный меседж он не сможет дересеризоваться в объект того класса,который ты ожидаешь в листенере,если на твоей стороне поменялись представления,то у тебя падает тест и ты что идешь делать? правильно править тест,который подгоняется под новые свойства представления и все.
Тоесть ситуация когда этот тест реально покраснеет и нужно будет править не сам тест,а код- ну я таких ситуаций вообще не помню,зато на каждом дейли - ой ребята там тесты упали- актуализируйте)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077402
asv79, если интересно - заведи отдельную тему на это. Только распиши чуть подробней. А то я не понял кто генерирует сообщение и почему тест падает:
1. Если это внешняя система, то это круто что тест падает - он показывает что формат двух систем разошелся
2. Если это наши же тесты генерят, то не понятно почему они могут сгенерировать невалидное сообщение.. Или сообщение где-то захардкожено, и его забывают обновлять когда обновляется формат?
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077449
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
Тоесть ситуация когда этот тест реально покраснеет и нужно будет править не сам тест,а код- ну я таких ситуаций вообще не помню,зато на каждом дейли - ой ребята там тесты упали- актуализируйте)


Во-о-от для этого тесты и пишут!

Человек не может помнить всё.
И лучше пусть упадут тесты, чем упадет прод.

При актуализации тестов, может оказаться, что нужно будет поменять не только тесты.

Кроме того тесты это ещё один источник правды, после самого кода.

Ещё раз.
unit-test это инструменты разработчика для разработки.
Никому кроме разработчика они особо не нужны.
Пользу для бизнеса они приносят только в том смысле, что на дальней дистанции, разработчику легче работать с кодом.
На короткой дистанции это не так. Нужно время для написания кода тестов.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40077468
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton


Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию.
Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу
тесты (сверху вниз) и озвучиваем что на наших глазах происходит..

Полнейшая хрень- никогда по тестам ты реально не поймешь что в коде происходит,ибо как ты выше заметил тесты обычно покрывают 20-30%
Давно уже надо признать ,что тесты это ярмо- которое тянет на себе разраб,а вот зачем - большой вопрос
Мой ответ - ну типо так принято,мы так привыкли,а вдруг на проде что то вылезет))ну какие то вообще не состоятельные пруфы,а бизнес за это платит

Я не знаю как построена система взаимоотноешний у вас на проекте. Но у вас должно быть пристальное
и внимательное отношение к ошибкам на проде. Возможно ты - на зарплате и тебе безразлично,
терпит убытки владелец ПО или нет. Но очень хорошим карьерным трамплином будет - приближение
тебя самого к задачам и проблемам бизнеса. Если ты - чутко реагируешь на эти проблемы - то значит
достоин повышения. Если тебе - безразлично то твоё повышение может быть по возрасту лет или там
по внутренней аттестации я не знаю. В любом случае понимание рисков бизнеса и - страхование
от них это признак seniority.
...
Рейтинг: 0 / 0
25 сообщений из 215, страница 5 из 9
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование private методов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]