Анализаторы кода и Профайлеры
Для анализа покрытия кода используются такие инструменты, как Анализаторы кода и Профайлеры.
Анализаторы кода, как следует из названия, тестируют программу путем анализа ее кода. Анализаторы служат как для выявления ошибок, так и для выявления возможностей оптимизации. Различают два вида анализаторов кода: динамические и статические анализаторы кода.
Отдельной группой стоят профайлеры – анализаторы кода (чаще динамические), предназначенные для составления профиля тестируемой программы. Профайлер – это программа, которая наблюдает за работой программы и выполняет сбор характеристик ее работы. С помощью профайлера можно определить, какие части кода приложения выполняются дольше всего, как приложение использует память, построить граф вызовов функций в приложении, выявить неиспользуемые участки кода в приложении и так далее.
Динамические анализаторы кода предназначены для обнаружения ошибок в приложении во время выполнения программы. Из этого принципа работы и вытекает основной недостаток динамического анализатора: для того чтобы убедиться в корректности программы, необходимо выполнить все возможные ветки кода. Для реальной программы это может быть затруднительно. Но это не значит, что динамический анализ кода не нужен. Такой анализ позволяет обнаружить ошибки, которые зависят от действий пользователя и не могут быть определены по коду приложения.
Статические анализаторы кода предназначены для комплексного обеспечения качества кода и содержат множество (до нескольких сотен) анализируемых правил. Результат работы статического анализатора – это список обнаруженных в коде потенциальных проблем с указанием имени файла и конкретной строки. К сожалению, статический анализатор не может абсолютно точно сказать, является ли потенциальная ошибка в коде реальной проблемой. Это может знать только программист. Поэтому, по результатам работы анализатора необходим статический анализ кода – просмотр программистом кода, помеченного статическим анализатором там, где потенциально может находиться ошибка.
AQtime
AQtime — профилировщик производительности, а также набор инструментов для отслеживания утечек памяти и ресурсов, разработанный компанией AutomatedQA. Данный инструмент может встраиваться в Microsoft Visual Studio, Visual Studio Team System, Borland Developer Studio и Embarcadero RAD Studio, что позволяет анализировать приложение, не покидая среды разработки.
AQtime применяется для множества различных задач по оптимизации при необходимости улучшить производительность приложения и его потребление памяти. Он включает в себя набор профилировщиков для анализа различных параметров приложения. AQtime производит многосторонний анализ производительности приложения с точки зрения затраченного времени на строчку кода при выполнении функции. Он выявляет проблемы производительности и утечки памяти, анализирует уровень потребления ресурсов, вызовы функций и их порядок. Также осуществляет мониторинг покрытия кода, совместимость с Windows API, а также включает в себя другие профилировщики для анализа большего числа параметров приложения.
Оптимизация, в первую очередь, нужна в приложениях, использующих "тяжёлую" графику, а также для всяческих серверов, которые должны показывать высокую скорость работы даже при большом количестве адресованных им запросов (в разумных пределах, конечно, но всё-таки). Но на этом список, конечно, не заканчивается. Приложениям, выполняющим различные научные расчёты, например, также критична скорость их выполнения. В общем, как видите, даже в современных условиях не всё можно отдать на откуп быстрому "железу" - кое-где и от софта требуется изрядное проворство.
Оптимизации проводят для "узких" мест приложения, которые являются самыми пагубными для его производительности в целом. К сожалению, найти "узкое" место с помощью одного только анализа исходного кода очень трудно, потому что даже идеально написанный код может работать далеко не идеально из-за "косяков" в самой архитектуре программного продукта. Поэтому и возникает необходимость в использовании специальных программ, которые и покажут самые медленные участки готового программного кода - именно эти программы и называются профилировщиками, и именно к этому классу программ принадлежит AQtime.
AQtime ориентирован на работу с Win32 и Win64-приложениях, скомпилированных в родной исполняемый код платформы. С помощью AQtime вы имеете возможность также профилировать .NET-приложения для всех версий .NET Framework'а. Также есть возможность профилировать функции на Jscript'е и VBScript'е.
В данном профилировщике отсутствует необходимость модифицировать исходный код приложения и делать специальный "билд" для того, чтобы его затем профилировать.
Контрольные вопросы:
1. На какие три группы можно разделить средства автоматизации тестирования?
2. В чем заключаются плюсы автоматизации тестирования?
3. Какие есть минусы у автоматизации тестирования?
4. Где нужно применять автоматизацию тестирования?
5. Дайте определение понятия «Тестовый случай».
6. Что проверяют средства тестирования функциональности?
7. На каких уровнях производится автоматизированное тестирование функциональности?
8. Что проверяется при модульном тестировании?
9. Что проверяется на уровне функционального тестирования?
10. Что проверяется при тестировании пользовательского интерфейса?
11. Какие инструменты функционального тестирования Вы знаете? Какие возможности есть у каждого инструмента?
12. Что проверяют средства тестирования производительности? Как производится автоматизированное тестирование производительности?
13. Что является основными целями нагрузочного тестирования?
14. Какие инструменты нагрузочного тестирования Вы знаете?
15. На что надо обращать внимание при выборе инструмента автоматизации тестирования?
16. Какую структуру должны иметь автоматизированные тестовые скрипты? Какие функции выполняются на каждом этапе?
17. Какие виды инструментов используются для анализа покрытия кода? Что могут выполнять инструменты каждого вида?
18. Для чего предназначен инструмент AQtime? Какие возможности есть у данного инструмента?
Лекция 19
ТЕМА: Документирование кода в Delphi.
Литература: 1. Как писать документацию к программному обеспечению (часть 1). (https://protext.su/pro/?p=2590 – Всё для технического документирования).
2. Документирование кода в Delphi XE2. (http://www.webdelphi.ru/2011/12/dokumentirovanie-koda-v-delphi-xe2/ – Программируем в Delphi).
Документирование является неотъемлемой частью хорошего кода и проекта в целом. Хорошие разработчики тратят много времени на поддержку документации, но в дальнейшем это окупается с лихвой: экономит время на поддержке кода, его расширении и исправлении ошибок, позволяет сократить время на погружение в проект новых разработчиков и т.д. Так же, хорошо документированный код неявно стимулирует разработчика к применению стандартов кодирования.
При документировании кода нужно решить, сколько документации нужно включить в программный код, и сколько должно быть отдельно от него. Чем больше технической документации разрабатывается внутри исходного кода программы, тем легче будет обновлять и поддерживать её вместе с кодом, как и документировать различные версии оригинального приложения. Как минимум, документация в исходном коде должна объяснять назначение функций, подпрограмм, переменных и констант.
Если исходный код особенно длинный, его можно задокументировать в виде файла справки, который можно проиндексировать или запустить поиск по ключевым словам. Это особенно удобно для приложений, где логика программы разбита на несколько страниц и включает в себя ряд дополнительных файлов, как определённые веб-приложения.
Некоторые языки программирования, такие как Java и .NET Framework (VisualBasic .NET, C#), имеют свои собственные стандарты для документирования кода. В этих случаях следует придерживаться стандартов относительно того, какую часть документации нужно включить в исходный код.
Также нужен инструмент автоматического создания документации, который бы прошелся по коду, и извлек из него заметки, описания, определения и т.д., и уложил бы эту информацию в необходимый формат. Выбор соответствующего инструмента документированияобусловлен:
· языком, на котором написан код;
· типом формируемого выходного документа.
· используемым языком для написания специальных комментариев.
Текстовых редакторов от MicrosoftWord достаточно для создания отдельных текстовых файлов документации, при условии, что документация довольно кратка и проста. Для длинных и сложных текстовых файлов многие технические писатели предпочитают специальный инструмент документирования, например AdobeFrameMaker. Файлы справки для документирования исходного кода можно создавать любым инструментом написания справки: RoboHelp, HelpandManual, Doc-To-Help, MadCapFlare,Doc-O-Matic, PasDoc или HelpLogix.
Дата добавления: 2015-09-07; просмотров: 2702;