🟩 Компьютерная экспертиза мобильных приложений: когда «кнопка не работает» становится вопросом миллионов

🟩 Компьютерная экспертиза мобильных приложений: когда «кнопка не работает» становится вопросом миллионов

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды рублей. Для суда — гора противоречий. Почему приложение зависло? Кто виноват: разработчик, хакер, пользователь или «само так получилось»? 🤔📱 Обычный пользователь скажет: «Оно просто не работает». Юрист скажет: «Нужно доказать причинно-следственную связь». А мы, Союз «Федерация судебных экспертов», скажем: «Дайте нам APK, логи, дамп памяти и пару дней — мы разложим ваше приложение на атомы». Потому что компьютерная экспертиза мобильных приложений — это не «нажать на кнопку и посмотреть», это глубокий инженерный анализ кода, данных и поведения. В этой статье — три жестоких кейса, технические методики и ответ на вопрос: почему 80% споров о качестве мобильных приложений заканчиваются не в пользу заказчика, если нет независимой экспертизы. ⚠️💰

Глава 1. Мобильное приложение как объект судебной экспертизы: сложнее, чем кажется

Мобильное приложение — это не просто экран с кнопками. Это сложная распределённая система, включающая:

  • Клиентскую часть (код под ANDROID или IOS, ресурсы, библиотеки);
  • Серверную часть (API, БАЗЫ ДАННЫХ, бизнес-логика);
  • Сетевые взаимодействия (HTTPS, WEB SOCKETS, ПУШ-УВЕДОМЛЕНИЯ);
  • Интеграции с ОС (камера, GPS, NFC, БИОМЕТРИЯ, ФАЙЛОВАЯ СИСТЕМА);
  • Данные на устройстве (SQLITE, SHARED PREFERENCES, KEYSTORE).

Каждый из этих компонентов может быть источником проблемы. И когда заказчик жалуется: «ПРИЛОЖЕНИЕ ТОРМОЗИТ, КНОПКИ НЕ НАЖИМАЮТСЯ, ДАННЫЕ ТЕРЯЮТСЯ», — нужно провести компьютерную экспертизу мобильных приложений, чтобы определить: это баг в коде, проблема сервера, сбой ОС, недостаток ресурсов устройства или намеренная диверсия. 🎯🧩

КЛЮЧЕВАЯ ФРАЗА №1: Компьютерная экспертиза мобильных приложений позволяет отделить субъективные ощущения пользователя от объективных фактов, зашитых в коде и журналах.

Глава 2. Типовые претензии к работоспособности и как мы их проверяем

Самые частые претензии в арбитражных спорах и досудебных разбирательствах:

ПретензияТехническая сутьМетод проверки
«Приложение вылетает (CRASH)»НЕОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ в коде, утечка памяти, обращение к NULLАнализ LOG-ФАЙЛОВ (LOGСAT для ANDROID, консоль XCODE для IOS), воспроизведение краша в отладчике
«Приложение работает медленно»ДОЛГИЕ ОПЕРАЦИИ на UI-потоке, неоптимальные запросы к API, утечки памяти, LEADING TO GCPROFILING (ANDROID STUDIO PROFILER, XCODE INSTRUMENTS), замер времени отклика на тестовых устройствах
«Некорректно отображаются данные»ОШИБКИ В ПАРСИНГЕ JSON, проблемы с кодировкой, race conditions при обновлении UIСравнение данных на сервере и на клиенте, анализ сетевого трафика (PROXY, WIRESHARK)
«Потеря данных после обновления»НЕПРАВИЛЬНАЯ МИГРАЦИЯ БАЗЫ ДАННЫХ (SQLITE), перезапись SHARED PREFERENCESАнализ версий БД, проверка кода миграции, восстановление из резервных копий
«Не приходят push-уведомления»ПРОБЛЕМЫ С ТОКЕНАМИ FCM/APNS, фоновые ограничения ОС, ошибки в сертификатахЛогирование FCM/APNS, проверка регистрации токенов, тестирование на разных версиях ANDROID/IOS

Каждая из этих претензий может быть как следствием ошибки разработчика, так и особенностью окружения. Наша задача — доказать или опровергнуть наличие дефекта, его причину и степень влияния на работоспособность. 🕵️‍♂️📊

КЛЮЧЕВАЯ ФРАЗА №2: Компьютерная экспертиза мобильных приложений вооружает суд и стороны не мнениями, а протоколами воспроизведения ошибок, дампами памяти и выдержками из исходного кода.

Глава 3. Кейс №1: Тормоза в приложении банка — чья вина, разработчика или телефона?

📁 Ситуация: Крупный банк разработал мобильное приложение для управления счетами. Заказчик (предприниматель) утверждал, что приложение «невозможно медленное»: экран входа загружается 15 секунд, перевод денег — 30 секунд. Потери времени и нервов. Он подал иск о возврате 5 млн рублей, уплаченных за разработку. Разработчик заявил: «Это проблема старого телефона заказчика, у нас на тестовых устройствах всё летает». ⚡📉

🔧 Наша экспертиза:

Мы получили:

  • Исходный код приложения (KOTLIN, ANDROID);
  • APK-ФАЙЛ (сборка от 15.03.2024);
  • ЛОГИ с устройства заказчика (SAMSUNG GALAXY S9, ANDROID 10);
  • Доступ к тестовому серверу банка (API документация).

Шаг 1: Воспроизведение. Установили ту же версию приложения на три устройства: SAMSUNG S9 (как у заказчика), PIXEL 6 (ANDROID 13), эмулятор с низкими характеристиками (1 ГБ ОЗУ). На всех устройствах приложение работало одинаково медленно — экран входа 12-16 секунд. Значит, не в телефоне дело.

Шаг 2: Анализ сетевого трафика. Подняли прокси-сервер (BURP SUITE) и перехватили все запросы при входе. Оказалось, приложение при старте делает не один, а 18 последовательных API-ЗАПРОСОВ: /get_config, /get_promo, /get_balance, /get_transactions, /get_exchange_rates, /get_news и так далее. Каждый запрос выполняется синхронно, дожидаясь ответа предыдущего. RTT (ВРЕМЯ ТУДА-ОБРАТНО) до сервера составляло в среднем 800 мс (облачный хостинг в другой стране). Итог: 18 × 800 = 14 400 мс (14,4 секунды). 🐢🌐

Шаг 3: Анализ кода. Нашли в классе SplashActivity.kt следующий фрагмент:

kotlin

private fun loadInitialData() {

api.getConfig { config ->

api.getPromo { promo ->

api.getBalance { balance ->

//… и так 15 раз

}

}

}

}

Это антипаттерн «CALLBACK HELL», который убивает производительность. Разработчик не использовал корутины, не группировал запросы, не применял кэширование.

Вывод экспертизы: Приложение содержит КРИТИЧЕСКИЙ ДЕФЕКТ ПРОИЗВОДИТЕЛЬНОСТИ — избыточное количество последовательных синхронных запросов. Время загрузки не зависит от устройства пользователя и всегда превышает 10 секунд при нормальных сетевых задержках. Требуется переработка архитектуры.

Результат: Суд встал на сторону заказчика. Разработчик выплатил компенсацию и переписал приложение (уже с асинхронной загрузкой). 🏛️✅

Глава 4. ANDROID vs IOS: как платформа влияет на экспертизу и претензии

Многие заказчики не понимают, что приложение для ANDROID и IOS — это два разных продукта (даже если внешне выглядят одинаково). Техническая экспертиза должна учитывать:

АспектANDROIDIOS
ЯзыкKOTLIN/JAVASWIFT/OBJECTIVE-C
Инструменты отладкиLOGСAT, ANDROID STUDIO PROFILERXCODE, INSTRUMENTS, CONSOLE.APP
Получение логовADB, права разработчикаIREPORT, ORANGE (сложнее без jailbreak)
Работа с ФСДоступ к /data/data только на ROOT-устройствахПесочница, без jailbreak — только резервные копии iTunes
Типичные дефектыФрагментация устройств, утечки памяти, работа с разрешениямиПроблемы с ARC (УТЕЧКИ), background-режимы, блокировки main thread

При экспертизе мы запрашиваем:

  • ЛОГИ CRASHLYTICS/FIREBASE (если настроены);
  • APK/IPA-ФАЙЛЫ (для статического анализа);
  • Доступ к репозиторию кода (желательно);
  • Видео воспроизведения ошибки (обязательно, с экрана).

И помним: в 70% случаев претензия «ПРИЛОЖЕНИЕ НЕ РАБОТАЕТ» — это проблема конкретной версии ОС или модели устройства. Но в 30% — реальный косяк разработчика. И мы это докажем. 🧪📲

КЛЮЧЕВАЯ ФРАЗА №3: Компьютерная экспертиза мобильных приложений всегда платформенно-специфична: то, что является ошибкой в ANDROID, может быть особенностью IOS, и наоборот.

Глава 5. Кейс №2: «Куда пропали деньги?» — Ошибка округления в финансовом приложении

📁 Ситуация: Финтех-стартап запустил приложение для микро-кредитования. Через месяц пользователи начали жаловаться: «При начислении процентов сумма не совпадает с заявленной в договоре». Стартап проверил серверную логику — там всё было правильно. Но претензии продолжались. Инвестор пригрозил судом. Назначили независимую экспертизу. 💸🔎

Наше исследование:

Мы декомпилировали APK (ANDROID) с помощью JADX и изучили код расчёта процентов. Нашли такой фрагмент:

java

public double calculateInterest(double principal, double rate, int days) {

double interest = principal * rate * days / 365;

// Округление до двух знаков (копейки)

return Math.round(interest * 100) / 100.0;

}

На первый взгляд — корректно. Но тестирование на разных суммах показало странность: для PRINCIPAL = 1000.00, RATE = 0.15 (15% годовых), DAYS = 30. Вычисляем: 1000 * 0.15 * 30 / 365 = 12,328767… Округление до двух знаков: 12,33. Всё правильно. Но для PRINCIPAL = 1000.00, RATE = 0.20, DAYS = 7: 1000 * 0.20 * 7 / 365 = 3,835616… Округление до двух знаков: 3,84. А в договоре было заявлено 3,84. Где ошибка? Её не было? Но жалобы продолжались.

Детальный анализ: Мы обнаружили, что на сервере процентная ставка хранится как DOUBLE с высокой точностью (0,15000000000000002 из-за ошибки представления дробных чисел в двоичной системе). Клиентское приложение получало ставку от сервера, но из-за округления при сериализации JSON теряло знаки. А самое главное — в коде был ещё один метод calculateInterestDaily, который использовался для пени при просрочке:

java

public double calculatePenalty(double principal, double rate, int days) {

double penalty = principal * rate * days / 365;

// Здесь использовалось округление до 4 знаков, но затем умножение на 100

return Math.round(penalty * 10000) / 100.0; // ОШИБКА: лишнее умножение на 100

}

Из-за этого при просрочке пени оказывалась в 100 раз выше положенной. Например, реальная пеня 0,12 рубля превращалась в 12 рублей. Пользователи видели списание лишних сумм, но не могли понять причину — ошибка проявлялась только на 3-й день просрочки.

Вывод экспертизы: Дефект в методе расчёта пени — ОШИБКА ОКРУГЛЕНИЯ, приводящая к финансовым потерям пользователей. Разработчик не провёл достаточное тестирование на граничных значениях.

Итог: Суд обязал разработчика компенсировать убытки пользователям (около 2 млн рублей) и переписать модуль расчёта с использованием BIGDECIMAL вместо DOUBLE. Стартап выжил, но репутация пострадала. 🩹📉

Глава 6. СЕТЕВОЙ АНАЛИЗ КАК ЧАСТЬ ЭКСПЕРТИЗЫ: ЧТО МЫ УВИДИМ В ПРОКСИ-ЛОГАХ

Когда приложение «не работает», первое подозрение падает на сервер или сеть. Мы поднимаем локальный прокси (BURP SUITE, CHARLES PROXY) и перехватываем HTTP/HTTPS-ТРАФИК между приложением и сервером. Что можно увидеть:

🔸 Неправильные HTTP-СТАТУСЫ: 500 вместо 200, 404 на существующие ресурсы, 403 (доступ запрещён) при легитимных данных.
🔸 Долгие ответы (TIME TO FIRST BYTE > 3 секунды): проблема в серверной части, медленные SQL-запросы, недостаток мощности.
🔸 Пустые ответы (CONTENT-LENGTH = 0) при ожидании JSON: ошибка в формировании ответа на сервере.
🔸 Бесконечная загрузка: клиент не закрывает соединение, или сервер не возвращает EOF.
🔸 Несоответствие JSON-схеме: сервер отдаёт поле «amount»: «string», а клиент ждёт число → краш.
🔸 Проблемы с SSL/TLS: устаревший сертификат, неверная цепочка, использование устаревших шифров (например, TLS 1.0). Приложение может отказаться подключаться.

В одном из кейсов мы выявили, что приложение такси отправляло геолокацию каждые 500 мс (даже когда машина стояла), создавая нагрузку на сервер и быстро разряжая батарею. Претензия «приложение жрёт батарею» подтвердилась анализом сетевого трафика. 📡🔋

КЛЮЧЕВАЯ ФРАЗА №4: Компьютерная экспертиза мобильных приложений немыслима без анализа сетевого взаимодействия — часто именно там скрываются истинные причины «тормозов» и «вылетов».

Глава 7. Кейс №3: Crash при авторизации через соцсети — баг в SDK или руках разработчика?

📁 Ситуация: Мобильное приложение для онлайн-кинотеатра. При попытке войти через GOOGLE или FACEBOOK приложение мгновенно вылетало (CRASH). Ошибка воспроизводилась на 100% устройств с ANDROID 11 и выше. Разработчик утверждал: «Это баг в SDK GOOGLE, мы ждём исправления». Заказчик потерял 40% новых регистраций за месяц. Иск на 7 млн рублей. 🎭📉

Ход экспертизы:

  1. Декомпиляция APK. Использовали APKTOOL и JADX-GUI. Обнаружили, что разработчик использовал устаревшую версию firebase-auth (21.0.1) и google-services (4.3.3). Актуальные на тот момент — 22.1.0 и 4.3.14.
  2. Анализ LOGСAT. Запросили у заказчика логи с устройства (через ADB LOGCAT). Нашли стек-трейс:

text

FATAL EXCEPTION: main

Process: com.example.cinema, PID: 12345

java.lang.NoSuchMethodError: No virtual method getCredential()Lcom/google/android/gms/auth/api/credentials/Credential; in class Lcom/google/android/gms/auth/api/signin/GoogleSignInAccount;

at com.google.firebase.auth.GoogleAuthProvider.getCredential(Unknown Source)

Метод getCredential() был удалён из новой версии GOOGLE SIGN-IN SDK, но приложение его вызывало. Разработчик не обновил код при обновлении зависимостей.
3. Проверка намерений: Взглянули на build.gradle. Версии библиотек были прописаны вручную, без указания + или latest. Значит, разработчик сознательно зафиксировал устаревшую версию, не проверив совместимость с новыми версиями ANDROID. Это ХАЛАТНОСТЬ.
4. Воспроизведение в изолированной среде: Собрали тестовое приложение с обновлёнными библиотеками — ошибка исчезла. Обновили код, заменив вызов getCredential() на новый метод getSignInCredential(). Всё заработало.

Вывод экспертизы: Крах приложения вызван использованием УСТАРЕВШЕЙ ВЕРСИИ SDK при несовместимости с API целевых устройств. Разработчик не провёл регрессионное тестирование после обновления ОС на устройствах. Ответственность за баг лежит на разработчике, а не на GOOGLE.

Результат: Суд частично удовлетворил иск (4,2 млн руб. вместо 7 млн). Разработчик переписал модуль авторизации и выпустил обновление. ✅

Глава 8. СТАТИЧЕСКИЙ АНАЛИЗ КОДА: ЧТО МЫ ИЩЕМ В APK И IPA

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

ANDROID:

  • JADX — декомпиляция DEX в JAVA-код.
  • APKTOOL — распаковка ресурсов, манифеста, библиотек.
  • ANDROID LINT — поиск потенциальных багов и уязвимостей (статические правила).
  • SEMGREP — поиск конкретных паттернов (например, незакрытых курсоров БД).

IOS:

  • CLASS DUMP — извлечение заголовков Objective-C.
  • HOOPPER DISASSEMBLER — анализ бинарного кода (если нет исходников).
  • OTOOL — изучение зависимостей и флагов компиляции.

Что мы ищем в первую очередь (по претензиям к работоспособности):

  1. Обработка исключений: блоки try-catch без логирования, пустые catch, проглатывание ошибок.
  2. UI-поток: долгие операции (сетевые запросы, чтение файлов) на MAIN THREAD → ANR (Application Not Responding).
  3. Утечки памяти: статические ссылки на ACTIVITY, незакрытые LISTENERS, неотменённые корутины.
  4. Работа с БД: незакрытые SQLiteDatabase Cursor, неправильная миграция, отсутствие транзакций.
  5. Сетевые вызовы: отсутствие таймаутов, повторные попытки, игнорирование ошибок HTTP.

Пример из практики: В коде приложения для доставки еды мы нашли:

java

public void loadRestaurants() {

new Thread(() -> {

List<Restaurant> list = api.getRestaurants();

runOnUiThread(() -> {

adapter.setItems(list); // Адаптер обновляется, но если list = null -> CRASH

});

}).start();

}

При ошибке сети api.getRestaurants() возвращал null, а не пустой список. Адаптер падал с NullPointerException. Разработчик не обработал null. Типичная халатность. 🔥

КЛЮЧЕВАЯ ФРАЗА №5: Компьютерная экспертиза мобильных приложений через статический анализ выявляет до 60% дефектов работоспособности ещё до запуска приложения, просто читая код как книгу.

Глава 9. ДИНАМИЧЕСКИЙ АНАЛИЗ: PROFILING, LOGGING, ВОСПРОИЗВЕДЕНИЕ

Статика хороша, но не всё можно увидеть без выполнения. Динамический анализ — запуск приложения в контролируемой среде:

🔹 Инструменты:

  • ANDROID STUDIO PROFILER (CPU, MEMORY, NETWORK, ENERGY)
  • XCODE INSTRUMENTS (TIME PROFILER, LEAKS, ALLOCATIONS)
  • DDMS (DAVILK DEBUG MONITOR SERVER) для старых версий
  • FIRBASE TEST LAB / AWS DEVICE FARM (тестирование на реальных устройствах в облаке)

🔹 Что измеряем:

  • Время отклика UI на действия пользователя (нажатие кнопки, переход между экранами).
  • Потребление ОЗУ (утечки памяти, рост HEAP).
  • Загрузку CPU (фоновые процессы, бесконечные циклы).
  • Потребление батареи (wakelocks, частые сетевые вызовы).
  • Количество и типы крашей за сессию.

🔹 Методика воспроизведения: Мы создаём точную копию среды заказчика (модель устройства, версия ОС, объём памяти, установленные приложения). Затем выполняем чёткий сценарий, который вызвал нарекания, и фиксируем результат на видео (с одновременной записью логов). Если ошибка воспроизводится — дефект валиден.

Конфликтный момент: Разработчик часто говорит: «У нас не воспроизводится». Мы отвечаем: «У вас другое окружение. Дайте нам доступ к вашему стенду, или мы будем судиться с вашими логами». В 90% случаев после предоставления нашего протокола воспроизведения разработчик признаёт ошибку. 😤📹

Глава 10. БАЗЫ ДАННЫХ В МОБИЛЬНЫХ ПРИЛОЖЕНИЯХ: SQLITE, ROOM, REALM И ИХ ДЕФЕКТЫ

Мобильные приложения активно используют локальные БАЗЫ ДАННЫХ (SQLITE через ORM: ROOM, REALM, или напрямую). Типичные претензии:

  • «После обновления приложения пропали данные» — ошибка миграции (неправильный Migration в ROOM, несоответствие схем).
  • «Приложение тормозит при большом количестве записей» — отсутствие индексов, неэффективные запросы (N+1 проблема), работа на MAIN THREAD.
  • «Приложение вылетает при запуске» — повреждение файла БД, несовместимость версий, попытка открыть БД в режиме READONLY с незакрытыми транзакциями.

Кейс из практики: Приложение для заметок. После обновления у 500 пользователей исчезли все заметки старше 2 месяцев. Наша экспертиза показала: в новой версии разработчик добавил поле is_archived в таблицу notes, но в Migration забыл прописать значение по умолчанию. В SQLITE это привело к тому, что при миграции старые строки получили NULL в поле is_archived. А код приложения фильтровал WHERE is_archived = 0, и строки с NULL не отображались. Данные не пропали, их просто не показывали. Но пользователи думали, что потеряли. ✅🔄

Восстановление: Мы написали скрипт для обновления NULL в 0 и передали разработчику. Приложение выпустило хотфикс. Иск был отозван. Но репутация пострадала.

Глава 11. ПРОЦЕССУАЛЬНЫЕ АСПЕКТЫ: КАК ПРАВИЛЬНО НАЗНАЧИТЬ ЭКСПЕРТИЗУ МОБИЛЬНОГО ПРИЛОЖЕНИЯ

Если вы юрист или заказчик, запомните: судья не разбирается в KOTLIN и LOGСAT. Ваше ходатайство должно быть технически безупречным. Вот шаблон:

Формулировка вопросов (пример):

  1. Имеются ли в мобильном приложении «НАЗВАНИЕ» (версия 1.2.3, ANDROID) дефекты, приводящие к неработоспособности следующих функций: авторизация, отображение баланса, отправка платежа?
  2. Если да, то какова причина каждого дефекта (ошибка в коде, неправильная настройка сервера, несовместимость с ОС)?
  3. Возможно ли устранение дефектов без полной переработки приложения? Если да, то какие изменения в коде необходимы?
  4. Требуется ли для устранения дефектов изменение серверной части или достаточно обновления клиентского приложения?

Что приложить к ходатайству:

  • APK/IPA-ФАЙЛ или ссылка на магазин приложений;
  • Видеозапись воспроизведения ошибки (экран устройства);
  • ЛОГИ (LOGСAT, CRASHLYTICS), если есть;
  • Договор на разработку (для определения объёма работ);
  • Переписка с разработчиком, где он признаёт или отрицает проблему.

Ошибки заказчиков:

  • ❌ «Приложение не работает» — без деталей.
  • ❌ «Пусть эксперт сам разбирается» — без предоставления логов и доступа к серверу.
  • ❌ Требование оценить «удобство интерфейса» — это не техническая экспертиза, а дизайн-анализ (другая услуга).

КЛЮЧЕВАЯ ФРАЗА (ДЛЯ ЗАКРЕПЛЕНИЯ): Компьютерная экспертиза мобильных приложений отвечает на вопрос «ПОЧЕМУ не работает», а не «НРАВИТСЯ ли вам».

Глава 12. ОГРАНИЧЕНИЯ ЭКСПЕРТИЗЫ: ЧТО МЫ НЕ МОЖЕМ СДЕЛАТЬ ДАЖЕ С САМЫМИ ЛУЧШИМИ ИНСТРУМЕНТАМИ

Честный эксперт всегда указывает на границы:

Нет исходного кода — нет глубокого анализа. Если у нас только APK (без декомпиляции, но со обфускацией), мы можем не восстановить логику полностью. PROGUARD, R8, OBFUSCATION могут превратить код в «кашу». Но мы всё равно найдём артефакты — строки, ресурсы, конфиги.

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

Jailbreak/Root требуется для глубокого анализа ФС IOS. Без джейлбрейка мы не можем получить доступ к директории приложения /var/mobile/Containers/Data/Application/. Используем резервные копии (iTunes), но это не даёт полного доступа.

Шифрованный трафик с certificate pinning. Если приложение использует SSL PINNING, мы не сможем перехватить HTTPS-трафик через прокси без модификации приложения (что может нарушить юридическую чистоту).

Эти ограничения обязательно прописываются в заключении. Если оппонент скажет: «А почему эксперт не проверил то-то?», мы ответим: «Потому что не предоставили доступ». И суд примет это. 🚧

Глава 13. ЭКСПЕРТИЗА КАЧЕСТВА РАЗРАБОТКИ: КАК МЫ ОЦЕНИВАЕМ WORKMANLIKE MANNER

В спорах по договорам разработки часто фигурирует понятие «НАДЛЕЖАЩЕЕ КАЧЕСТВО» (WORKMANLIKE MANNER). Это не технический термин, но мы переводим его на язык инженерии:

  • Соответствие техническому заданию (ТЗ). Если ТЗ требовало время отклика < 2 секунд, а мы измерили 15 секунд — это некачественная разработка.
  • Соответствие стандартам платформы. HUMAN INTERFACE GUIDELINES (IOS) и MATERIAL DESIGN (ANDROID) — не просто дизайн, но и требования к производительности, жестам, accessibility.
  • Наличие тестов. В коде должны быть модульные и интеграционные тесты. Если их нет — это риск для качества (но не всегда дефект).
  • Обработка ошибок. Приложение не должно падать при потере сети, неверных данных, сбоях API. Если падает — это дефект.

Мы анализируем код на наличие:

  • Юнит-тестов (JUNIT, TESTNG);
  • UI-тестов (ESPRESSO, XCUITEST);
  • Обработчиков сетевых ошибок (RETROFIT, OKHTTP).
  • Логирования (TIMBER, LOG4J).

В одном из споров мы доказали, что разработчик не написал НИ ОДНОГО теста на критический модуль оплаты. Приложение вылетало при каждом сбое платежного шлюза. Суд признал это нарушением «профессионального стандарта разработки». 🧑‍💻📉

Глава 14. ПОЧЕМУ 80% СПОРОВ ВЫИГРЫВАЮТ ЗАКАЗЧИКИ ПОСЛЕ НАШЕЙ ЭКСПЕРТИЗЫ (СТАТИСТИКА)

За 7 лет работы Союза «Федерация судебных экспертов» мы провели 124 экспертизы мобильных приложений. Из них:

  • 78 — по спорам заказчик vs разработчик.
  • 32 — по спорам между партнёрами (кто виноват в сбое интеграции).
  • 14 — уголовные дела (вредоносное ПО, кражa данных).

Исходы (для заказчика экспертизы):

  • Выиграно дел (полностью или частично) — 92%.
  • Отказ в удовлетворении требований — 6%.
  • Прекращено за примирением — 2%.

Почему такой высокий процент? Потому что мы не берёмся за дела, где нет дефекта. Мы сначала проводим ПРЕДВАРИТЕЛЬНОЕ ИССЛЕДОВАНИЕ (за отдельную плату, но небольшую) и честно говорим: есть шанс или нет. Если нет — отказываем. Если есть — идём в бой. Нам не нужны проигранные дела. 🎯

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

Глава 15. ВАШИ ДЕЙСТВИЯ ПРИ ПЕРВЫХ ПРИЗНАКАХ НЕРАБОТОСПОСОБНОСТИ (ЧЕК-ЛИСТ)

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

1. Задокументируйте ошибку видео. Экран смартфона + таймер (можно второй телефон). Покажите, как вы нажимаете кнопку и что происходит (зависание, краш, неверные данные). 📹

2. Сохраните логи. Для ANDROID: установите LOGСAT (ADB) и сохраните вывод. Для IOS: подключите к MAC, откройте XCODE -> WINDOWS -> DEVICES AND SIMULATORS, выберите устройство, сохраните логи. Если не умеете — позовите специалиста. 📝

3. Перехватите сетевой трафик. Используйте CHARLES PROXY или BURP SUITE (инструкции есть в открытом доступе). Не забудьте установить сертификат на телефон. 📡

4. Зафиксируйте версию приложения и ОС. Скриншот экрана «О приложении» и «Настройки -> О телефоне». 📱

5. Обратитесь к нам для предварительного анализа. Мы скажем, стоит ли заказывать полноценную экспертизу, или проблема на вашей стороне (недостаток ресурсов телефона, кривые руки). 💬

И главное — НЕ ОБНОВЛЯЙТЕ приложение до версии, где «якобы всё исправили». Это может уничтожить следы дефекта. Разработчик намеренно может выпустить «заплатку», которая скроет улики. Мы работаем с той версией, которая была в момент спора. 🚫⬆️

ФИНАЛ: НЕЗАВИСИМАЯ ЭКСПЕРТИЗА — ВАШ ЩИТ И МЕЧ В ЦИФРОВОЙ ВОЙНЕ

Уважаемый читатель! Мобильные приложения уже стали такой же неотъемлемой частью бизнеса, как офис или бухгалтерия. И когда приложение «глючит», вы теряете не только нервы, но и деньги, клиентов, репутацию. Компьютерная экспертиза мобильных приложений — это не роскошь, а необходимость для любого серьезного разбирательства. Потому что без неё суд будет слушать двух программистов, которые кричат друг на друга «сам дурак». А мы превратим этот крик в доказательства, графики, дампы и выводы, написанные языком, который понимает даже судья-гуманитарий. 🧑‍⚖️📑

Союз «Федерация судебных экспертов» гарантирует:

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

Не позволяйте разработчикам отмазываться фразами «это особенность платформы» или «у вас старый телефон». Приходите к нам. Мы разберем их «особенности» на атомы. 💣⚛️

Переходите на наш сайт: https://krimexpert.ru/ekspertiza-kachestva-razrabotki-mobilnyh-prilozhenij/ — там вы найдёте форму заявки, примеры заключений и ответы на частые вопросы. Звоните. Пишите. Требуйте правды. Мы её найдём. Даже если она спрятана глубоко в дебрях чужого кода. 🕵️‍♂️📲

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

P.S. Если вы разработчик и читаете это — не бойтесь. Мы любим хороший код. Но если вы срезали углы и теперь пытаетесь обмануть заказчика — берегитесь. Мы придём. И мы найдём ваш unclosed cursor. 👁️🔥

Похожие статьи

Новые статьи

🆘 Лесотехническая экспертиза как инструмент экономической оценки ущерба лесному фонду

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды ру…

🆘 Производство судебно-медицинской экспертизы 

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды ру…

🆘 Экспертиза мебели для суда

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды ру…

🆘 Экспертиза зданий для подачи иска

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды ру…

🆘 Независимая экспертиза оценки ущерба от залива

Вы держите в руках смартфон. Для вас это соцсети, мессенджеры, банк, работа, такси, здоровье. Для бизнеса — миллиарды ру…

Задавайте любые вопросы

4+1=