В базу ООП положены следующие правила:
1. Абстрагирование – процесс выделения абстракций в предметной области задачи. Абстракция – совокупность значительных черт некоего объекта, каковые отличают его от всех других видов объектов и, так, четко определяют изюминке данного объекта с позиций анализа и дальнейшего рассмотрения.
Используемая абстракция настоящего предмета значительно зависит от решаемой задачи: в одном случае нас будет интересовать форма предмета, в другом вес, в третьем – материалы, из которых он сделан, в четвертом – закон перемещения предмета и т.д.
Современный уровень абстракции предполагает объединение всех особенностей абстракции (как касающихся состояния разбираемого объекта, так и определяющих его поведение) в единую программную единицу некоторый слишком общий тип (класс).
2. Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих значительных черт ее как целого.
Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:
- интерфейс – совокупность дешёвых извне элементов реализации абстракции (поведения и основные характеристики состояния);
- реализация – совокупность недоступных извне элементов реализации абстракции (механизмы реализации и внутренняя организация абстракции ее поведения).
Ограничение доступа в ООП разрешает разработчику:
- делать конструирование совокупности поэтапно, не отвлекаясь на особенности реализации применяемых абстракций;
- легко модифицировать реализацию отдельных объектов, что в верно организованной совокупности не потребует трансформации вторых объектов.
Сочетание объединения всех особенностей предмета (составляющих его поведения и состояния) в ограничения доступа и единую абстракцию к реализации этих особенностей стало называться инкапсуляции.
3. Модульность – принцип разработки программной совокупности, предполагающий реализацию ее в виде отдельных частей (модулей). При исполнении декомпозиции совокупности на модули нужно объединять логически связанные части, по возможности снабжая сокращение количества внешних связей между модулями.
4. Иерархия – ранжированная либо упорядоченная совокупность абстракций. Принцип иерархичности предполагает применение иерархий при разработке программных совокупностей.
В ООП употребляются два вида иерархии:
- иерархия «целое/часть» – говорит о том, что кое-какие абстракции включены в разглядываемую абстракцию как ее части, к примеру, лампа складывается из цоколя, колбы и нити накаливания. Данный вариант иерархии употребляется в ходе разбиения совокупности на различных стадиях проектирования;
- иерархия «неспециализированное/частное» – говорит о том, что некая абстракция есть частным случаем второй абстракции, к примеру, «стол – конкретный вид стола», а «столы – конкретный вид мебели». Употребляется при разработке структуры классов, в то время, когда сложные классы строятся на базе более несложных методом добавления к ним новых черт и, быть может, уточнения имеющихся.
Один из наиболее значимых механизмов ООП – наследование особенностей в иерархии неспециализированное/частное. Наследование – такое соотношение между абстракциями, в то время, когда одна из них применяет структурную либо функциональную часть второй либо нескольких вторых абстракций (соответственно множественное наследование и простой).
5. Типизация – ограничение, накладываемое на особенности объектов и мешающее взаимозаменяемости абстракций разных типов (либо очень сильно сужающее возможность таковой замены).
Применение принципа типизации снабжает:
- раннее обнаружение неточностей, которые связаны с недопустимыми операциями над программными объектами (неточности обнаруживаются на этапе компиляции программы при проверке допустимости исполнения данной операции над программным объектом);
- упрощение документирования;
- возможность генерации более действенного кода.
Тип может связываться с программным объектом статически (тип объекта выяснен на этапе компиляции – раннее связывание) и динамически (тип объекта определяется лишь на протяжении исполнения программы – позднее связывание). Реализация позднего связывания в языке программирования разрешает создавать переменные-указатели на объекты, находящиеся в собствености разным классам (полиморфные объекты), что значительно расширяет возможности языка.
6. Параллелизм – свойство нескольких абстракций в один момент быть в активном состоянии, т.е. делать кое-какие операции.
Существует множество задач, ответ которых требует одновременного исполнения некоторых последовательностей действий. К таким задачам, к примеру, относятся задачи автоматического управления несколькими процессами.
Настоящий параллелизм достигается лишь при реализации задач для того чтобы типа на многопроцессорных совокупностях, в то время, когда имеется возможность исполнения каждого процесса отдельным процессором. Совокупности с одним процессором имитируют параллелизм за счет разделения времени процессора между задачами управления разными процессами.
7. Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего этот программный объект, и/либо в пространстве, перемещаясь из адресного пространства, в котором он был создан.
Различают:
- временные объекты, хранящие промежуточные результаты некоторых действий, к примеру, вычислений;
- локальные объекты, существующие в подпрограмм, время судьбы которых исчисляется от вызова подпрограммы до ее завершения;
- глобальные объекты, существующие до тех пор пока программа загружена в память;
- сохраняемые объекты, эти которых сохраняются в файлах внешней памяти между сеансами работы программы.
Все вышеуказанные правила в той либо другой степени реализованы в разных предположениях объектно-ориентированных языков.
Язык считается объектно-ориентированным, в случае, если в нем реализованы первые четыре из рассмотренных семи правил.
Не обращая внимания на то, что принципиально ООП допустимо на многих языках программирования, нужно для объектно-ориентированных программ применять объектно-ориентированные языки, включающие особые средства, к примеру, Borland Pascal (начиная с версии 5.5), С++, Delphi и т.д.
21. Delphi — интегрированная среда разработки (Integrated Development Environment -IDE). Delphi позволяет создавать программы в стиле визуального конструирования формы, разместив на ней какие-либо визуальные элементы. Delphi имеет сложный интерфейс.
В Delphi имеются 10 окон, но по окончании загрузки появляются четыре окна:
• основное окно Delphi — ;
• окно с формой для проектирования приложения Forml (окно проектировщика формы);
• окно инспектора объектов Object Inspector;
• окно редактора кода Unitl.pas.
В главном окне реализуется главные функции управления проектом создаваемой программы. Основное управляющее окно совокупности Delphi в большинстве случаев находится в верхней части экрана. Оно содержит средства управления созданием программы и выглядит самый загруженным из всех окон
Это окно содержит:
• строчок заголовка;
• строчок меню;
• панель инструментов;
• палитру компонентов. Строчок заголовка главного окна отображает имя открытого сейчас проекта Projectl. Под строчком заголовка окна совокупности находится строчок меню, содержащая команды совокупности Delphi.
Рис. 1.
Строчок меню содержит команды, нужные для тестирования и разработки приложений, и употребляется так же, как любое стандартное меню Windows. Строчок меню — это очень важный элемент управления любой программы либо совокупности. Не считая строки меню программы в большинстве случаев содержат и другие элементы управления: командные кнопки, кнопки инструментов и другие. Кнопками комфортно пользоваться для выполнения операций, но не для всякой операции имеется кнопка, а лишь для тех, каковые видятся особенно довольно часто. Но посредством строчка меню возможно отыскать любую команду, на которую совокупность способна.
Под строчком меню находятся панели инструментов с кнопками. Во многих программах имеется лишь одна такая панель, но в совокупности Delphi их пара. Панели инструментов предназначены для исполнения некоторых команд, реализуемых главным меню. Кнопки панелей инструментов снабжают доступ к чаще всего видящимся командам. Дабы выяснить, как именуется та либо другая кнопка, нужно навести на нее указатель мыши и подождать, пока рядом с ним покажется всплывающая подсказка. На данной панели имеется, например, кнопка сохранения проекта на диске, кнопка открытия проекта, кнопка запуска программы на исполнение.
Одна из панелей инструментов, имеющихся в главном окне совокупности Delphi, заметно отличается от остальных. Это палитра компонентов. Палитра компонентов устроена в виде комплекта пиктограмм. Палитра компонентов содержит множество вкладок. Любая из них содержит собственный комплект компонентов. Неспециализированное число компонентов достигает нескольких сотен. Совокупность комплектов образовывает библиотеку визуальных компонентов (Visual Components Library — VCL). Имеется пара категорий компонентов, любая из которых расположена на собственной вкладке. Посредством палитры компонентов создаются экземпляры компонентов (объекты) на форме.
Рис. 2.
Окно инспектора объектов (Object Inspector) отображает свойства какого-либо компонента, активизированного щелчком мышью, либо самой формы. Имя активизированного компонента находится под заголовком окна. Конкретно посредством инспектора объектов настраивают объекты, применяемые в программах. Это же окно употребляется для настройки и выбора событий, на каковые будут реагировать объекты отечественной программы. С его помощью создаются либо выбираются необходимые процедуры обработки.
Окно проектировщика формы — основное место, где происходит сборка программы из компонентов, содержащихся в палитре компонентов. Сама форма — это уже готовая к исполнению программа. Сначала окно формы безлюдное, но, создавая программу, в указанное место формы добавляются объекты — экземпляры компонента выбранного типа. Сетка из точек в окне формы окажет помощь разместить объекты ровно и бережно. При работе программы ее не видно.
Форма — это заготовка окна будущей программы. Любая программа содержит хотя бы одно окно и, следовательно, одну форму. Исходя из этого при работе над программой окно формы мы видим на экране в любой момент. Заготовка первого окна именуется Forml. В случае, если в программе будет два окна, то заготовка второго будет именоваться Form2 и без того потом. Вероятна замена стандартного заглавия более подходящим для программы.
Рис. 3.
Последнее из открытых окон содержит код программы. Часть программы совокупность Delphi формирует машинально. Кроме того безлюдная программа для Windows планирует из нескольких тысяч операторов языка Pascal. Додавать необходимые операторы совокупность Delphi начинает еще перед тем, как программист приступил к созданию собственной программы.
Рис. 4.
Добавляются операторы конкретно в этом окне. Кое-какие операторы совокупность Delphi добавит сама, другие мы введем вручную. Конкретно исходя из этого окно кода ни при каких обстоятельствах не бывает безлюдным.
22. Для совокупности Delphi любая незавершенная программа — это проект. Проект включает в себя множество файлов. самые важными являются три файла: файл формы, файл файл и кода проекта.
Проект, складывается из:
• файла проекта Projectl.dpf,
• файла параметров проекта Projectl.dof,
• файла ресурсов проекта Project.res,
• файла настроек проекта Projectl.cfg,
• файла описания формы Unitl.dfm,
• файла модуля формы Unitl.pas.
Файл модуля формы доступен для редактирования, именно он отображается в Редакторе Кода. Остальные файлы создаются Delphi машинально. В ходе компиляции программы файлы преобразуются в исполняемый exe-файл, что, по умолчанию, создается в той же папке, в которой расположен файл проекта.
В проекте смогут быть задействованы пара форм, и файлы ресурсов и дополнительные модули, наряду с этим схема компиляции остается похожей.
Для сохранения проекта необходимо воспользоваться пунктом главного меню Save Project
As…
Дабы не смешивать файлы различных проектов, нужно любой новый проект сохранять в отдельную папку. Сперва предлогается ввести имя для модуля формы, а после этого имя проекта.
В то время, когда программа сохранена, возможно начать написание новой программы. Для этого выберается пункт главного меню File — New Application.
В следствии на экране появляется безлюдная заготовка формы. В случае, если же нужно загрузить ветхую программу, необходимо выбрать в главном меню Open Project или воспользоваться кнопкой на панели инструментов и загрузить соответствующий файл проекта.
Совместно со средой Delphi поставляется свыше сотни разных компонентов, а в сети возможно отыскать тысячи. Они отличаются по собственному внешнему виду, функциям, методам реализации, требованиям к аппаратной части и т.п., но, однако, все они выстроены на едином фундаменте, единой объектной базе.
Не обращая внимания на различие функций и форм компонентов, их возможно разбить на группы и классифицировать. Все компоненты возможно поделить на визуальные и невизуальные. Визуальные, со своей стороны, делятся на оконные графические элементы и элементы управления управления.
Визуальные компоненты являются элементами управления, каковые добавляются на форму: это кнопки, поля ввода, картины, панели и т.д. Те из них, что предназначены для ввода данных, смогут принимать фокус ввода, снабжая управление с клавиатуры.
Невизуальные компоненты проходят службу в основном для обеспечения более эргономичного доступа к определенным функциям совокупности. При добавлении их на форму на ней появляется иконка с изображением компонента, невидимая на протяжении выполнения программы. В этом и содержится их невизуальность. Не обращая внимания на это, кое-какие из них помогают для обеспечения зрительных по природе эффектов. К примеру, к таким относятся компоненты меню и диалоги.
Визуальные компоненты составляют интерфейс программы. Визуальные компоненты имеют довольно много событий и общих свойств, связанных, в первую очередь, с их визуальным отображением на форме.
Часть особенностей несёт ответственность за положение на форме: отступ слева, отступ сверху, высота, ширина, выравнивание.
Кое-какие определяют внешний вид: цвет, шрифт, заголовок. Кое-какие задают поведение компонента на протяжении выполнения программы: дешёв, виден, курсор, подсказка.
Механизм событий разрешает связать действия пользователя с нужными действиями программы. События определяют всю структуру программы, потому, что практически целый код, другими словами, фактически работа программиста, пишется в обработчиках событий.
В Windows действия пользователя в большинстве случаев сводятся к нажатиям мыши в определенных местах экрана, нажатию клавиш клавиатуры, переключению между компонентами и окнами. В соответствии с этим существуют и события, реагирующие на клавиатуры и нажатие мыши, переключение фокуса, активацию окон.
Помимо этого, для каждого компонента смогут существовать характерные для него события, на каковые может потребоваться обработка и реакция, к примеру, событие трансформации текста в поле ввода.
23. 5.1. ПРОГРАММНЫЕ НЕТОЧНОСТИ
Программ без неточностей не существует. Практика пока-зывдет, что виновниками неточностей в программах значительно чаще бывают сами программисты. Один из неспециализированных законов практического программирования пребывает в том, что ни одна программа не дает желаемых результатов при выполнения попытке и первой трансляции. Некое представление о настоящих обстоятельствах появления неточностей в работе программы дает следующее процентное соотношение источников сбоев:
Входные эти 1%
Неточности пользователя 5%
Аппаратура 1%
Системное ПО 3%
Разработка совокупности 15%
Программирование 75%
Программист обязан не только писать действенные программы, но и обнаружить в них всевозможные неточности. Современная практика обучения программированию ориентирована, по большей части, лишь на исполнение программистом первой половины собственной работы. Это все равно, как в случае, если обучать летчика лишь взлету, предполагая, что с посадкой автомобили он как-нибудь разберется сам, в случае, если будет делать все операции взлета в обратном порядке.
Существуют два типа программных неточностей:
синтаксические неточности — появляются из-за нарушения правил языка программирования. Такие неточности в большинстве случаев выявляются на протяжении компиляции. Смогут быть исключены относительно легко. Кроме того если не просматривать текст программы возможно быть уверенным, что компилятор на стадии трансляции отыщет неточности и выдаст соответствующие предупреждения. Практически поиск неточностей осуществляет компилятор, а их исправление — программист;
семантические (логические) неточности — те, что приводят к некорректным вычислениям либо неточностям на протяжении исполнения (run-time error). Семантические, неточности ликвидируют в большинстве случаев при помощи исполнения программы с шепетильно подобранными проверочными данными, для которых известен верный ответ.
24. Процесс тестирования нельзя путать с процессом отладки (debugging). Первый помогает только для обнаружения факта существования неточностей, а не для их устранения и локализации.
Отладка программ в большинстве случаев осуществляется с применением особых программных средств. Последние употребляются для изучения внутреннего поведения программы. Обычный отладчик разрешает вводить в программу точки останова для оценки промежуточных результатов и создавать модификацию и проверку значений переменных в этих точках.
Существуют пара способов отладки программы.
Распечатка текущего состоя н и я . Употребляется с целью фиксации фактических значений переменных для проверки хода вычислений. Для этого на протяжении отладки программы в места, каковые программист вычисляет критическими, помещают процедуры распечатки текущего состояния переменных. По окончании окончания теста вызовы этих процедур удаляются, и программа опять перекомпилируется.
Точки останова. Употребляются при разнообразные зацикливаний, в то время, когда программа в какой-то момент «зависает». В текст программы включают процедуры останова программы. К примеру, возможно поместить процедуру вывода простого сообщения наподобие «Достигнута точка #ппп» и инициировать паузу до нажатия на любую клавишу. При таком подходе программист совершенно верно знает, до какой точки дошла программа перед зацикливанием.
Способ деления п о п о л а м . Данный способ применяют связисты, в то время, когда ищут обрыв в кабеле, закопанном в почву. К примеру, в случае, если примерно известно до какого именно момента программа удачно выполняется, то в этом месте программы ставят точку останова. После этого ставят точку в конце «подозреваемой» процедуры и посредине — между первой и последней точками. Опять компилируют и делают программу. В случае, если программа дошла до второй точки, то зацикливание случилось где-то между второй и третьей точками, если не дошла — между первой и второй. Затем вставляется новая точка останова в локализованный участок и программа опять компилируется. Так, неизменно сжимая район поисков, возможно отыскать ошибочный участок.
Трассировка. есть последним средством обнаружения неточности. Она может оказаться весьма действенной, но существенно замедляет исполнение программы и, не будучи шепетильно спланированной, ведет к большим количествам выдаваемой информации. При трассировке происходит пошаговое исполнение программы с возможностью просмотра состояния всех переменных.
ОПТИМИЗАЦИЯ
В большинстве случаев программа создается в достаточно твёрдом временном режиме, что заставляет программиста искать, скорее, более верные ответы, чем более действенные. Под эффективностью программы знают, в первую очередь, скорость ее исполнения, и ее количество. Сейчас, в то время, когда уделяется особенное внимание интерфейсу пользователя, в перечень воздействующих на эффективность программы факторов возможно, пожалуй, кроме этого занести и удобство интерфейса. Так, под оптимизацией понимается процесс улучшения программы.
Оптимизация не есть необходимым условием разработки программы. Но существует целый класс программ, критичных как к скорости исполнения, так и к размеру. Таковыми являются программы графического вывода в силу громадного количества вычислений, которые связаны с графическими преобразованиями.
При проектировании громадных совокупностей оптимизация производится в два этапа, Сперва оптимизируют текст программы на языке большого уровня, а после этого самые критичные ко времени исполнения процедуры переписывают на язык ассемблера. Существуют следующие методы оптимизации программных кодов.
Разгрузка участков повторяемости. есть методом оптимизации, что значительно чаще подразумевает разгрузку циклов методом вынесения из них выражений, каковые смогут быть вычислены вне циклов.
К этому виду преобразований относятся кроме этого «чистки» тел рекурсивных процедур, в то время, когда выражения в соответствующем цикле (либо теле многократно вызываемой процедуры) выносятся и размещаются перед входом в участок повторяемости — это так называемая чистка вверх.
Время от времени используют чистку вниз, в то время, когда соответствующие фрагменты кода помещаются по окончании цикла. Наряду с этим необходимо обратить внимание на то, что выносить возможно лишь такие выражения, каковые непременно исполняются при каждом прохождении разгружаемого цикла.
Замена сложных операций на более простые. Часто одна операция предпочтительнее второй на том основании, что выполняется стремительнее, но знание таких нюансов приходит к программисту только с опытом.
К примеру, операция сложения выполняется стремительнее операции умножения, а умножение стремительнее операции деления. Исходя из этого один оператор умножения переменной на некое маленькое целое число (в большинстве случаев не более трех) лучше заменить на эквивалентное количество сложений. Выражение:
Total := Summa + Summa + Summa;
действеннее выражения: Total := 3 * Summa;
а операцию деления Summa := Summa/2; лучше заменить на более стремительное умножение, которое приведет к тому же самому результату Summa := Summa * 0.5;
Чистка программы. Этот метод повышает уровень качества программы за счет удаления из нее ненужных объектов и конструкций. Комплект преобразований этого типа включает в себя следующие варианты оптимизации:
удаление несущественных операторов, другими словами операторов, не воздействующих на итог программы;
удаление ненужных операторов, вычисляющих вспомогательные переменные, применяемые лишь для подстановки в другие выражения;
удаление заявленных, но неиспользуемых переменных и типов;
удаление аналогичных операторов;
удаление процедур, к каким нет обращений.
Необходимость в для того чтобы рода чистках появляется по причине того, что часто программист «захлебывается» в общем количестве переменных и процедур одного через чур громадного модуля. Подчас он объявляет переменные, каковые позже нигде в программе не применяет.
К примеру, программист может заявить целочисленную переменную для организации цикла, а после этого, спустя какое-то время, для организации другого цикла объявляет еще одну переменную, забыв о существовании прошлой и возможности ее повторного применения.
Экономия памяти. Одним из основных ресурсов по окончании процессорного времени, что применяет программа, есть количество оперативной памяти. Количество памяти зависит как от размера кода самой программы, так и от количества статических и динамических переменных.
Программист обязан обучаться как возможно экономнее применять память. Каждую структуру направляться шепетильно продумывать и не потребовать, скажем, для переменной, в которой будут храниться координаты текстового экрана, двухбайтового типа.
Это так называемая экономия на типе переменной. Существует и еще последовательность способов более экономного расходования памяти:
1) Глобальная экономия памяти подразумевает совмещение по памяти не существующих одновременно статических переменных. Модульное программирование кроме этого подразумевает разнесение объявлений несвязанных переменных в разные модули.
2) Изменение области существования переменной.
3) Перемещение оператора объявления переменной (резервирования памяти) ближе к тому участку программы, в котором находятся операторы, применяющие эту переменную, другими словами переменную направляться объявлять в границах того блока, где она употребляется.
4) Экономия стека: при передаче массива в качестве параметра подпрограммы, направляться применять ссылку на массив. Кроме экономии памяти это приводит кроме этого и к экономии времени благодаря тому, что совокупность не формирует копии передаваемого массива в стеке.
25. Виды тестирования, выполнение и разработка тестов
Тестирование (testing) — любой вид деятельности, в рамках которого методом настоящего исполнения каких-либо задач проверяется соответствующая работа или совокупности в целом, или составной ее части.
Тестирование программы (program testing) — проверка, которая проводится на протяжении прогона программы с целью убедиться, трудится ли она так, как требуется. Это осуществляется при исполнении одного либо нескольких тестовых прогонов, при которых в программную совокупность подаются входные (тестовые эти), а реакция совокупности фиксируется для анализа. Может осуществляться как с ЭВМ, так и без ЭВМ.
Один из основных законов тестирования гласит: «Тестирование программы либо ее отдельных модулей не должен осуществлять программист (несколько программистов), создавший эту программу либо модуль».
Для обеспечения достаточной степени надежности тестирования должен быть особый отдел в компании либо привлечены программисты из сторонних организаций. Первоначально разработчик сам ликвидирует небольшие неточности. В то время, когда компиляция модуля завершается, и компилятор выдает соответствующее сообщение «Compile successful, программист в большинстве случаев запускает откомпилированный фрагмент и создаёт пара тестов.
По окончании для того чтобы поверхностного тестирования разработчиком законченный модуль должен быть протестирован вторым программистом. Дело в том, что разработчик изначально настраивается на какой-то один вид вероятной неточности и, не найдя ее при предварительном тестировании, не склонен контролировать другие участки модуля. Сторонний программист разглядывает модуль, подключенный к программе как собственного рода «тёмный ящик» и пробует запускать его на предельных нагрузках.
Статистика свидетельствует, что цена тестирования образовывает не меньше 50% всей стоимости начальной разработки.
какое количество бы сил, времени и денег не было израсходовано на тестирование, один из основных законов программирования действует с неотвратимостью рока: «Тесты смогут доказать наличие неточностей в программе, но они не смогут доказать их отсутствия» (Э. Дейкстра «Заметки по структурному программированию»).
При тестировании смогут появляться следующие вопросы:
1) Искать все неточности либо неотёсанные?
2)Если не все, то как установить порог допустимости неточности?
3)В то время, когда завершать тестирование?
4)Что делать, в случае, если сроки поджимают либо нет ресурсов на предстоящее тестирование?
5) Где остановиться в документировании тестов?
Ответы на них сильно зависят от того, что вычислять качественной программой?
Качественная программа — это программа, делающая заблаговременно заявленные действия известным методом и не делающая никаких необъявленных действий.
Под заявленными действиями понимаются, а также, и методы обработки данных. Так, тестирование должно выполняться , пока программа не избавится от всех необъявленных действий (частным случаем которых есть неверная обработка, другими словами, в сущности, легко порча данных).
Движение ТЕСТИРОВАНИЯ
В ходе тестирования ПО осуществляются следующие виды деятельности:
Ручной прогон. На этом шаге программист посредством карандаша и листа бумаги моделирует прохождение данных через программу. При изучении текста программы от начала до конца, тяжело проверить всевозможные комбинации данных. Самое большее, что возможно сделать на практике, — проверить всевозможные типы либо самые вероятные комплекты комбинаций данных. Если они дают верные результаты, предполагается, что непроверенные комбинации кроме этого дадут верные результаты.
Проектирование тестов. есть самый ответственным процессом. Часто тест создается вручную. Время от времени используют генераторы тестовых данных — особые программы, формирующие данные в соответствии со спецификациями, задаваемыми программистом. Тестовые эти смогут систематически либо случайно выбираться из другого заданного комплекта данных для уменьшения их общего числа.
Исполнение тестов. На этом этапе осуществляется проверка всех вероятных методов намерено подготовленными тестами, и выявляется, как интерфейс программы выдержит настоящую нагрузку. Неприятность содержится в том, что тестирование происходит на весьма ограниченных количествах данных. В то время, когда база разрешённых будет насчитывать десятки, в противном случае и много тысяч записей, скорость исполнения запросов пользователей может стать неприемлемой.
Изучение результатов тестирования. устранение и Выявление неточностей довольно часто имеет циклический темперамент. Устранение одной неточности может порождать другие неточности. Особенно это относится работы с глобальными переменными, каковые коварны тем, что нельзя сказать с полной уверенностью, что где-то на нижнем уровне подпрограмм изменение состояния переменной не приведет к новой неточности.