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

Всем привет. Как вы поняли из количества сообщений в моем профиле, я начинающий :slight_smile: Сейчас работаю в небольшой компании и мне надо автоматизировать тестирование десктопного приложения (раньше я работал только с web) Программа связана с форексом и представляет собой конвертер данных связанный со временем. Если немного подробнее то на входе мы имеем набор файлов с юникс временем, вот пример 1515151277; 0.98090; 0.98104 (unixTimeStamp; bid; ask это общая схема) из этого мы получаем файлы с такими данными EURUSD, 20180105,112117,0.98104,0.98090 ( curCode, YYYYMMdd, HHmmss, ask, bid) кроме того файлы раскладываются по папкам (года), а в этих папках месяца.

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

PS сейчас стараюсь что-то сделать с помощью Java + Winium (как Selenium только для десктоп) + TestNG

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

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

Если так, берите в руки какой нибудь груви (он позволяет довольно просто работать с файлами и большими коллекциями из коробки + с коллекциями делать всякий груви-меджик) и проверяйте на здоровье) ну алгоритм проверки конечно придется написать =)

а что скажете касательно юнит тестов? может проще проверить методы в коде и все?

1 лайк

С этого нужно было и начать

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

Юниты пишутся в том же коде, что и само приложение, запускаются при компиляции. По хорошему библиотеки и мат.логику алгоритмов надо покрывать юнитами и только ими, а для верняка можно ещё интеграцию проверить. Мы про одни и те же юнит-тесты сейчас говорим?

Да про одни и те же…но юнит тесты пишутся самими программистами, а я тестировщик. Вот я и думаю как правильнее решить здесь вопрос

приложение берет данные из

  1. сети - требуешь конфиг с обращением на локалхост с портом например 9999 - данные мокаешь при помощи Wiremock server
  2. локальных файлов - мокаешь (подменяешь локальные файлы) тестовыми данными

дальше ЮИ тест

  • если данные такое-то
  • то на ЮИ будет то-то

Если Вам нужен регрессионный тест то у Вас у же все для этого есть:

  1. У вас есть исходный файл и даже несколько (возьмите пару месяцев в каждом году и несколько лет, желательно брать самые большие файлы в году)
  2. У вас есть ожидаемый результат (возьмите сгенерёные проверенные Вами файлы это будет ваш снапшот)
  3. При помощи Winium стартуйте Ваше приложение с исходными файлами и получайте новые сгенереные файлы
  4. В ассертах проверяйте дифф нового сгенереного файла со снепшотом
    4.1) Если отличия Вас в принципе не интересуют, а волнует только то что программа стала вести себя по другому и генерит отличный от снепшота файл (тогда можете снять просто мд5 хеши с файлов и сравнивать в ассертах их). Но с таким подходом потом придется искать вручную что именно сломалось в новом файле.
1 лайк

Всем спасибо за помощь. Принял решение делать проверки просто Java + TestNG. Это будет та же самая работа с файлами, только с проверками…