Средства тестирования приложений для разработчиков


         

Средства тестирования приложений для разработчиков

C развитием аппаратной базы компьютерных систем - увеличением тактовой частоты до запредельных уровней (переваливших за гигагерц), ускорением обработки изображений в реальном масштабе времени при помощи супермощных видеоадаптеров многие разработчики не считают нужным (или возможным) оптимизировать написанные ими программные продукты, перенося весь неоптимизированный код на быструю подсистему, быстрый процессор, "умный" компилятор. Результат подобного злоупотребления мы наблюдаем ежедневно во время запуска программ на собственных компьютерах, отмечая странную тенденцию: чем новее программа, тем больше требует ресурсов, и тем медленнее работает. Но и это еще не все! Многие программы по окончании работы не освобождают все занимаемые ресурсы, что приводит к достаточно неприятным последствиям. Странно, не правда ли? Казалось бы, технологии программирования должны совершенствоваться и идти в ногу с аппаратными новинками, качественно используя все предоставляемые ими возможности, однако на деле все обстоит гораздо хуже. В погоне за новыми цифрами версий на коробках продуктов разработчики не считают нужным (возможным) проводить детальную оптимизацию написанного кода, тщательно отслеживая все вызовы и подсчитывая занимаемую системную память, поскольку занятие это трудоемкое и длительное, а получаемый результат не всегда оправдывает надежды: времени потрачено много, сил - еще больше, а производительность конечного продукта повысилась в лучшем случае на 9%, а то и меньше. Согласитесь, ситуация для нашего времени достаточно типичная, причем типична она для всех софтверных компаний, вне зависимости от ранга, размера, и, что немаловажно, от географического расположения. Лозунг: "время - деньги", применяемый всеми к месту и не к месту, в данной ситуации дает явный сбой! Получается количество версий - в ущерб качеству.

ClearCase - система конфигурационного и версионного контроля
Особое место в RUP занимает Source Code Management - управление исходным текстом. SCM описывает способ контроля и сопровождения информации и текущем состоянии каждого файла, составляющего программный проект. SCM - это методология, которую всецело поддерживает продукт ClearCase, чьей обязанностью и является отслеживание и детальное протоколирование всего, что связанно с разработкой проекта.

Описание возможностей
На чем основана программа
На чем основана программа - 2
На чем основана программа - 3
Интеграция
Дополнительные возможности
Спецификации
Заключение
Средства тестирования от компании Ratonal
Средства тестирования от компании Ratonal - 2

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

Правила для формулирования заданий
Правила для формулирования заданий - 2
Правила для формулирования заданий - 3
Правила для формулирования заданий - 4
Правила для формулирования заданий - 5
Правила для формулирования заданий - 6
Правила для формулирования заданий - 7
Сбалансированные шкалы
Сбалансированные шкалы - 2
Понятные, недвусмысленные утверждения

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

Методики тестирования
Метод фокусных групп
Проверка посредством наблюдения
Мыслим вслух
Проверка качества восприятия
Измерение производительности
Измерение производительности - 2
Карточная сортировка

Проведение тестирования. Юзабилити-тестирование
Большинство людей чувствуют себя неуютно, когда попадают в лабораторию, где им приходится выполнять задания, зная, что время выполнения замеряется и все их ошибки записываются для дальнейшего анализа, поэтому сделать так, чтобы пользователь чувствовал себя комфортно и спокойно, очень сложно. Объясните участнику, что он может в любой момент остановить тест, отлучиться в уборную или сделать перерыв, если это ему потребуется.

Подготовка участника к тестированию
Действия ассистента во время тестирования
Действия ассистента во время тестирования - 2
Действия наблюдателя во время тестирования

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

Контрольный список интерфейса ПО
Контрольный список Веб-интерфейса

Руководство по стандартной библиотеке шаблонов STL

Библиотека расширяет основные средства C++ последовательным способом, так что программисту на C/C++ легко начать пользоваться библиотекой. Например, библиотека содержит шаблонную функцию merge (слияние). Когда пользователю нужно два массива a и b объединить в с, то это может быть выполнено так: int a[1000]; int b[2000]; int c[3000]; ... merge (a, a+1000, b, b+2000, c);

Руководство по стандартной библиотеке шаблонов STL
Accum1
Accum2
Adjdiff1
Adjdiff0
Adjdiff2
Adjfind0
Adjfind1
Adjfind2
Alg1
Advance

Руководство по стандартной библиотеке шаблонов STL (2)
Rawiter
Queue1
Release1
Remcopy1
Remcpif1
Release2
Remove1
Remif1
Replace0
Replace1

Структура библиотеки
Если программные компоненты сведены в таблицу как трёхмерный массив, где одно измерение представляет различные типы данных (например, int, double), второе измерение представляет различные контейнеры (например, вектор, связный список, файл), а третье измерение представляет различные алгоритмы с контейнерами (например, поиск, сортировка, перемещение по кругу) , если i, j и k - размеры измерений, тогда должно быть разработано i* j *k различных версий кода.

Структура библиотеки
Структура библиотеки - 2

Требования
Для гарантии совместной работы различные компоненты библиотеки должны удовлетворять некоторым основным требованиям. Требования должны быть общими, насколько это возможно, так что вместо высказывания "класс X должен определить функцию-член operator++()", мы говорим "для любого объекта x класса X определён ++x ". (Не определено, является ли оператор членом или глобальной функцией.) Требования установлены в терминах чётких выражений, которые определяют допустимые условия типов, удовлетворяющих требованиям.

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

Операторы (Operators)
Пара (Pair)

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

Итераторы
Итераторы - 2
Итераторы ввода (Input iterators)
Итераторы вывода (Output iterators)
Последовательные итераторы (Forward iterators)
Двунаправленные итераторы
Итераторы произвольного доступа
Теги итераторов (Iterator tags)
Примеры использования тегов итераторов
Примитивы, определённые в библиотеке

Функциональные объекты
Функциональные объекты - это объекты, для которых определён operator(). Они важны для эффективного использования библиотеки. В местах, где ожидается передача указателя на функцию алгоритмическому шаблону, интерфейс установлен на приём объекта с определённым operator(). Это не только заставляет алгоритмические шаблоны работать с указателями на функции, но также позволяет им работать с произвольными функциональными объектами.

Функциональные объекты
Базовые классы (Base)
Арифметические операции (Arithmetic operations)
Сравнения (Comparisons)

Распределители
Одна из общих проблем в мобильности - это способность инкапсулировать информацию относительно модели памяти. Эта информация включает типы указателей, тип их разности, тип размера объектов в этой модели памяти, также как её примитивы выделения и освобождения памяти.

Требования распределителей
Распределитель по умолчанию

Ассоциативные контейнеры (Associative containers)
Ассоциативные контейнеры обеспечивают быстрый поиск данных, основанных на ключах. Библиотека предоставляет четыре основных вида ассоциативных контейнеров: set (множество), multiset (множество с дубликатами), map (словарь) и multimap (словарь с дубликатами).

Множество (Set)
Множество с дубликатами (Multiset)
Словарь (Map)
Словарь с дубликатами (Multimар)
Контейнеры
Контейнеры - 2
Последовательности (Sequences)
Последовательности (Sequences) - 2
Вектор (Vector)
Вектор (Vector) - 2

Итератор входного потока
Чтобы шаблоны алгоритмов могли работать непосредственно с потоками ввода-вывода, предусмотрены соответствующие шаблонные классы, подобные итераторам. Например, partial_sum_copy(istream_iteratordouble(cin), istream_iteratordouble(), ostream_iteratordouble(cout, "\n"));

Итератор входного потока (Istream Iterator)
Итератор выходного потока (Ostream Iterator)

Операции с каждым элементом (For each)
template class InputIterator, class Function Function for_each(InputIterator first, InputIterator last, Function f); for_each применяет f к результату разыменования каждого итератора в диапазоне [first, last) и возвращает f. Принято, что f не применяет какую-то непостоянную функцию к разыменованному итератору. f применяется точно last-first раз. Если f возвращает результат, результат игнорируется.

Найти (Find)
Найти рядом (Аdjacent find)
Подсчет (Count)
Отличие (Mismatch)
Сравнение на равенство (Equal)
Поиск подпоследовательности (Search)
Копировать (Copy)
Обменять (Swap)
Преобразовать (Transform)
Заменить (Replace)

Адаптеры контейнеров (Container adaptors)
Адаптеры - шаблонные классы, которые обеспечивают отображения интерфейса. Например, insert_iterator обеспечивает контейнер интерфейсом итератора вывода.

Адаптеры контейнеров (Container adaptors)
Стек (Stack)
Очередь (Queue)
Очередь с приоритетами (Priority queue)
Обратные итераторы (Reverse iterators)
Итераторы вставки (Insert iterators)
Адаптеры функций (Function adaptors)
Отрицатели (Negators)
Привязки (Binders)
Адаптеры указателей на функции

Примитивы управления памятью (Memory Handling Primitives)
Чтобы получать типичный указатель на неинициализированный буфер памяти данного размера, определена следующая функция: template class T inline T* allocate(ptrdiff_t n, Т*); // n = 0 Размер (в байтах) распределённого буфера - не меньше n*sizeof(T). Для каждой модели памяти имеется соответствующий шаблон функции allocate, определённый с типом первого параметра, являющимся типом расстояния указателей в модели памяти.

Примеры программ с шаблонами
Эти примеры демонстрируют использование нового продукта STLToolKit от компании ObjectSpace. STLToolKit - это самый простой способ использования STL, который работает на большинстве комбинаций платформ/компиляторов, включая cfront, Borland, Visual C++, Set C++, ObjectCenter и последние компиляторы от SunHP.

Советы здоровья на каждый день - перейти
Формула здоровья - перейти
Активное долголетие - перейти
Домашний доктор - перейти
Как продлить быстротечную жизнь - перейти
Лечебник. Народные способы - перейти
Энциклопедия женского здоровья - перейти
Медицинский справочник туриста - перейти
Службы Интернета - перейти
Основные концепции Active Directory - перейти
Домены и развертывание Active Directory - перейти
Администрирование доменов - перейти
Использование групповых политик - перейти
Средства безопасности Windows Server 2003 - перейти
Восстановление системы - перейти