Оффтоп Konstantin Panphilov
4 077

Видео: стенд для автоматического тестирования приложений в офисе Mail.Ru Group

18 апреля вице-президент Mail.Ru Group Анна Артамонова опубликовала на своей странице в Facebook видео, на котором показан стенд в виде логотипа почтового приложения myMail с расположенными на нём смартфонами для автоматического тестирования. Редакция vc.ru попросила топ-менеджера рассказать, для чего нужен такой стенд и как он используется.

Анна Артамоновавице-президент Mail.Ru Group

В разработке есть такое понятие, как continuous integration, или непрерывная интеграция. Любое изменение, вносимое в проект, должно быть протестировано максимально быстро и не должно привносить ошибки. Такой подход позволяет минимизировать или вообще исключить баги и сократить время разработки новых фич или изменений в продукте.

Сейчас для автоматизированного тестирования приложений Mail.Ru и myMail мы используем более 60-ти различных смартфонов, на которых прогоняются регрессы после каждой сборки. Регресс — это и есть проверка, что ничего из старой функциональности не «отвалилось» при добавлении нового.

До последнего времени все эти смартфоны жили в тумбочке, но на днях к нам приехала красивая стойка, сделанная в духе визуального стиля myMail, и сейчас на ней расположено 20 устройств.

Изначально мы использовали Nexus 5 как оригинальные телефоны от Google, на которых все работало идеально. Позднее мы стали пробовать различные недорогие телефоны, на которых стоит стоковая операционная система с минимальным количеством расширений от производителя. Сейчас мы пришли к тому, что по соотношению цены и минималистичности операционной системы нам выгоднее использовать Fly.

В день мы тестируем в среднем 25 сборок приложения. Для каждой сборки выполняется около 500 UI-тестов и более 3000 unit-тестов. Для тестирования одной сборки на одном устройстве потребовалось бы около 900 минут.

{ "author_name": "Konstantin Panphilov", "author_type": "editor", "tags": [], "comments": 28, "likes": 13, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 15003, "is_wide": true }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15388' + '59599') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 15003, "author_id": 3, "diff_limit": 1000, "urls": {"diff":"\/comments\/15003\/get","add":"\/comments\/15003\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/15003"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

28 комментариев 28 комм.

Популярные

По порядку

Написать комментарий...
2

Какая-то китайская компания содержит более 1000 вечно включенных смартфонов, чтобы тестировать на них свои приложения.

Ответить
5

Мне кажется тут важнее подход к разработке ПО, а не количество телефонов. Не уверен что в России есть компании которые делают подобное. Судя по постоянным косякам яндекса там про такое пока не слышали )))

Ответить
0

Есть компании, которые держат тыщи телефонов с возможностью удаленного управления и веб-камерами, чтобы сдавать их в аренду другим для тестирования :)

Ответить
2

а на эти телефоны тоже в фоновом режиме накатывается амиго и майлруагент, а сотрудники потом удаляют это всё, грязно матеря свою альма-матер?

Ответить
2

А что за красный кружочек в верхней части каждого смартфона? Это они камеру что-ли заклеили?

Ответить

Комментарий удален

1

Возможно и так. Но разве пикселы в видеопамяти телефона могут отличаться по значениям в зависимости от освещения?

Ответить
0

Так и запишем: под iOS они вообще не тестируют (в ролике все телефоны на андроиде) :-)

Ответить
1

А раз на видео нет разработчиков, видимо и разработчиков не существует)

Ответить
1

Ну там один за стойкой прячется :-)

И кстати, на планшетах тоже получается они вообще не тестируют? :-)

Ответить
0

Планшеты плохо себя вели и были недостаточно красивыми и их оставили на старой тумбочке :)

Ответить
0

Может тогда подскажите, что это за красный кружочек в верхней части каждого смартфона?

Ответить
1

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

Ответить
0

Разработчики тоже вмурованы в эту красивую стойку ;-)

Внутри сидят.

Ответить
1

"непрерывная интеграция" ))) xех

Ответить
1

Автоматизированное тестирование, не автоматическое. Поправьте заголовок, пожалуйста.

Ответить
0

Непрерывная интеграция это как бы совсем не про это.

Милая девушка явно Фаулера не читала ;-)

Ответить
–1

Непрерывная интеграция это как бы как раз про это ;)

Хотя, возможно, вы читали Фаулера, того который Робби, что за Ливерпуль играл. Талантливый был футболист, согласен.

Почитайте, вместе поулыбаемся http://www.martinfowler.com/articles/continuousIntegration.html

Ответить
0

И вот еще.

http://martinfowler.com/bliki/FeatureBranch.html

см. "Continuous Integration"

Покажи мне, где здесь автотест и автодеплой.

Ответить
0

Уже читал.

Автоматизированная сборка и автоматизированное же тестирование != непрерывная интеграция.

Ты слышал звон, да не знаешь где он:

"Integration is primarily about communication. Integration allows developers to tell other developers about the changes they have made. Frequent communication allows people to know quickly as changes develop."

А теперь давай смеяться. Над тобой.

Ответить
0

" I've heard people say they are doing CI because they are running builds, perhaps using a CI server, on every branch with every commit. That's continuous building, and a Good Thing, but there's no integration, so it's not CI."

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

0

красиво

Ответить
0

Как считаете, сколько такая стоечка стоит (без стоимости трубок, лежащих на ней)?

Ответить
–1

Я думаю что ты уже все понял, поэтому начал читать и хаотично дергать цитаты ;)

1. Как можно сравнивать подход (Continious Integration) и процесс (Integration)???

2. Обратимся же опять в Фаулеру (не футболисту). Что же такое Continious Intergation если верить ему:

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.

Итак, это подход при котором команда интегрирует результаты работы в продукт на ежедневном базисе, каждая из этих интеграций автоматически собирается и тестируется. Основная задача подхода - маскимально быстро обнаружить проблемы и ошибки что даст возможность разрабатывать качественное ПО быстрее.

Это как бы то что говорит нам Анна и то что говорит нам Фаулер. Но в вашей вселенной это "совсем про другое"

3. Можем по пунктам разобрать Practices of Continuous Integration которые есть в оригинальной статье Фаулера, но из того что написано в материале выше следует что большинство пунктов присутствуют в явном виде(хотя это и не требуется).

Современные HR-технологии позволяют оценить кандидата в том числе по активности кандидата в социальных сетях и интернете по тому что они пишут. Не пишите на профессиональные темы, дайте себе шанс поработать, вот в рамблер вас возьмут, уверен ;)

Ответить
0

Смешно. Я статью Фаулера прочитал тогда, когда она вышла, то есть в начале 200х.

Яйца курицу не учат, слышал такую поговорку ?

Умничай сколько угодно.

Ответить
0

Стоечка с телефонами - ключевой компонент Непрерывной Интеграции ? Поясни, профессиональный ты наш ;-)

P/S В говноконторах не работаю

Ответить
0

Так непрерывная интеграция возможна без автотестов и автодеплоя или нет ?

Давай, отвечай.

Ответить
0

А вообще, с кем я спорю ?

Я свою первую программу написал в машинных кодах более 30 лет назад.

Ответить
0

Давайте резюмируем:

1. Вы правы потому что написали программу в машинных кодах более 30-ти лет назад
2. Вы прочитали статью написанную в 2006 году в начале 200х, как бы предвосхитив автора

Вопрос "А вообще, с кем я спорю ?" кажется действительно уместен...

Удачи вам, Андрей ;)

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления