Тестирование мобильных приложений (тестовые точки, процесс тестирования, функциональное тестирование)
Тестирование мобильных приложений (тестовые точки, процесс тестирования, функциональное тестирование)

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

1、Функциятест

1.1 Запуск

После установки приложения можно ли его нормально открыть и стабильно работать?

Скорость приложения приемлемая, переключение плавное.

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

1.2 Зарегистрируйтесь и войдите в систему

1.2.1 Регистрация учетной записи и пароля и вход в систему

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

Реверс: перед именем пользователя стоят пробелы;、Неправильный или отсутствующий пароль;ужезарегистрироватьсяпользователь;Разрешить ли множественный незаконный вход в систему;Ограничить ли количество раз;еще нетзарегистрироватьсяпользователь Авторизоваться;удалитьили после модификациипользователь Авторизоваться;Естькнопка выхода;

Обратное: после изменения пароля проверяются ли действительные данные при входе в систему: пароль до изменения недействителен;

Обратное: контролируются ли операции на некоторых страницах без входа в систему.

Реверс: отображение пароля «****» (безопасность).

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

Обратное: при вводе неправильной учетной записи или пароля рекомендуется вместо «неверная учетная запись» или «неправильный пароль» предлагать «неверная учетная запись или пароль».

Обратное: после входа в систему, верна ли информация для входа на странице;

Обратное: не вводите пароль пользователя и не нажимайте кнопку «ОК/Отмена» несколько раз, чтобы разрешить вход;

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

Обратное: Подумайте, может ли система нормально перейти в состояние без входа в систему без сети.

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

Обратное: разумна ли обработка тайм-аута входа в систему?

Реверс: есть ли на странице кнопка выхода из системы;

Обратное: зашифрован ли пароль для передачи (можно просмотреть, просканировав запрос).

Обратное: переключите учетные записи, чтобы войти в систему, и проверьте, обновляется ли информация для входа вовремя.

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

Обеспечить регресс:рабочий стол исотовый телефонВойдите в ту же учетную запись одновременно,Несколько единицсотовый телефон и одновременно войдите в ту же учетную запись (проверьте, был ли удален исходный пользователь)

1.2.2 Зарегистрируйтесь и войдите по номеру мобильного телефона.

Проверка формата поля ввода номера мобильного телефона

Проверьте, получено ли текстовое сообщение своевременно;

Вы можете войти в систему обычным способом, используя код подтверждения;

Если код подтверждения неверен, вход невозможен + дружественные подсказки.

Убедитесь, что копия текстового сообщения соответствует протестированному приложению;

Если код подтверждения отправляется повторно, предыдущий код подтверждения будет недействителен.

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

Проверьте обработку тайм-аута входа в систему (код подтверждения использовать нельзя).

Проверка срока действия проверочного кода (вы не можете войти в систему по истечении срока действия)

1.2.3 Регистрация

Тестирование страницы редактирования формы;

Длина имени пользователя и пароля;

Страница подсказки после регистрации;

Согласуются ли данные на внешней странице регистрации и внутренней странице управления?

После регистрации проверьте, в порядке ли подсказки страницы в системе управления фоном и информация о пользователе в базе данных;

1.3 Могут ли все функции работать нормально

Тест бизнес-логики: в основном проверяет, нормально ли завершаются дела клиента.

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

Тест связанной строки: в основном проверяется взаимодействие между клиентом и ПК. После обработки клиента данные ПК и сегмента клиента являются согласованными.

1.4. Нормально ли переключение внешнего и внутреннего интерфейса приложения?

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

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

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

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

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

После завершения процесса приложения и последующего открытия приложения, может ли приложение нормально запуститься?

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

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

1.5 Обновление данных

1.6 Офлайн-просмотр

Вы можете просматривать локальные данные в беспроводной сети.

Когда вы выходите из приложения и снова открываете его, вы можете нормально просматривать локальные данные.

Переключитесь в фоновый режим, а затем вернитесь на передний план, чтобы нормально просматривать локальные данные.

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

При обновлении вручную появляется ли запрос на подключение к сети?

1.7 Позиционирование, услуги камеры и т. д.

1.8 Проверка времени

1.9 Тест на нажатие

Проверьте, отправляется ли push-сообщение в соответствии с указанными бизнес-правилами.

При проверке отсутствия push-сообщений пользователь больше не будет получать push-сообщения.

Если пользователь устанавливает период времени «не беспокоить», убедитесь, что пользователь не может получать push-сообщения в течение периода времени «не беспокоить»;

В периоды отсутствия режима «Не беспокоить» пользователи могут получать push-сообщения в обычном режиме.

Если push-сообщение предназначено для вошедшего в систему пользователя, вам необходимо проверить, соответствует ли полученное push-сообщение личности пользователя.

Могу ли я получать сообщения, когда приложение не открыто?

Могу ли я получать сообщения при открытии приложения?

Есть ли разница в получении сообщений при входе в систему и не входе в систему?

Точная отправка, следует ли отправлять только указанным пользователям

1.10 Тестирование интерфейса

1.Форма

Как протестировать форму:

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

б. Перемещение формы. При быстром или медленном перемещении формы фон и сама форма должны корректно обновляться;

в. Масштабируйте форму. Элементы управления в форме должны меняться по мере изменения размера формы;

г. Разрешение дисплея Необходимо проверить, нормально ли отображается программа при разных разрешениях;

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

2. Элементы управления

Месяц соответствует дате (например, в феврале 28 дней, а в июле 31 день).

В феврале високосного года должно быть 29 дней.

При пересечении нового года год следует увеличить.

Метод испытания:

а. Шрифт и размер формы или элемента управления должны быть одинаковыми;

  b, Внимание: смешанные символы полной и половинной ширины.

c, никакой смеси китайского и английского языков.

Меню, обратите внимание при тестировании:

а. Может ли меню выбора работать нормально и соответствует ли фактическому содержимому выполнения;

б. Есть ли опечатки:

в. Повторяются ли сочетания клавиш;

d. Повторяется ли горячая клавиша;

e. Действительны ли сочетания клавиш и операции с горячими клавишами;

е, есть ли смесь китайского и английского языков;

g. Меню должно быть связано с контекстом. Например, когда пользователи с разными разрешениями входят в приложение, пользователи разных уровней могут видеть разные уровни меню и использовать разные уровни функций;

h, контекстное меню правой кнопки мыши;

g, функция камеры мобильного телефона может отображаться нормально;

3. Тестирование текстовых полей, кнопок и других элементов управления.

Тест текстового поля

Как протестировать текстовые поля

а. Введите обычные буквы или цифры.

б. Введите имя существующего файла;

c, введите очень длинные символы. Например, если вы введете количество символов, превышающее допустимый предел в поле «Имя», предполагая, что максимальное количество составляет 255 символов, попробуйте ввести 256 символов, чтобы проверить, может ли программа обработать его правильно;

г, введите значение по умолчанию, пробел, пробел;

д, если разрешены только буквы, попробуйте ввести цифры, иначе попробуйте ввести буквы;

f. Используйте такие операции, как копирование и вставка, для принудительного ввода данных, которые не разрешены программой;

g, введите специальные наборы символов, например NUL и т. д.;

h введите символы или текст, превышающий длину текстового поля, и проверьте, нормально ли отображается введенное содержимое;

i. Введите данные, которые не соответствуют формату, и проверьте, правильно ли проверена программа. Например, если программа требует ввода года, месяца и дня в формате гг/мм/дд, но если вы. на самом деле введите гггг/мм/дд, программа должна выдать сообщение об ошибке.

Методы испытаний, использованные в процессе тестирования:

1. Введите недопустимые данные;

2. Введите значение по умолчанию;

3. Введите специальный набор символов;

4. Введите данные, которые переполняют буфер;

5. Введите то же имя файла;

4. Тестирование управления кнопками управления

а. Нажмите кнопку, чтобы правильно отреагировать на операцию. Например, нажмите «ОК», чтобы выполнить операцию правильно; нажмите «Отмена», чтобы выйти из окна;

б. Давать достаточные подсказки и пояснения для неправомерных вводов или операций. Например, при вводе количества рабочих дней в месяце 32 после нажатия «ОК» система должна подсказать: количество дней не может быть больше 31;

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

Тестирование элементов управления переключателями

а. Группа переключателей не может быть выбрана одновременно, можно выбрать только одну.

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

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

5. Тестирование текстового поля управления вверх-вниз.

а. Введите число напрямую или используйте стрелки вверх и вниз для управления им. Например, введите 10 в поле «Число» или щелкните стрелку вверх, чтобы изменить число на 10;

б. Используйте стрелки вверх и вниз для управления автоматическим циклом чисел. Например, если максимальное число равно 253, нажмите стрелку вверх, и число автоматически изменится на 1;

c. Если вы введете значение, выходящее за пределы допустимого, система предложит вам ввести его повторно;

d. Введите значение по умолчанию и оставьте его пустым. Например, номер «Вставить» является значением по умолчанию, нажмите «ОК» или удалите значение по умолчанию и сделайте содержимое пустым, нажмите «ОК» для проверки;

е, введите символы. В это время система должна сообщить, что ввод неверен.

6. Проверка комбинированного списка

a. Содержание записи правильное, а подробное содержание записи можно определить в соответствии с описанием требований;

б. Выполните функции каждого элемента в списке один за другим;

c. Проверьте, можно ли ввести данные в поле со списком;

7. Тестирование флажков

а. Одновременно можно установить несколько флажков;

б. Несколько флажков могут быть выбраны частично;

в. Можно снять несколько флажков;

d. Поочередно выполните функции каждого флажка;

8. Тестирование управления списком.

a. Содержимое элементов правильное; как и в поле со списком, убедитесь, что содержимое списка соответствует спецификации требований и не отсутствует или не является неправильным;

б. Используйте полосы прокрутки, если в списке имеется большой объем содержимого;

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

9. Тестирование управления полосой прокрутки

Следует отметить несколько моментов:

а. Длина полосы прокрутки меняется со временем в зависимости от длины или ширины отображаемой информации. Это помогает пользователю понять положение и процент отображаемой информации, например, при просмотре 100-страничного документа в Word. при переходе на страницу 50 полоса прокрутки должна находиться посередине;

б. Перетащите полосу прокрутки, проверьте состояние обновления экрана и посмотрите, есть ли искаженные символы;

в) щелкните полосу прокрутки;

d. Используйте колесо прокрутки для управления полосой прокрутки;

e, кнопки вверх и вниз полосы прокрутки.

Тестирование при смешанном использовании различных элементов управления в форме.

а. Взаимодействие между органами управления;

б. Клавиши табуляции обычно располагаются сверху вниз и слева направо;

в. Использование горячих клавиш проверяется поочередно;

d. Использование клавиш ввода и клавиши esc;

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

ps: При тестировании поля ввода пароля особое внимание следует уделить тестированию ввода букв в верхнем регистре.

2. Тестирование пользовательского интерфейса

Сравнение прототипа и визуализации (навигационный тест)

графический тест

Тестирование контента

3. Тестирование совместимости (например, платформа облачного тестирования Testin)

Совместимо ли оно с местными и основными приложениями?

Совместимость различных операционных систем и их совместимость.

Совместимость с различными разрешениями экрана мобильного телефона.

4. Перекрестное тестирование

Тестирование конфликтов — это тест, при котором функция выполняется, а другое событие или операция вмешивается в процесс.

5. Установите, обновите, удалите и обновите.

5.1 Проверка установки и удаления

Вперед: можно ли установить приложение нормально (установка из командной строки; установка установочного пакета apk/ipa) (обычно с сетью или без нее)

Плюсы: плавная ли скорость работы приложения?

Реверс: можно ли установить приложение на разные системы, версии и модели IOS и Android.

Обратное: можно ли его удалить обычным способом (удаление стороннего ПО; удаление из командной строки; удаление рабочего стола)

Обеспечить регресс:После установки приложения можно ли его нормально открыть и стабильно работать?

Обратное: Если в процессе установки сеть прерывается или сеть нестабильна, появляется ли соответствующий запрос?

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

Обратное: в процессе удаления возникают неожиданные ситуации, такие как сбои, перезагрузки, точки останова и т. д. Может ли нормальное удаление продолжиться после восстановления среды?

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

Обратное: можно ли приостановить процесс установки и нажать еще раз, чтобы продолжить установку?

Обратное: Как вести себя, когда места для установки недостаточно, есть ли соответствующие подсказки и дружелюбны ли подсказки

Обратное: Если в процессе установки сеть прерывается или сеть нестабильна, появляется ли соответствующий запрос?

Реверс: установка на телефонную карту или SD-карту (разные версии IOS и Android)

5.2 Тест обновления

5.3 Тест обновления

Вперед: Когда у клиента появится новая версия, появится запрос на обновление.

Обратное: после отмены версии старую версию можно использовать в обычном режиме.

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

Реверс: можно ли нормально использовать новые и старые функции после обновления приложения.

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

Обратное: после обновления приложения проверьте номер версии, должно быть обновление.

Обратное: Когда у клиента появилась новая версия, обновите ее напрямую и проверьте, можно ли ее обновить нормально, не удаляя клиент локально.

Обратное: если у клиента есть новая версия, без локального удаления клиента, проверяется, является ли обновленная функция клиента функцией новой версии.

Обратное: если у клиента установлена ​​новая версия, не удаляя клиент локально, проверьте, был ли файл ресурсов с тем же именем, например изображение, нормально обновлен до последней версии.

Обратное: тестирование непредвиденных ситуаций во время обновления и установки (например, сбой, отключение питания, перезагрузка).

Обратное: принудительное обновление (после открытия приложения приложение автоматически обновляется, в противном случае приложение нельзя использовать после многократного закрытия и открытия приложения, появляется ли всплывающее окно обновления нормально и не может ли оно быть закрыто); правильное нажатие кнопки «Обновить» приводит к переходу на страницу обновления, настроенную в фоновом режиме.

Обратное: непринудительное обновление (запрашивается только одно обновление): всплывающее окно можно закрыть в обычном режиме; перезапустите приложение, и запрос на обновление будет отображаться снова или больше не будет отображаться, как требуется, щелкните обновление, чтобы проверить, есть ли оно; правильно перейти на страницу обновления, настроенную в фоновом режиме

Обратное: при наличии новой версии успешно ли прямое обновление без удаления клиента.

Обратное: тестирование непредвиденных ситуаций во время обновления и установки (например, сбой, отключение питания, перезагрузка).

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

6. Тестирование пользовательского опыта

Общий комфорт продукта или услуги

7. Тестирование безопасности

Зашифрована ли конфиденциальная информация, используйте инструменты перехвата пакетов для анализа

Пароль тоже проверен?

Сохранятся ли на устройстве важные данные, например платежные пароли?

Есть ли подсказка при входе в систему с одной и той же учетной записью на разных терминалах?

Есть ли какое-либо сообщение при входе в систему из другого места?

Будет ли система выполнять несколько незаконных входов в систему и будут ли появляться какие-либо подсказки?

Ограничить или разрешить использование определенных функций мобильного телефона

Будет ли повторно использоваться зарегистрированный код подтверждения и существует ли ограничение по времени ожидания

Захват и декомпиляция протокола

8. Тест производительности

Тестирование производительности сервера и тестирование производительности мобильных телефонов Например: ЦП, память, трафик загрузки, трафик загрузки, энергопотребление и т. д.

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

время ответа

стресс-тест

Тест энергопотребления

Тест потока мощности

Как правило, загрузка ЦП прямо пропорциональна энергопотреблению мобильного телефона. Загрузка ЦП не может превышать 10 %, а объем трафика не должен превышать 10 М. Данные можно получить с помощью некоторого программного обеспечения для мониторинга на мобильном телефоне Android.

Потребление процессора и памяти

Процессор и память, используемые приложением

Время запуска приложения

Время, необходимое для запуска приложения

частота аварий

частота аварий

утечка памяти

Программы Android написаны на языке Java, поэтому управление памятью в Android аналогично управлению памятью в Java. Программисты выделяют память для объектов через new. Всем объектам выделяется место в куче Java. Однако освобождение объектов завершается сборщиком мусора. Виртуальная машина Android — Dalvik, которая предоставляет регистры. Максимальный размер кучи обычно составляет 16 МБ, а на некоторых машинах — 24 МБ.

9. Процесс тестирования мобильного приложения

анализ потребностей->Обзор требований->Разработчик пишет график->тест Расписание->писатьтествариант использования->вариант использования Обзор->Отправить базовый план->специфическийтестпроцесс->тестпроходить

10. Инструменты тестирования мобильных приложений

Платформа облачного тестирования, testin, Baidu MTC, другие инструменты GT

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/155638.html Исходная ссылка: https://javaforall.cn

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.