Автоматизация тестирования продуктовой аналитики в мобильных приложениях / Блог компании red_mad_robot / Хабр

Автоматизация тестирования продуктовой аналитики в мобильных приложениях / Блог компании red_mad_robot / Хабр Аналитика
Содержание
  1. Минимальный набор скиллов начинающего аналитика:
  2. Основные навыки аналитика данных:
  3. Что должен знать и уметь аналитик данных
  4. Example проект
  5. Utm-pазметка рекламных кампаний
  6. Анализ поведения при оформлении покупки
  7. Анализ расходов
  8. Аргументы запуска
  9. Базовые сущности
  10. Безопасность данных
  11. Группировка каналов
  12. Диагностические уведомления
  13. Доработки со стороны ui-тестов
  14. Доработки со стороны приложения
  15. Заметки
  16. Как стать аналитиком данных и где этому учат
  17. Ключевые настройки ресурса
  18. Кто такой аналитик данных
  19. Лимит на количество хитов в ресурсе
  20. Личные качества
  21. Местоположение
  22. Обязанности аналитика данных
  23. Отправка событий
  24. Отчеты для мониторинга полноты и корректности сбора данных
  25. Отчеты по электронной торговле
  26. Поиск по сайту
  27. Получение списка отправленных событий
  28. Пользовательские отчеты по электронной торговле
  29. Проверки списка событий
  30. Реальный проект
  31. Рынок труда и будущее аналитики данных
  32. Сервисы отправки событий
  33. Сессии с количеством хитов сверх лимита
  34. Сколько зарабатывают аналитики данных в россии
  35. Сколько зарабатывают аналитики данных в сша
  36. Специальные оповещения на email
  37. Список исключаемых источников
  38. Таймаут сессии и кампании
  39. Тестирование аналитики ui-тестами
  40. Тестирование аналитики вручную
  41. Уровни параметров и показателей
  42. Фильтрация ботов
  43. Фильтры
  44. Часовой пояс
  45. Чем обычно занимается аналитик данных:
  46. Электронная торговля
  47. Эффективность продаж
  48. Эффективность товаров
  49. Краткие выводы
  50. Итоги

Минимальный набор скиллов начинающего аналитика:

  1. Работать в Google-таблицах, группировать, фильтровать данные — на ходу, без перекладывания из таблички в табличку.
  2. Уметь писать SQL-запросы.
  3. Изучить минимум один язык программирования: Python или R.
  4. Делать выводы и представлять результаты в виде интерактивных дашбордов (Tableau, Power BI).
  5. Разбираться в бизнес-процессах и понимать ключевые метрики анализа эффективности.

Инструменты, которые используют аналитики

Основные навыки аналитика данных:

  • Сбор и анализ требований заказчиков к отчетности.
  • Получение данных с помощью языка запросов SQL.
  • Применение в работе ключевых математических методов и основ статистики.
  • Очистка и трансформация данных с помощью Python.
  • Прогнозирование событий на основе данных.
  • Анализ результатов кампаний, исследований и тестирования продуктовых гипотез.
  • Способность создавать аналитические решения и представлять их бизнесу

А еще хорошие аналитики данных умеют работать с Big Data, проверять гипотезы с помощью подходов А/Б-тестирования и быть настоящими исследователями. 

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

Что должен знать и уметь аналитик данных

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

Example проект

iOS-проект, где используется автоматизированное тестирование аналитики UI-тестами. 

Это простое приложение, состоящее из двух экранов: вход и меню. События отправляются при заходе на каждый экран, при авторизации и при выборе пункта меню.

Тест, покрывающий все эти события:

import XCTest
 
final class AnalyticsTests: TestCaseBase {
    
    private let loginScreen = LoginScreen()
    private let menuScreen = MenuScreen()
    
    // MARK: - Login
    
    func testLoginSuccess() {
        launchApp(with: AppLaunchParameters(sendMetricsToPasteboard: true))
        
        analytics.assertContains(name: "open_login_screen")
        loginScreen.login(success: true) 
        analytics.assertContains("authorization", ["success": true])
    }
    
    func testLoginFailed() {
        launchApp(with: AppLaunchParameters(sendMetricsToPasteboard: true))
        
        analytics.assertContains(name: "open_login_screen")
        loginScreen.login(success: false)
        analytics.assertContains("authorization", ["success": false])
    }
    
    // MARK: - Menu
    
    func testOpenMenu() {
        launchApp(with: AppLaunchParameters(sendMetricsToPasteboard: true))
 
        loginScreen.login(success: true)
        waitForElement(menuScreen.title)
        analytics.assertContains(name: "open_menu_screen")
    }
    
    func testMenuSelection() {
        launchApp(with: AppLaunchParameters(sendMetricsToPasteboard: true))
        
        loginScreen.login(success: true)
        waitForElement(menuScreen.title)
 
        menuScreen.profileCell.tap()        
        analytics.assertContains("menu_item_selected", ["name": "Профиль"])
        
        menuScreen.messagesCell.tap()
        analytics.assertContains("menu_item_selected", ["name": "Сообщения"])
    }
}

Utm-pазметка рекламных кампаний

Следующее, на что стоит обратить внимание при настройке веб-аналитики — это выбор ручной либо автоматической пометки рекламных кампаний:

Если вы прописываете UTM-метки вручную, то нужно включить эту галочку, чтобы при поступлении трафика в ваш аккаунт приоритет отдавался кампаниям с ручной пометкой. При этом если в URL не указаны UTM-параметры, значения будут тянуться из автоматической пометки. Подробнее — в справке Google.

Анализ поведения при оформлении покупки

Аналогичная воронка есть и отдельно для чек-аута. Если при настройке вы пропишите шаги чек-аута, у вас будет вот такой отчет:

Здесь вы также можете создавать сегменты.

Анализ расходов

Далее вам необходимо проверить отчет «Источники трафика» — «Кампании» — «Анализ расходов». По умолчанию там доступны только расходы на google-кампании. Чтобы увидеть здесь статистику по остальным платным источникам, их нужно подключать самостоятельно. Это позволит сравнить ваши затраты на привлечение трафика и рентабельность разных источников и каналов.

Аргументы запуска

Я уже упоминал такие вещи, как:

ProcessInfo.processInfo.isUITesting
ProcessInfo.processInfo.sendMetricsToPasteboard

При запуске UI-тестов на аналитику будут передаваться два аргумента: –UI-TESTING и –SEND-METRICS-TO-PASTEBOARD. Первый показывает, что приложение запущено в режиме UI-тестирования. Второй — что приложению разрешено отправлять события аналитики в буфер обмена. Чтобы получить доступ к этим аргументам, нужно написать расширение для ProcessInfo:

import Foundation
 
extension ProcessInfo {
    var isUITesting: Bool { arguments.contains("--UI-TESTING") }
    var sendMetricsToPasteboard: Bool { arguments.contains("--SEND-METRICS-TO-PASTEBOARD") }
}

Базовые сущности

Представим событие аналитики в виде следующей структуры:

public struct MetricEvent: Equatable {
 
    public let name: String    
    public let values: [String: AnyHashable]?
 
    public init(name: String, values: [String: AnyHashable]? = nil) {
        self.name = name
        self.values = values
    }
}

Структура MetricEvent будет использоваться и в коде приложения, и в коде UI-тестов. Поэтому вынесем её в отдельный модуль — MetricExampleCore. Для этого нужно создать новый Target типа Framework.

Событие что-то должно отправлять, поэтому объявим соответствующий протокол:

import MetricExampleCore
 
/// Сервис отправки событий в аналитику
public protocol MetricService {
    
    func send(event: MetricEvent)    
}

В первой строчке импортируем модуль, в котором объявили структуру MetricEvent.

Безопасность данных

А теперь перейдем к настройкам Google Analytics. Первое, на что мы хотим обратить внимание — это безопасность данных. У Google есть множество сертификатов, которые подтверждают его способность надежно хранить ваши данные.

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

Например, вы работаете с рекламным агентством и предоставляете его сотрудникам 5-10 доступов на разные аккаунты. Затем вы прекращаете сотрудничество и забываете закрыть доступы. В результате они в любой момент могут посмотреть вашу статистику по сайту и рекламным кампаниям.

Чтобы такого не происходило, регулярно проверяйте и актуализируйте доступы в вашем Google Analytics. Сделать это можно на вкладке администратора, выбрав пункт «Управление доступом» на уровне аккаунта, ресурса или представления:

С помощью этой настройки вы можете предоставить каждому пользователю или агентству тот набор данных и права, которые считаете нужными.

Группировка каналов

В отчетах Google Analytics по умолчанию применяется своя группировка каналов. Трафик присваивается тому или иному каналу по внутренним правилам системы. Однако пользователи могут сталкиваться с тем, что большая доля трафика попадает в строку «Other» (другое). Это может быть 20% и более.

Естественно, бизнесу важно видеть и различать все каналы. Для этого мы рекомендуем сразу же настроить кастомную группировку, сократив до минимума трафик, который попадает в группу «Other».

Есть два варианта настройки: вы можете внести изменения в группировку по умолчанию (но исторически данные при этом останутся без изменений). Чтобы все данные (новые и исторические) были в едином формате, мы рекомендуем сразу создавать кастомную группировку каналов по своим собственным правилам. Эта настройка находится в рамках представления.

Диагностические уведомления

В правом верхнем углу Google Analytics есть значок колокола. Если кликнуть по нему, откроется окно с диагностическими сообщениями. Большинство пользователей не обращают на них внимания, тем не менее в ряде случаев они могут оказаться очень полезными.

Вот несколько примеров с уведомлениями об ошибках на сайте.

  • Превышение лимитов по хитам.
  • Неправильная интеграция с Google Ads.
  • Пропущены некоторые UTM-параметры в ваших кампаниях.
  • Наличие аномалий, например целей, для которых внезапно перестали регистрироваться конверсии.

Старайтесь проверять такие сообщения, особенно те, что помечены красным цветом — это самые критические ошибки.

Доработки со стороны ui-тестов

Теперь расскажу, как на стороне UI-тестов получить список отправленных событий из буфера обмена и проверить их.

Доработки со стороны приложения

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

Заметки

При каждом выливании нового функционала или критическом изменении на вашем сайте мы рекомендуем делать об этом заметки в Google Analytics. Потому что могут быть такие ситуации: прошло время и вы забыли, что два месяца назад вылили новый функционал, а потом заметили, что ваша статистика резко изменилась в худшую сторону.

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

Как стать аналитиком данных и где этому учат

67% специалистов по аналитике пришли в Data Science из других сфер. В основном это разработчики и маркетологи, но есть и неожиданные профессиональные бэкграунды: геммологи, звукорежиссеры и даже ядерные физики.

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

Ключевые настройки ресурса

В настройках ресурса есть поле «Отрасль», в котором указывается ваша сфера деятельности. Многие компании считают эту настройку неважной и игнорируют.

Однако, если не указать категорию бизнеса, вам не будут доступны шаблоны для создания целей в Google Analytics. Эти шаблоны разработаны с учетом специфики различных отраслей бизнеса (финансы, игры, недвижимость и т. д.). Если в аккаунте не указана отрасль, шаблоны отключаются.

Дополнительный анализ:  Workforce management system | Forward Telecom

Кто такой аналитик данных

Неверные решения при разработке нового продукта или функции сервиса могут стоить компании репутации и денег. Чтобы этого не произошло, компании обращаются к аналитику данных. Он собирает, обрабатывает, изучает и интерпретирует данные: проводит А/B-тесты, строит модели и проверяет, как пользователи и клиенты реагируют на нововведения. Это стоит дешевле и снижает риски бизнеса.

Такие специалисты особенно востребованы в data-driven компаниях — то есть тех, которые ориентируются в решениях на big data и аналитику данных.

Например, специалисты по данным Netflix вычислили популярность сериала «Карточный домик» с помощью аналитики: зрителям оригинального британского «Карточного домика» также нравились фильмы Финчера и (или) картины, где играл Спейси. Netflix объединили Дэвида Финчера (один из режиссеров House of Cards), политические интриги и Спейси в одном проекте.

Последние новости, актуальные события и нетворкинг в AgroTech-комьюнити — AgroCode Hub.Присоединяйся!

Лимит на количество хитов в ресурсе

Здесь же в настройках ресурса есть поле «Число обращений к ресурсу». В нем можно увидеть, сколько хитов передано с вашего сайта в GA за последний день, неделю и месяц. Обращайте внимание на эти данные, так как в бесплатной версии Google Analytics действует ограничение 10 млн хитов на ресурс в месяц.

Следите за тем, чтобы за последние 30 дней у вас не поступало больше хитов, чем позволяет GA. Сразу ваш ресурс не отключат, но если вы будете игнорировать это сообщение, и количество хитов превысит 30-50 млн, то такой риск есть.

Личные качества

Хороший аналитик данных — это не только метрики и отчеты. Вне зависимости от профиля, классный специалист должен обладать гибкими навыками, которые нужны для продуктивной работы:

  • Системное мышление и логика. Важно уметь анализировать, синтезировать, сравнивать и делать выводы из порой неочевидных закономерностей. Аналитик должен понимать, из каких предпосылок он исходит в своих суждениях, и проверять их корректность.
  • Внимание к деталям, методичность и рациональный скептицизм. Все результаты анализа должны быть проверены, перепроверены и обоснованы. Лучше уточнить непонятные детали и усомниться даже в самом авторитетном мнении, чем запустить ненужный продукт.
  • Вежливость, навыки общения и повествования. Аналитики общаются со специалистами из разных направлений: бизнес, ИТ, бухгалтерия и безопасность. Важно сохранять конструктивный и вежливый подход, не поддаваться на провокации и лоббировать интересы своего отдела.
  • Терпение. Пригодится при очередном письме «концепция изменилась, давайте посчитаем заново».
  • Прагматизм и деловой подход. Важно концентрироваться на тех вопросах, которые позволят улучшить показатели работы компании: увеличить доходы, сократить затраты, оптимизировать процессы.
  • Стремление учиться. Хороший аналитик любит узнавать новое и расширять свой кругозор.

Местоположение

В последнее время многие пользователи используют VPN для визита на сайт. Если вы зайдете в отчет «Аудитория» — «География» — «Местоположение» и увидите, что страны ваших пользователей сильно не соответствуют вашим ожиданиям, нет смысла ориентироваться на такие данные.

В таких случаях мы рекомендуем искать альтернативные способы сбора данных о регионе. К примеру, вы можете использовать кастомный параметр. Если на сайте есть возможность для пользователя самому выбрать, в каком городе и регионе он находится, передавайте эту информацию в пользовательские параметры (Custom Dimension):

Таким образом вы получите более корректную статистику без лишних шумов.

Обязанности аналитика данных

Рабочие задачи Data Analyst находятся на стыке математики, программирования и продакт-менеджмента. В результате его работы компания может получать больше прибыли и делать пользователей счастливее. Обязанности аналитика данных могут различаться в зависимости от места работы и уровня квалификации.

Как правило, такой специалист проводит статистические тесты и решает бизнес-проблемы, на которые пока ответа нет. Затем составляет прогнозы, стратегии, планы и рекомендации.

Отправка событий

Осталось объявить все события, которые будут отправляться. Для этого нужно написать расширение MetricEvent:

Отчеты для мониторинга полноты и корректности сбора данных

Давайте теперь посмотрим на отчеты в Google Analytics, которые необходимо мониторить, чтобы понять, насколько полную информацию вы собираете с вашего сайта.

Отчеты по электронной торговле

В отчете «Конверсии» — «Электронная торговля» — «Поведения покупателей» вы можете увидеть данные по взаимодействию пользователей с вашими товарами. Как часто они делают покупки, добавляют товары в корзину и т.д.

Если вы все корректно настроили на своем сайте, то увидите полную воронку пользователей. Первый шаг — это визиты на сайт, второй — просмотр товаров, третий — добавления товаров в корзину, четвертый — прохождение чек-аута (оформление заказа) и пятый — покупки.

Чем удобен этот отчет? Сразу на этой воронке вы можете создавать сегменты, которые затем отправлять в Google Ads для таргетирования на определенные аудитории. К примеру, если вас интересуют пользователи, которые бросили товар в корзине, вы можете создать аудиторию с этими пользователями и таргетировать на них определенные объявления либо письма.

Поиск по сайту

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

Параметр, который вводится в поле «Параметр запроса», можно узнать так: зайдите на свой сайт, введите запрос в строке поиска и нажмите ввод. В URL после вопросительного знака появится название параметра рядом с текстом запроса. Это значение может быть для каждого сайта разным. Если у вас на сайте несколько подобных значений, вы можете перечислить их через запятую (до 5 штук).

Получение списка отправленных событий

Чтобы получить текстовые данные из буфера, используем UIPasteboard.general.string. Затем строку нужно преобразовать в массив событий (MetricEvent). В методе decodeMetricEvents строка преобразуется в объект Data и десериализуется в массив с помощью JSONSerialization:

Пользовательские отчеты по электронной торговле

Когда вы пройдетесь по стандартным отчетам и убедитесь, что все окей, можно создать кастомный отчет и добавить в него ID транзакции и количество транзакций. И посмотреть, есть ли у вас дубли одних и тех же ID.

Если дубли есть, вам нужно провести техническую проверку и узнать, почему эти дубли передаются. Причины могут быть разные, к примеру, пользователь оформил заказ, оставил вкладку открытой и ушел. На следующий день открыл браузер, опять загружается эта страница и в GA опять уходит ID этого заказа.

Проверки списка событий

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

/// Проверяет наличие события с указанным именем
/// - Parameters:
///   - name: Название события
///   - count: Количество событий с указанным именем. По умолчанию равно 1.
func assertContains(
    name: String,
    count: Int = 1) {
 
    let records = extractAnalytics()
 
    XCTAssertEqual(
        records.filter { $0.name == name }.count,
        count,
        "Событие с именем (name) не найдено.")
}

В итоге получился класс AnalyticsTestBase. Посмотреть его можно на GitHub — AnalyticsTestBase.swift

Создадим класс, наследника XCTestCase, от которого будут наследоваться классы, тестирующие аналитику. Он создает класс AnalyticsTestBase для тестирования аналитики и метод launchApp, запускающий приложение.

import XCTest
class TestCaseBase: XCTestCase {
    
    var app: XCUIApplication!
    var analytics: AnalyticsTestBase!
    
    override func setUp() {
        super.setUp()
        
        app = XCUIApplication()
        analytics = AnalyticsTestBase(app: app)
    }
    
    /// Запускает приложение для UI-тестирования с указанными параметрами.
    func launchApp(with parameters: AppLaunchParameters = AppLaunchParameters()) {
        app.launchArguments = parameters.launchArguments
        app.launch()
    }
}

Метод будет принимать AppLaunchParameters (параметры запуска приложения, о которых я говорил выше).

struct AppLaunchParameters {
    
    /// Отправлять аналитику в UIPasteboard
    private let sendMetricsToPasteboard: Bool
    
    init(sendMetricsToPasteboard: Bool = false) {
        self.sendMetricsToPasteboard = sendMetricsToPasteboard
    }
    
    var launchArguments: [String] {
        var arguments = ["--UI-TESTING"]
        if sendMetricsToPasteboard {
            arguments.append("--SEND-METRICS-TO-PASTEBOARD")
        }
        return arguments
    }
}

В обычных UI-тестах приложение будет запускаться с параметрами:

AppLaunchParameters(sendMetricsToPasteboard: false)

А в UI-тестах на аналитику:

AppLaunchParameters(sendMetricsToPasteboard: true)

Теперь можно писать тесты на аналитику. Например, это тест на экран входа:

Реальный проект

Пример UI-тестов на аналитику экрана авторизации из реального проекта — LoginAnalyticsTests.swift

Пример, как мне, разработчику, помогли UI-тесты на аналитику. На одном проекте нужно было произвести рефакторинг и редизайн главного экрана приложения. Экран был сложным, с большим количеством событий аналитики. На тот момент в проекте я уже настроил тесты.

Рынок труда и будущее аналитики данных

Только за последние два года через направление Data Science Нетологии прошло более 3000 студентов, большинство из них работают на профильных позициях в российских и зарубежных компаниях. 

Со временем эксперты ожидают повышение спроса на аналитиков Big Data и представителей смежных специальностей. Чтобы оставаться востребованными, необходимо учиться и работать. 

По данным International Data Corp. (IDC), мировой доход от решений для больших данных и бизнес-аналитики (BDA) достигнет 260 миллиардов долларов в 2022 году при среднегодовом темпе роста (CAGR) 11,9 процента. В 2025 программные роботы будут выполнять большинство задач, таких как очистка и сбор данных, т.е. многие процессы станут более автоматизированными. К 2030 году Data Science уже не будет заниматься поиском и очисткой данных. Эту задачу возьмут на себя программные роботы.

В настоящее время технологии уже развиваются и достигают своих высот. Подумайте о будущем, когда искусственный интеллект будет в зените, машинное обучение — на пике, облако захватит рынок, а интернет вещей начнет проникать в большинство отраслей. Специалисту по данным потребуются лучшие навыки, будь то технические или социальные, чтобы быть востребованным к 2030 году.

Дополнительный анализ:  Роль бухгалтера-аналитика в принятии управленческих решений - Курс по бухгалтерскому управленческому учету -

Сервисы отправки событий

Этому протоколу будут соответствовать классы, отправляющие события куда-либо. К примеру, класс для отправки событий в AppMetrica:

import Foundation
import MetricExampleCore
import YandexMobileMetrica
 
open class AppMetricaService: MetricService {
 
    public init(configuration: YMMYandexMetricaConfiguration) {
        YMMYandexMetrica.activate(with: configuration)
    }
 
    open func send(event: MetricEvent) {
        YMMYandexMetrica.reportEvent(event.name, parameters: event.values, onFailure: nil)
    }
}

В нашем случае нужен класс, который отправляет события в буфер обмена. Создаем его:

import Foundation
import MetricExampleCore
import UIKit
 
final class MetricServiceForUITests: MetricService {
 
    // Массив всех отправленных событий аналитики
    private var metricEvents: [MetricEvent] = []
 
    func send(event: MetricEvent) {
        guard ProcessInfo.processInfo.isUITesting,
              ProcessInfo.processInfo.sendMetricsToPasteboard else {
            return
        }
        
        if UIPasteboard.general.string == nil ||
           UIPasteboard.general.string?.isEmpty == true {
            metricEvents = []
        }
 
        metricEvents.append(event)
 
        if let metricsString = try? encodeMetricEvents(metricEvents) {
            UIPasteboard.general.string = metricsString
        }
    }
 
    private func encodeMetricEvents(_ events: [MetricEvent]) throws -> String {
        let arrayOfEvents: [NSDictionary] = events.map { $0.asJSONObject }
        let data = try JSONSerialization.data(withJSONObject: arrayOfEvents)
        return String(decoding: data, as: UTF8.self)
    }
}

В методе send можно проверить, что приложение запущено в режиме UI-тестирования и разрешена отправка событий в буфер обмена. Затем в массив всех отправленных событий добавляется новое. 

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

// MetricEvent.swift
...
    /// Представляет событие в виде словаря для передачи в JSONSerialization.data(withJSONObject:)
    public var asJSONObject: NSDictionary {
        return [
            "name": name,
            "values": values ?? [:]
        ]
    }
...

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

final class LoginViewController: UIViewController {
    
    private let metricService: MetricService
    
    init(metricService: MetricService = ServiceLayer.shared.metricService) {
        self.metricService = metricService
        super.init(nibName: nil, bundle: nil)
    }
    ...

Чтобы не передавать каждый раз вручную эту зависимость, можно использовать паттерн Service Locator и создать класс ServiceLayer. В нем будет создаваться и храниться MetricService, который будет передаваться во все контроллеры.

import Foundation
import YandexMobileMetrica
 
final class ServiceLayer {
    
    static let shared = ServiceLayer()
    
    private(set) lazy var metricService: MetricService = {
        if ProcessInfo.processInfo.isUITesting {
            return MetricServiceForUITests()
        } else {
            let config = YMMYandexMetricaConfiguration(apiKey: "APP_METRICA_API_KEY")
            return AppMetricaService(configuration: config)
        }
    }()
}

Если приложение запущено в режиме UI-тестирования, то для отправки событий используется MetricServiceForUITests. В ином случае AppMetricaService.

Сессии с количеством хитов сверх лимита

Еще можно проверить кастомный отчет по доле сессий, которые достигают лимита по количеству хитов. Как вам известно, в рамках одной сессии GA позволяет отправлять до 500 хитов (в стандартной версии).

Все хиты сверх лимита GA фиксировать не будет. Поэтому, нужно проверить, реально ли пользователь в одной сессии совершил более 500 действий. Возможно, у вас собираются какие-то события, которые в принципе вам не важны. Если так, вы можете убрать ненужные вам параметры из кода на сайте, чтобы сократить этот показатель и не превышать лимит.

Обратите внимание, что для построения такого отчета, вам необходимо в кастомную переменную передавать ID сессии. Если вы не знаете, как это сделать, или у вас есть другие вопросы по настройке веб-аналитики, воспользуйтесь консалтингом от OWOX BI.

Сколько зарабатывают аналитики данных в россии

Зарплата будет зависеть от опыта и географии. Так, аналитик-стажер в Воронеже получает 25 тысяч рублей, а Data Analyst в московском офисе международной компании зарабатывает 200 тысяч рублей.

В Москве аналитик данных с опытом работы от двух лет в среднем зарабатывает 134 тысячи рублей. В Санкт-Петербурге такой же специалист может рассчитывать на 101 тысячу рублей в месяц. Стажеры и Junior-специалисты зарабатывают от 60 тысяч рублей.

Сколько зарабатывают аналитики данных в сша

Больше половины аналитиков готовы рассмотреть релокацию и работать за рубежом. Средняя годовая зарплата для аналитиков данных в США составляет $62 тысячи.

Больше всего на американском рынке труда востребованы Data Scientists. Это одна из самых высокооплачиваемых специальностей со средней годовой зарплатой в $130 тысяч. По прогнозам McKinsey, в ближайшие годы разрыв между предложением и спросом у специалистов в этой области составит 50%.

Специальные оповещения на email

Кастомные оповещения нужны для того, чтобы оперативно узнавать о критических изменениях в ключевых показателях вашего сайта. Для каждого бизнеса это могут быть разные KPI. Для ecommerce и ритейлеров — доход, для тех, кто не продает на сайте — просто трафик или целевое действие.

Определив ключевые метрики, вы можете настроить оповещение о критических изменениях. Например, сокращение либо увеличение дохода на определенный процент по отношению к предыдущему дню, неделе или месяцу. Для этого заходим в настройку «Специальные оповещения» и выбираем условия для отправки письма.

Есть одно НО! Если вы внимательно посмотрите на скриншот ниже, то увидите что проблема, о которой пришло уведомление, была 11 марта, а письмо пришло только 14 марта. От того, какой показатель вы выбрали при настройке — агрегированный или нет, зависит скорость отправки уведомлений.

Если вам такой вариант не подходит и вы хотите получать уведомления как можно раньше, вы можете использовать альтернативные инструменты. Например, выгрузить сырые несемплированные данные из GA в Google BigQuery, а затем настроить автообновление отчетов в Google Sheets на данных из Google BigQuery и их отправку на email.

У платной версии Google Analytics 360 есть автоматическая интеграция с облачным хранилищем (BigQuery Export). Настроив экспорт, вы будете получать в GBQ таблицу с данными за текущий день. Данные в ней обновляются каждые 8 часов. Соответственно, если критическое изменение случилось с утра, то только через 8 часов вы о нем узнаете.

Также Google Analytics 360 позволяет за дополнительную плату ($0.05 за 1GB) настроить передачу данных в Real Time. В таком случае информация в таблице GBQ будет обновляться каждые 15 минут, но в этой таблице не будут доступны некоторые параметры: 

Если вам не подходит Google Analytics 360, вы можете использовать OWOX BI, который также позволяет передавать данные с сайта в Google BigQuery практически в режиме реального времени. При этом варианте ваша таблица за текущий день будет обновляться в течение 15 минут. Кроме того, вы сможете увидеть в таблице данные о расходах на все ваши рекламные источники, чего нет в таблицах Google Analytics BigQuery Export.

Плюс у OWOX BI есть дополнительный параметр User OWOX ID, с помощью которого можно идентифицировать пользователя, побывавшего на ваших сайтах с разными доменами. То есть вы сможете понять, что это был один и тот же пользователь, без настройки кроссдоменного отслеживания.

Почему важно иметь данные, приближенные к реальному времени? Чтобы оперативно реагировать на критические изменения в ключевых показателях вашего сайта. Естественно вы не сможете следить за всеми отчетами в GA. Поэтому мы рекомендуем вам настраивать отдельные дашборды для каждой группы KPI и помимо этого настраивать еще и кастомные уведомления.

Открыв один дашборд, вы сможете увидеть в динамике, что происходит с вашим сайтом, по каким источникам просели доходы, увеличились расходы и т. д.

По ссылкам ниже вы найдете примеры дашбордов от OWOX BI, которые можете использовать как шаблон для создания своих дашбордов:

Если вы хотите видеть на дашбордах дополнительные данные, обращайтесь к нам — с радостью поможем настроить.

Список исключаемых источников

В разделе «Отслеживание» также есть пункт «Список исключаемых источников перехода». Он помогает исключить из отчетов по рефералам любые источники, которые вы укажете как нежелательные.

В каких случаях рекомендуется использовать эту настройку:

  1. Если у вашей компании несколько доменов, есть смысл занести их в список исключений, чтобы они не считались источниками переходов. Если у вас есть субдомены, допустим, с названием региона, то все регионы перечислять не нужно. Достаточно указать основной домен.
  2. Если при оплате на вашем сайте происходит переадресация на сайт платежной системы, то эти платежные системы также стоит учесть в списке исключений, чтобы они не считались рефералами.
  3. Если при авторизации у вас на сайте пользователь может использовать свой аккаунт Facebook либо Google. При этом страница авторизации открывается не в соседней вкладке, а происходит редирект на текущей странице. В таком случае зоны автоматической авторизации также необходимо занести в список исключений.
  4. Другие источники, которые вы не хотите видеть в этом отчете.

Таймаут сессии и кампании

Следующий пункт, важный для настройки веб-аналитики — это время ожидания (таймаут) сессии и кампании. Сессия — это набор взаимодействий (хитов) пользователя с вашим сайтом. Если пользователь совершил какое-то действие, а затем пошел период бездействия, т.е. он не закрыл вашу страницу, а просто не взаимодействует с ней, по умолчанию через 30 минут сессия оборвется.

К примеру, человек зашел на ваш сайт, кликнул на несколько кнопок, далее пошел на кухню сделать чай и оставил вкладку открытой. Если он вернется и продолжит взаимодействовать с этой вкладкой через 31-32 минуты, GA посчитает это уже новой сессией.

Для некоторых сайтов таймаут сессии в 30 минут, заданный по умолчанию, не подходит. К примеру, в онлайн-кинотеатре длительность одного фильма может быть 1,5-2 часа. Таким бизнесам лучше увеличить время ожидания сессии на ту длительность, которая им нужна.
Чтобы было понятнее, что такое таймаут кампании, рассмотрим пример. Допустим, вы запустили новогоднюю кампанию во второй половине декабря. Пользователи в течение 2-3 недель переходили по этой кампании, соответственно GA фиксирует трафик, который к ней относится.

Дополнительный анализ:  Работа аналитиком-методологом в Ростове-на-Дону

Но тут нужно помнить, что в GA по умолчанию применяется модель атрибуции Last Non-Direct Click. Если человек в январе зашел на ваш сайт по прямому переходу, GA отнесет ценность этого перехода к предыдущему взаимодействию из новогодней кампании, даже если она уже отключена.

По умолчанию в GA указан таймаут кампании — полгода. Вы можете поменять его на меньший период. Для этого в админпанели на уровне ресурса выберите «Отслеживание» — «Настройки сеанса».

Тестирование аналитики ui-тестами

У любого события есть имя, у некоторых бывают еще и параметры. Например, у  «успешность авторизации» имя authorization и булевый параметр success.

Вообще, из UI-тестов нельзя узнать, какие события отправило приложение. Когда пользователь совершает действие, то они сразу попадают в систему аналитики. Но в этот момент их можно перехватить и сохранить в место, куда у UI-тестов есть доступ.

На практике есть два способа передачи данных из приложения в UI-тесты:

  • Можно сохранить текстовые данные в невидимое текстовое поле или в свойство accessibilityLabel невидимой «вьюшки». Но в этом случае меняется иерархия «вьюшек», и это может привести к багам. Кроме того, не получится очистить список отправленных событий из UI-тестов.

  • Или можно сохранить текстовые данные в буфер обмена, к которому у UI-тестов есть доступ. Этот вариант лучше, так как иерархия «вьюшек» не изменяется. Буфер обмена можно очистить из UI-тестов, а еще это проще в реализации.

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

Так в итоге будет выглядеть UI-тест, проверяющий события аналитики на экране авторизации:

Тестирование аналитики вручную

Когда пользователь совершает действие, то событие аналитики сразу отправляется в систему аналитики. И, к сожалению, это никак не отследить, чтобы протестировать. Только если модифицировать код приложения, чтобы вместе с отправкой события сделать дополнительное действие. Какие есть варианты:

  1. Можно отправить локальное уведомление (типа Push) с названием и параметрами события. Это неудобно, так как перекрывает интерфейс приложения, а также сложно тестировать цепочку событий из-за того, что каждое новое уведомление перекрывает старые.

  2. Добавить отладочный экран, на котором показан список всех отправленных событий. Но это тоже не очень удобно — нужно постоянно переключаться между приложением и этим экраном.

  3. Либо события аналитики можно логировать и сразу отслеживать в консоли.

События аналитики в Console.app
События аналитики в Console.app

Третий вариант — самый удобный: его несложно сделать и он позволяет фильтровать события. Также при тестировании приложения сразу видно, какие события отправляются. И если приложение содержит небольшое количество событий, то этим вариантом можно обойтись, не прибегая к автоматизации.

Это всё способы тестирования события аналитики вручную. Но если в приложении событий много, то такое тестирование будет не быстрым.

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

Уровни параметров и показателей

Если вы обратили внимание, при создании параметров нужно выбрать один из четырех уровней (областей действия): «Обращение» (хит), «Сеанс» (сессия), «Пользователь» и «Товар». От этого уровня зависит отображение данных в отчетах GA.

Если речь идет о каком-нибудь единичном взаимодействии (клик по кнопке, переход по ссылке и т.д.), то параметры, которые вы передаете с этим взаимодействием, в основном будут уровня «Обращение». То есть вас интересуют непосредственно атрибуты конкретного взаимодействия.

Если же мы говорим об ID пользователя либо его ключевых характеристиках, к примеру, возрастная категория, нужно указать для этого параметра уровень «Пользователь», чтобы вместе с параметром вы видели все взаимодействия этого человека.

Уровень «Товар» используют в основном для событий расширенной электронной торговли. К примеру, если в одном хите у вас могут быть просмотры 5 продуктов, то каждому из этих продуктов нужно присвоить свое уникальное значение. Соответственно, вы выбираете уровень «Продукт» и далее в отчетах Enhanced Ecommerce можете смотреть ваши дополнительные параметры.

Уровень «Сеанс» нужно выбирать, если вы хотите «размазать» значение какого-либо параметра по всей текущей сессии пользователя. Например, при проведении A/B теста. То есть какое-то событие произошло на чек-ауте, и вам необходимо отнести все взаимодействия в рамках сессии к определенному варианту — А или B.

Вы выставляете параметр уровня сессии, и даже если пользователь взаимодействовал с каким-либо из элементов в конце сессии, то этот параметр будет «размазан» на все хиты в рамках этой сессии.

У показателей всего два уровня: «Обращение» и «Товар». Логика их присвоения такая же, как и у параметров.

Посмотреть и изменить уровни параметров и показателей вы можете в настройках ресурса, меню «Пользовательские определения» — «Специальные параметры» и «Специальные показатели».

Фильтрация ботов

Также на уровне представления можно настроить фильтрацию ботов. GA не раскрывает логику, по которой он выявляет трафик от пауков и ботов. Тем не менее есть смысл включить эту опцию, чтобы максимально очистить ваши данные от лишних шумов.

Фильтры

Фильтры позволяют включать либо исключать из отчетов нежелательный трафик. К примеру, у вас есть сайт, на котором можно совершить покупку, и трафик приходит из определенного региона. При этом в вашей компании множество сотрудников, которые также посещают сайт, но не являются целевой аудиторией.

Первым делом необходимо отсечь трафик, который генерируют сотрудники. Сделать можно с помощью фильтрация по IP-адресам ваших офисов и офисов ваших агентств. Фильтры настраиваются на уровне представления.

Часовой пояс

Если ваш бизнес работает в одном регионе, то настройка «Страна часового пояса» для вас не критична. Если же вы работаете в нескольких регионах с разными часовыми поясами, мы рекомендуем для всех часовых поясов создавать отдельные представления, чтобы анализировать качественные данные без погрешности.

Чем обычно занимается аналитик данных:

  1. Общается с представителями бизнеса и выявляет проблемные места компании.
  2. Собирает информацию.
  3. Составляет гипотезы для улучшения определенных показателей.
  4. Готовит данные к проведению анализа: сортирует, фильтрует и делает выборку.
  5. Находит закономерности.
  6. Визуализирует данные: переводит статистику и Big Data в понятные выводы и наглядные графики.
  7. Предлагает решения, которые используются для развития проекта или бизнеса.

На основе данных, предоставленных Data Analyst, компания может принимать любые бизнес-решения.

Электронная торговля

Далее в статье мы подробнее рассмотрим отчеты, которые станут вам доступны после настройки электронной торговли.

Эффективность продаж

Аналогичный отчет вы можете посмотреть по транзакциям. Все ли параметры транзакции передаются, передается ли с ней доход. Чтобы не было никаких пробелов и узких мест, прежде чем приступать к проверке сайта, посмотрите на отчет и полноту его данных.

Эффективность товаров

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

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

Краткие выводы

  • Качественная настройка веб-аналитики = доверие к данным. Прежде чем анализировать данные, вам нужно убедиться, что они собираются корректно.
  • Регулярно проверяйте доступы к вашим ресурсам, чтобы не было ситуаций, когда ваши данные доступны нежелательным лицам.
  • Сделайте аудит более удобным, сократив ручную работу — создавайте автоматические дашборды со всеми нужными вам метриками.
  • Настройте уведомления о критических изменениях в сборе данных, чтобы оперативно реагировать на проблемы.
  • Фиксируйте все изменения и новые выливания на вашем сайте, чтобы при необходимости легко найти причину тех или иных изменений в KPI.
  • Если у вас множество источников данных, рекомендуем объединить данные в едином хранилище Google BigQuery.
  • Сделайте «аналитическую прививку» сотрудникам вашей компании. Какие-то базовые вещи должен знать любой сотрудник, чтобы самому зайти в отчет и посмотреть нужную информацию, не отвлекая аналитиков.

Итоги

Плюсы подхода:

  1. Продуктовому аналитику или тестировщику не нужно проверять все события аналитики вручную. А это экономия времени и, соответственно, денег.

  2. Если у вас настроен CI, то UI-тесты на аналитику можно запускать по расписанию, например, раз в неделю или по команде из Slack.

Есть и минусы:

  1. UI-тесты выполняются относительно долго. Имеет смысл запускать их только в процессе регрессионного тестирования перед каждым релизом.

  2. UI-тесты на аналитику смогут написать только те тестировщики, которые имеют опыт написания нативных UI-тестов.

В случае ручного тестирования, при добавлении новых событий, нужно линейно больше времени на тестирование. Автоматизированное тестирования быстрее, но для него нужно подготовить инфраструктуру: это займет некоторое время. Но после этого добавление теста на новое событие будет проходить быстрее.

Поэтому в случае большого проекта есть смысл автоматизировать проверку событий аналитики. 

Оцените статью
Аналитик-эксперт
Добавить комментарий

Adblock
detector