Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Сравнение большого количества *.xlsx файлов.

java
Теги: #<Tag:0x00007f7b64f52df0>

(Andrey Lolcost) #1

Доброго времени суток.
Сразу скажу, что, к сожалению, мало что понимаю в авто тестировании и языков программирования не знаю. Это первый случай, когда я сталкиваюсь с подобной задачей и единственный инструмент, который мне хоть чуть-чуть знаком - Rational Integration Tester.
Просьба, если не посоветуете как быть, хотя бы понакидать имена утилит, которые, хотя бы теоретически способны выполнять подобные задачи, либо мануалы к прочтению. Т.к. сказать буду благодарен за любое участие.
Заранее спасибо!

По делу:
Есть необходимость сравнить большое количество данных передаваемых web-сервисом и данных из БД (~20-50 млн строк в общем, подразделяющиеся по уникальным ID, т.е. ~10 строк данных на ID).
Web-сервис по запросу передаёт на скачивание файл с данными по ID.
Т.к. знаю только RIT решил попробовать в нём. И при создании теста я столкнулся с рядом проблем:

  1. RIT при получении ответа** от web-сервиса получает excel файл в виде hex строки (504B0304… сплошной строкой) и методов сохранить это в виде файла я не знаю.
  2. Я сделал тест (пока я решил сделать сравнивалку файла с результатом выборки из БД), который обрабатывает ~6 файлов в секунду, что очень медленно. Думал, что можно будет разбить общий список ID на несколько и запустить несколько одинаковых тестов одновременно, но и с этим возникли проблемы - получаю java.lang.ArrayIndexOfBoundsException

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


(rmerkushin) #2

Скорее всего это не hex а base64, хотя я могу ошибаться. Я бы использовал чистый python и библиотеки requests и openpyxl. В любом случае готового решения нет. Вам нужно изучать предметную область и какой либо язык программирования.


(Mykhailo Poliarush) #3

Присоединяюсь к @rmerkushin тут явно, готовых решений нет. Но что точно нужно, это

  1. брать какой-то язык программирования
  2. найти две библиотеки для работы с веб-сервисом и xlsx файлами
  3. запрограммировать алгоритм выборки данных и его сравнение
  4. распараллелить выполнение алгоритма за счет потоков или процессов

Вот такой не хитрый алгоритм. Увы, действительно, готовых решений нет. Проработайте по каждому пункту, может быть что-то получиться. Если очень надо и ничего не получается, то можете обратиться за консультацией http://lessons2.ru/consulting


(Andrey Lolcost) #4

rmerkushin, polusok, добрый день и спасибо за ответы!
Пока для выполнения задачи товарищ сделал java класс (используется, как пользовательская функция в RIT проекте), выгружающий hex в файл, так что в целом есть медленное, но решение. Если бы не объём, то было бы очень удобно.

В целом - уже открыл книжки, если не быстро, то хоть на перспективу)
Еще раз спасибо!


(Mykhailo Poliarush) #5

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


(Andrey Lolcost) #6

Прошу прощения(тут без сарказма), но мне его за так из корпоративной сети не вытащить…=(


(Tatyana Durova) #7

У нас вот похожая задача, что делать?


(Максим Таран) #8

Так задача просто сравнить данные из базы с данными из xlsx???