
- •Перелік термінів та позначень
- •Передмова
- •Частина 1. Початок програмування в срср. Витоки розвитку
- •1.1. Поява і розвиток технології програмування (1952–2012)
- •1.2. Формування технологічних напрямів (1965–1975)
- •1.3. Становленья технології програмування (1975–1982)
- •1.4. Розвиток інтерфейсу в технології програмування (1976–1992)
- •1.5. Розвиток об’єктної технології програмування (1992–2002)
- •1.6. Індустріальні основи технології програмування (2002–2012)
- •1.7. Навчання тп у кну Тараса Шевченко (1965–2012) та філії мфті (2000–2012)
- •Контрольні питання і завдання до частини 1
- •Список літератури до частини 1
- •Частина 2. Парадигми технології програмування
- •2.1. Модульне програмування та збиральний підхід
- •2.1.1. Інтерфейс в програмуванні
- •2.1.2. Зборка модулів по а.П.Єршову
- •2.1.3. Метод зборки готових програмних елементів
- •2.1.4. Формальне подання методу збирання різномовних модулів
- •2.2. Парадигма об’єктно-орієнтованого програмування
- •2.2.1. Базові концепції ооп
- •2.2.2. Чотирьох рівневе проектування ом
- •2.2.3. Концепції об’єктного аналізу
- •2.2.4. Функції, алгебра та операції об’єктного аналізу
- •2.2.5. Моделювання моделі ПрО
- •2.2.6. Опис параметрів інтерфейсу ом
- •2.3. Парадигма uml-метода моделювання
- •2.3.1 Основні діаграми методу
- •2.3.2. Моделювання поведінки системи
- •2.3.3. Побудова пс засобами uml
- •2.4. Парадигма компонентного програмування
- •2.4.1. Теоретичні аспекти компонентного програмування
- •2.4.2. Моделі компонентного програмування
- •2.4.3. Графове подання компонентної моделі ПрО
- •2.4.4. Об’єднання компонентів. Модель середовища
- •2.4.5. Компонентна алгебра
- •2.4.6. Іінструментальні засоби кп
- •2.4.7. Технологія компонентної розробки пс
- •2.4.8. Типізація і класифікація програмних компонентів
- •2.4.9. Жц проектування пс із типових компонентів та кпв
- •Розробка вимог до пс – це формування та опис функціональних, технологічних, організаційних та ін. Властивостей програмної системи, які необхідні чи бажані з точки зору кінцевого користувача.
- •Розгортання рпс. У випадку, коли рпс створюється для конкретного замовника, який є і користувачем, то деякі завдання розгортання виконуються на попередніх етапах. До них, зокрема, відносяться:
- •Супровід рпс компонентній пс характеризується наступними особливостями.
- •2.5. Парадигма аспектно-орієнтованого програмування
- •2.5.1.Основні елементи парадигми аоп
- •2.5.2. Засоби аоп
- •2.5.3. Підтримка аоп впродовж життєвого циклу пс
- •2.5.5. Методичні аспекти аоп
- •2.6. Парадигма генерувального програмування
- •2.6.1 Предметно-орієнтована мова – dsl
- •2.6.2. Простір проблем і рішень ПрО
- •2.6.3. Інженерія ПрО і кпв
- •2.7. Сервісно-орієнтоване програмування
- •2.7.1 Базові понятті сервісу Інтернет
- •2.7.2. Сервіси wcf мs.Net з контрактами
- •2.8. Парадигми теоретичного програмування
- •2.8.1 Алгебраїчне та інсерційне програмування
- •2.8.2. Реалізація агентних програм
- •2.8.3. Експлікативне, номінативне програмування
- •2.8.4. Алгоритмічні алгебри
- •Контрольні питання і завдання до частини 2
- •Список літератури до частини 2
- •Частина 3. Моделі і засоби проектування предметних областей
- •3.1. Моделі проектування ПрО предметних областей
- •3.1.1. Концептуальні моделі пс, спс за компонентами
- •3.1.2. Моделі взаємозв’язку об’єктів
- •3.1.3. Модель інтеграції (зборка) компонентів
- •3.1.4. Тестування прикладних і інтерфейсних об'єктів
- •3.1.5. Моделі взаємодії і варіабельності пс для організації обчислень
- •3.1.6. Підхід до виконання пс в сучасних розподілених середовищах
- •3.2. Онтологічний підхід до подання знань про проблемні області
- •3.2.1. Онтологічне моделювання проблемної області
- •3.2.2. Мовний опис онтології домену чи спс
- •3.2.3. Підхід до реалізація онтології ПрО
- •3.3. Типи даних та засоби їх генерації для використання в збиральному прогрмуванні
- •3.3.1. Проблема забезпечення сумісності типів даних при зборки кпв
- •3.3.2. Аксіоматика простих типів даних
- •3.3.3. Аксіоматика структурних і складних типів даних. Структурні типи даних.
- •3.3.4. Семантичні аспекти взаємодії різнорідних програм
- •3.3.5. Характеристика типів даних для зборки програм
- •3.3.6. Фундаментальні і загальні типи даних
- •3.3.6. Баові поняття стандарту з типів даних
- •3.3.7. Перебудова загальних типів даних до фундаментальних для мп
- •3.4. Підходи і методи доказу програм
- •3.4.1. Мови специфікації програм –vdm, raise, Concept
- •3.4.2. Концепторна мова специфікації
- •3.4.3. Методи доведення правильності програм
- •3.4.4. Модель доказу програми за твердженнями
- •З.5. Проектування пс засобами жц з реалізації доменів
- •3.4.1. За загальна характеристика стандарту жц iso/iec 12207:2002
- •3.4.2. Формування конкретних моделей життєвого циклу
- •3.4.3. Підходи до моделювання ПрО мовними засобами dsl
- •3.6. Модель якості пс
- •3.6.1. Структура моделі якості
- •3.6.2. Модель витрат сосомо Боєма
- •3.6.3. Інтегрована модель витрат на спс
- •Контрольні питання і завдання до частини 3
- •Список літератури до частини 3
- •Частина 4. Методи індустрії виробицтва програм і систем
- •4.1. Загальні основи методології виробництва пс і спс
- •4.1.1. Моделі взаємодії компонентів у пс
- •4.1.2 Методологічні аспекти виробництва спс з готових ресурсів
- •4.2. Мова опису моделей взаємодії на основі xml
- •4.2.1 Подання та обмін даними в компонентних моделях
- •4.2.3 Модель конфігурації компонентів на основі xml
- •4.3. Графове подання пс і спс
- •4.3.1 Графове визначення моделі взаємодії об'єктів
- •4.3.2 Типи зв’язків об’єктів у графової моделі ПрО
- •4.4. Розробка методів побудови проблемно-орієнтованих технологій
- •4.4.1. Аналіз динаміки розвитку фабрик програм
- •4.3.2. Базисні ресурси фабрики програм
- •4.5. Загальні лінії виробництва програм з кпв
- •4.4.1. М етодологія побудови тл
- •4.4.2. Нові дисципліни індустрії наукового совтвера
- •4.4.3. Новітні засоби Grid і Cloud для обчислення задач e–sciences
- •4.4.4. Сучасні системи побудови рпс з сервісних ресурсів
- •4.4.5. Методологія розроблення тл
- •4.4.6. Принципи проектування іс
- •4.5. Методи при оцінюванні економічних характеристик проектів
- •4.5.2. Формальний апарат експертно-аналітичного оцінювання об’єктів і процесів у спс
- •4.5.3. Методи оцінки розміру
- •4.6. Створення Windows застосувань
- •4.6.1. Створення нової програми.
- •4.6.2. Властивості і дизайн програм
- •4.6.3. Компіляція програм
- •2.5. Запуск застосунка
- •4.6.4. Розширення функціональності програм
- •4.7. Інженерії тестування програмних систем
- •4.7.1. Основні поняття інженерії тестування
- •4.7.2 Становлення інженерії тестування
- •4.7.3. Методи тестування. Метрики і критерії
- •4.7.4. Інструменти тестування та оцінювання
- •4.7.5. Тестування веб-застосувань
- •Контрольні питання і завдання до частини 4
- •Список літератури до частини 4
- •5.2. Фабрика програм в кну
- •5.2.3. Створення фабрики студентів
- •5.2.4. Лінії продуктів фабрики на головної сторінки
- •5.2.5. Принципи роботи з репозиторієм програм і артефактів
- •5.2.6. Навчання дисципліні “Програмна інженерія” на фабрики
- •5.3. Репозиторій кпв
- •5.3.1. Загальний опис репозиторію
- •5.3.2. Технологія обслуговування репозиторію кпв
- •5.4. Розробка кпв
- •5.4.1. Опис моделей кпв, інтерфейсу і операцій розробки кпв
- •5.4.2. Реалізація побудови компонентної системи
- •5.4.3. Процеси технології оброблення кпв
- •5.4.4. Зборка різномовних програм у середовищі Visual Studio
- •5.5. Конфігурація кпв
- •5.5.1. Конфігурування кпв з урахуванням варіабельності
- •5.5.2. Опис прикладу використання конфігуратору програм
- •5.6. Генерація систем мовою dsl
- •5.6.1. Лінія опису та генерації доменів dsl
- •5.6.2. Опис життєвого циклу пз та його реалізації на мові dsl
- •2.7. Онтологія – обчислювальна геометрія
- •5.7.1. Онтологія домену – Обчислювальна геометрія
- •5.7.3. Опис моделі онтології ПрО «Обчислювальна геометрія»
- •5.7.4. Опис програми домену «Обчислювальна геометрія» мовою owl
- •5.8. Оцінка якості пс
- •5.8.2. Оцінка витрат на продукт
- •5.8.3. Опис модуля прогнозування трудовитрат на розробку пс
- •5.8.4. Приклад оцінювання затрат на розробку пс ас
- •5.9.1. Опис веб-технології Java ee
- •5.9.3. Приклад взаємодії Java і ms.Net через веб-сервіси
- •5.9.4. Інструкція по використанню графічного інтерфейсу прикладу
- •5.10. Генерація тд
- •5.10.1. Відображення типів даних у середовищі ітк
- •5.10.2. Система генерації загальних типів даних до фундаментальних
- •5.11. Інструментальні засоби сайта ітк
- •5. 12. Розділ сайта «Технологія навчання»
- •Контрольні питання і завдання до частини 5
- •Список літератури до частини 5
- •Післямова
- •Додаток 1. Парадигма структурного програмування
- •Додаток 2. Приклад створення служб wcf у ms Visual Studio 2010
- •Додаток 3. Онтологічний підхід з подання тестування кпв та пс
- •Додаток 4. Оцінка застосування метода сосомо на конкретних даних
- •Додаток 5. Програма курсу «Технологія програмування іс»
4.7.5. Тестування веб-застосувань
ПС для обчислювання деяких задач переходять в область вeб-застосувань. Безперервно зростає потоковий трафік засобів інформації і запитів, формованих переносними і вбудованими пристроями. Внаслідок цього зростає складність систем такого роду. Спостерігаються тенденції до постійного зростання попиту на Веб-служби. Вони стають все більш поширеними і все більш складними, граючи, таким чином, основну роль в більшості он-лайн проектів. Як і у всіх системах, заснованих на взаємодії між клієнтом і сервером, виникають проблеми некоректної обробку запитів клієнта або недостатньої перевірки вхідної інформації збоку розробника. Для усунення всякого роду неполадок і недоліків виконують тестування програм і ПС під час їх створення і виконання.
Тестування веб –систем це перевірка відповідності між реальною поведінкою програми і її очікуваною в нових заданих умовах гетерогенних середовищ, здійснювана на кінцевому наборі тестів, вибраному певним чином.
Його будемо розглядати по таким напрямам:
1. Підходи до тестування Веб-застосувань
2. Функціональне тестування
3. Тестування інтерфейсу з системою і користувачами
4. Тестування навантаження
5. Перевірка посилань і HTML-коду тощо.
6 Тестування безпеки.
1. Функціональне тестування (functional testing) – процес верифікації відповідності функціонування продукту його початковим специфікаціям. Звичайно подібні перевірки проводяться уручну, іноді до цього підключаються кінцеві користувачі як бета-тестерів. Проте ПС стають все складніше, а комбінації різних вхідних параметрів і підтримуваних ОС нерідко обчислюються десятками і сотнями.
Методи тестуванні Веб-систем:
– Record & Play – заснований на можливості засобів автоматизації тестування автоматично генерувати код.
– Functional Decomposition – в основі лежить розбиття всіх компонент по функціональній ознаці на бізнес-функціях, допоміжних функціях, які ще мають прив'язку до системи, що тестується, або до конкретного проекту, утілітах (функції загального призначення, не прив'язані до конкретної системи, технології, проекту).
– Data-driven – заснований на тому, що до деякого тесту або групи тестів прив'язується джерело даних, і цей тест або набір тестів циклічно виконується для кожного запису з цього джерела даних. Цілком може застосовуватися в комбінації з іншими підходами.
– Keyword-driven – представляє собою фактично движок для обробки посланих йому команд, а самі інструкції виносяться в зовнішнє джерело даних.
– Object-driven – заснований на тому, що основні ходові частини фреймворка реалізовані у вигляді об'єктів, що дозволяє збирати тести по цеглі.
– Model-based – заснований на тому, що система (або її частини), що тестується, описується у вигляді деякої поведінкової моделі.
– Capture & Playback (інші назви – Record & Playback, Capture & Replay) найбільш використовуваний метод, його суть полягає в тому, що сценарії тестування створюються на основі роботи користувача з додатком, що тестується
2.Тестування інтерфейсу користувача.
Тестування інтерфейсу міститься у таких кроках:
– аналіз вимог до інтерфейсу;
– розробка тесту для перевірки інтерфейсу;
– виконання тестових прикладів і збір інформації про виконання тестів;
– визначення повноти покриття, призначеного для користувача інтерфейсу тощо.
При чому тест-плани для перевірки інтерфейсу розглядаються як сценарії, що описують дії користувача при роботі з системою. Їх виконує оператор в ручному режимі, або система. Тест-план описує весь об'єм робіт, починаючи з опису об'єкту, стратегії, розкладу, критеріїв початку і закінчення тестування.
3. Тестування зручності. Виконується за тестом, який є головним для всіх інтерактивних сервісів з користувачем ("usability" або на зручність використовування). Цей метод тестування, направлений на такі етапи:
проведення високорівневого обстеження інтерфейсу і з'ясування того, чи дозволяє він з достатнім ступенем ефективності вирішувати задачі користувача.
оцінювання вимог і прототипу, призначеного для користувача інтерфейсу.. На даному етапі проводяться кількісні вимірювання характеристик користувача інтерфейсу: вимірюються кількість звернень до системи допомоги по відношенню до кількості досконалих операцій, кількість помилкових операцій, час усунення наслідків помилкових операцій і т.п.;
валидація тестування проводиться шляхом аналізу відповідності інтерфейсу ПС стандартам з точки зору зручності інтерфейсу, тестування всіх компонент кінцевого користувача та перевірка відсутності дефектів зручності ви користування інтерфейсу, виявлених на попередніх етапах;
порівняльне тестування на будь-якому етапі розробки інтерфейсу.
На зручність ви користування інтерфейсу впливають:
– швидкість людини вчиться і працювати з системою;
– запомятаємість навчання при пошуку помилки;
– задоволеність від враження від роботи з системою
4. Перевірка посилань – актуальна для внутрішніх посилань (у разі великих і розгалужених порталів) і для зовнішніх – якщо це, наприклад, каталог сайтів, або сторінка «Посилання». Перевірка HTML-коду сторінок та коректності HTML-коду на відповідність стандартам
У великих тестових комплексах для інтегрованої перевірки існує безліч утиліт. Таке тестування актуально для внутрішніх посилань у самому порталі та для зовнішніх через каталог сайтів Крім того, такий тест необхідно періодично проводити на працюючому сайті з урахуванням змін.,
5. Тестування безпеки базується на організації безпеки серверу в плані збереження інформації і проводиться регулярно. Тестуванню піддається не тільки сам конкретний сайт або веб-система, а весь сервер повністю (веб-сервер, ОС, мережні сервіси тощо). Програма "прикидається" реальним користувачем-зломщиком і намагається застосувати до серверу всі відомі їй методи атаки і перевіряє все уразливості. Результатом роботи буде звіт об знайдених уязвимостях і рекомендації по їх усуненню.
Помилки, пов'язані з перевіркою коректності введення, часто досить складно знайти у великому об'ємі коду, що взаємодіє з користувачем. Це є основною причиною того, що розробники використовують методологію тестування ПС на проникнення для їх виявлення. Веб-застосувань, проте не мають імунітету і до більш традиційних способів атаки. Тут поширені механізми аутентифікації для перевірки ненавмисного розкриття інформації, а також переповнювання буфера тощо.. Існують різні інструменти, дозволяючі виробляти автоматичне тестування безпеки, виконуючи такі задачі як cross site scripting, SQL injection, включаючи переповнювання буфера, підробка параметра, несанкціонований доступ, маніпуляції з HTTP запитами і т.д.
6. Тестування навантаження імітує одночасну роботу декількох сотень або тисяч відвідувачів (кожний з яких може "ходити" по сайту відповідно до свого сценарію), перевіряючи, чи буде стійкою робота сайту під великим навантаженням. Окрім цього, можна імітувати короткочасні списи навантаження, коли кількість відвідувачів стрибкоподібно збільшується – це дуже актуально для нових ресурсів і інших сайтів з нерівномірною аудиторією. В такому тесті перевіряється не тільки і не стільки сам сайт, скільки спільна злагоджена робота всього комплексу – апаратної частини серверу, веб-серверу, програмного ядра (engine) і інших компонентів сайту.
Основними цілями тестування навантаження є :
– оцінка продуктивності і працездатності додатку на етапі розробки і передачі в експлуатацію;
– оцінка продуктивності і працездатності додатку на етапі випуску нових релізів, патч-сетів;
– оптимізація продуктивності додатку, включаючи настройки серверів і оптимізацію коду;
– підбір відповідної для даного додатку апаратної (програмної платформи) і конфігурації серверу.
В тестування навантаження входять наступні тести:
– Тестування продуктивності (Performance testing). Задачею є визначення масштабованість додатку під навантаженням.
– Стресове тестування (Stress Testing). Дозволяє перевірити наскільки система і система в цілому працездатний в умовах стресу і також оцінити здібність системи до регенерації.
– Об'ємне тестування (Volume Testing). Задачею є отримання оцінки продуктивності при збільшенні об'ємів даних в базі даних додатку.
– Стабільності або надійності (Stability / Reliability Testing). Задачею є перевірка працездатності додатку при тривалому (багатогодинному) тестуванні з середнім рівнем навантаження.
– Моделювання Транзакцій (Transaction Simulation, TS). Заснований на використовуванні програмних GUI-роботів (GUI -Graphical User Interface).
– "Аналіз даних на стороні клієнта" (Client Capture, CC). заснований на витяганні даних про роботу додатку з операційної системи комп'ютера, де встановлено призначений для користувача система.
– "Аналіз Мережного Трафіка" (Network Sniffing, NS). Заснований на витяганні інформації про продуктивність додатків з мережного трафика.
Автоматизоване тестування
В процесі створення ІС нерідкі помилки і дефекти – це цілком очікуване і нормальне явище, а в умовах обмежених тимчасових ресурсів і високих вимог до якості програмних продуктів неминуче виникає необхідність в організації ефективного контролю і управління всім процесом тестування. Контроль якості ПО неможливий сьогодні без автоматизації всіх задач тестування.
Ручне тестування є витратним за часом, трудомістким і часто монотонним процесом. Воно приводить до виникнення проблем, особливо при обмежених ресурсах і жорстких термінах. Якщо вам потрібно поліпшити тестування додатків для перевірки коректності їх роботи, важливо рухатися у бік автоматизації всіх ручних задач тестування.
Інструментальні засоби автоматизації записують взаємодію користувачів з ПС, а сформовані на цій основі сценарії використовуються для подальших тестів, тобто автоматизація тестування дозволяє оптимізувати якість складних ПС ефективним по вартості способом за прийнятний час. Це допомагає швидше випустити програмне забезпечення більш високої якості.
Процес автоматизації тестування ділиться на три етапи:
– Запис. Сценарій тестування може включати точки верифікації (verification points) для перевірки відповіді системи і зробити сценарії тестування залежними від даних, щоб виконувати один і той же сценарій з різними наборами вхідних даних.
– Поліпшення шляхом додавання коду з різноманітними функціями Типові зміни сценаріїв тестування – умовне галуження, рефакторинг і обробка виняткових ситуацій.
– Відтворення. Виконання сценаріїв, що емалюють дії, які виконував користувач ПС при записі тесту. Розбіжності реєструються, і тестірувальник може зробити висновок про те, чи добре функціонує система або регресійне тестування виявило проблеми.
Для автоматизації тестування існує велика кількість систем:
HP LoadRunner, HP QuickTest Professional, HP Quality Center;
Segue SilkPerformer;
IBM Rational FunctionalTester, IBM Rational PerformanceTester, IBM Rational TestStudio;
AutomatedQA TestComplete.
HP LoadRunner – програмний продукт для автоматизації тестування широкого набору програмних середовищ навантаження і протоколів. Підтримує SOA, роботу з Web-сервісами, Ajax, RDP, SQL, продуктами Citrix, платформи Java, .Net, а також всі основні ERP– і CRM-додатки від PeopleSoft, Oracle, SAP і Siebel. Пакет HP LoadRunner включає більше 60 моніторів збору даних про інфраструктуру, що тестується, і надає детальну діагностику по роботі додатків.
Засоби від IBM Rational:
IBM Rational Robot – універсальний засіб автоматизації тестування загального призначення для команд розробників, що виконують функціональне тестування клієнт-серверні ПС. Дає можливість знаходити неполадки до ПС завдяки розширенню сценаріїв тестування засобами умовної логіки, що дозволяє цілком охопити система, що тестується. Robot дозволяє створювати сценарії тестування з викликом зовнішніх бібліотек DLL або виконуваних модулів.
IBM Rational Performance Tester – інструмент тестування навантаження і стресового, за допомогою якого можна виявляти проблеми системної продуктивності і їх причини. Дозволяє створювати тести без написання коду і, не вимагаючи навиків програмування. Забезпечує гнучкі можливості моделювання і емуляції різних призначених для користувача навантажень. Виконує збір і інтеграцію даних про серверні ресурси з даними про продуктивність додатків, одержуваними в режимі реального часу.
IBM Rational Functional Tester – набір засобів автоматизованого тестування, що дозволяють виконувати функціональне і регресійне тестування, тестування призначеного для користувача інтерфейсу і тестування, кероване даними. Інструмент застосовує технологію ScriptAssure (безшовна перевірка достовірності динамічних даних) і функції пошуку відповідності за шаблоном, що дозволяють підвищити стійкість сценаріїв тестування в умовах частих змін призначених для користувача інтерфейсів додатків. Тестіровщики можуть вибрати мову сценаріїв для розробки і настройки тестів: Java в середовищі Eclipse або Microsoft Visual Basic .Net в середовищі Visual Studio .Net.
IBM Rational Quality Manager – рішення для реалізації процесів управління тестуванням і якістю, підтримує співпрацю учасників груп по розробці програмних продуктів, надаючи їм можливість обмінюватися інформацією, застосовувати засоби автоматизації для скорочення графіків виконання проектів, а також складати звіти по проектних показниках для ухвалення обгрунтованих рішень. Rational Quality Manager може бути доповнений засобом управління ресурсами тестування Rational Test Lab, що забезпечує облік ресурсів тестування (серверів), їх бронювання, автоматизацію розгортання тестового середовища на сервері і запуск скриптов тестування, а також звітність по використовуванню ресурсів тестування.
Rational Quality Manager і Rational Test Lab створені на базі відкритої платформи Jazz, яка надає стандартні інтерфейси і зручні можливості для інтеграції з рішеннями партнерів і інших виробників.
Таким чином, тестування Веб-застосувань – одна важливих задач в створенні ПС і її еволюції, а також отримання інформації для ухвалення оперативних рішень про готовність продукту або його версії для експлуатації і продажу.