Как вы «единично тестируете» отчет, созданный некоторым механизмом отчетов, например Crystal Reports или SQL Server Reporting Services?«Тестирование модулей» отчет
ответ
Проблема с отчетами сродни проблеме с графическими интерфейсами. Если в Report/GUI есть много (неуместных) интеллектов, это затруднит тестирование. Затем раствор является
- Separated Presentation: Отдельного представления от содержания (данные доступа/домен/бизнес-правил). В текущем контексте это означает, что вы создаете какой-то класс ViewModel, который отражает содержимое окончательного отчета (например, если у вас есть детали заказа и позиции в отчете, этот класс должен иметь свойства для деталей и список строк объекты предметов). ViewModel бесконечно проще тестировать. Последняя миля, применяющая представление к контенту, должна быть относительно тривиальной (тонкий интерфейс).
, например. если вы используете xslt для рендеринга своих отчетов, вы можете протестировать XML-данные с помощью таких инструментов, как XmlUnit или сравнение строк. Вы можете разумно убедить себя в преобразованиях xsl в данных xml для окончательного отчета ... Также любые ошибки здесь были бы тривиальными для исправления. - Однако, если вы используете сторонние поставщики, такие как Crystal Reports, у вас нет контроля/доступа к подключению к генерации отчетов.В таких случаях лучшее, что вы можете сделать, это генерировать репрезентативные/ожидаемые выходные файлы (например, pdf), называемые Golden Files. Используйте это как ресурс только для чтения в своих тестах для сравнения фактического вывода. Однако этот подход очень хрупок. В этом случае любое существенное изменение кода генерации отчета может привести к неправильному отображению всех предыдущих Golden Files. Поэтому их нужно будет восстановить. Если соотношение затрат и выгод для автоматизации слишком велико, я бы сказал, что руководство Go со старыми школьными планами тестирования doc.
Лучшее, что я могу придумать, сравнивает результаты с ожидаемым выходом.
Возможно, некоторый интеллект может быть добавлен, но проверить эти большие блоки не так просто.
Я согласен с Gamecat.
Сгенерировать отчет из фиксированных (постоянных) данных и сравнить его с ожидаемым выходом для этих данных.
После того, что вы можете быть в состоянии использовать простые тесты, такие как Diff (проверку, если файлы идентичны)
Для тестирования нашего собственного продукта Java на основе отчетности, i-net Clear Reports, мы проводим целую кучу протоколов испытаний один раз , экспортируя их в различные форматы экспорта, убедитесь, что результат по своему желанию, а затем непрерывно обрабатывать эти же отчеты ежедневно, сравнивая результаты с исходными данными. Любые различия тогда появляются как неудачи теста.
Это сработало хорошо для нас. Недостатком этого является любые незначительные отличия, которые могут не иметь какой-либо разницы, возникающие в результате испытаний, до тех пор, пока тестовые данные не будут сброшены.
Боковое примечание: это не совсем единичный тест, а скорее тест приемочного испытания. Но я не вижу, как вы могли бы «единично тестировать» весь отчет.
Моя текущая идея заключается в том, чтобы создавать тесты на двух уровнях:
испытания Единица измерения: Структура отчета, чтобы включить тестирование с использованием некоторых идей для тестирования пользовательского интерфейса, как Humble View. Сам доклад будет сделан как можно глубже. Он должен состоять в основном из простых связок полей. Затем элементы данных/объекты, которые выступают в качестве источника этих привязок, могут быть подвергнуты блочной проверке.
Приемочные тесты: Создайте несколько отчетов о примерах. Сначала проверьте их вручную. Затем настройте автоматизированный тест, который сравнивается с использованием diff.
- 1. Угловое тестирование? Тестирование модулей и тестирование E2E?
- 2. Тестирование модулей для Extendscript
- 3. Тестирование модулей - обрезание SqlDataReader
- 4. Тестирование модулей в Android?
- 5. Тестирование модулей в python?
- 6. Тестирование модулей Sqoop Applications
- 7. Тестирование модулей в октаве
- 8. ServiceStack: Тестирование модулей WebServices
- 9. Тестирование модулей в Silverlight
- 10. Тестирование модулей IHttpModule
- 11. Тестирование модулей в CakePHP?
- 12. Тестирование модулей и VB.NET
- 13. Тестирование модулей ConsoleAppender log4j
- 14. Тестирование модулей в Web2py
- 15. Тестирование модулей для исключений
- 16. Тестирование модулей COM-событий?
- 17. Тестирование модулей DAO
- 18. Тестирование модулей в C++
- 19. Тестирование модулей Scala
- 20. Тестирование модулей для скачивания
- 21. Тестирование модулей IoJS
- 22. Тестирование модулей WinForms
- 23. Автоматическое тестирование модулей C++
- 24. Тестирование модулей для Aerospike
- 25. Тестирование модулей SocketAsyncEventArgs
- 26. Тестирование модулей в flex
- 27. Тестирование зависимостей модулей Python
- 28. Тестирование модулей NHibernate UserTypes
- 29. Успешное тестирование модулей pyinotify?
- 30. Тестирование модулей в Liferay