Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/6746| Title: | Управління проєктом розробки підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів |
| Authors: | Бойко, Володимир Володимирович Сокоренко, Сергій Петрович |
| Keywords: | РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ;УПРАВЛІННЯ ПРОЄКТАМИ;АВТОМАТИЗОВАНЕ ТЕСТУВАННЯ;ПРОЄКТ;ОНЛАЙН-ДОДАТОК;МЕРЕЖЕВЕ ПЛАНУВАННЯ. |
| Issue Date: | 29-Jan-2024 |
| Abstract: | В Україні сфера продажів включає обидві форми – онлайн та офлайн. Зростання електронної комерції відзначається популярністю і зручністю онлайн-покупок. Водночас, традиційні офлайн магазини залишаються важливим елементом ринку, сприяючи формулюванню особистого позитивного досвіду та взаємодії клієнтів з магазинами. Взаємодія обох сфер визначає багатогранний характер ринку забезпечення товарів та послуг в Україні, який включає найрізноманітніші сфери. Інформаційні технології в Україні ефективно змінюють взаємодію з клієнтами в сфері продажів. Електронна комерція та онлайн-системи забезпечують зручність та доступність для покупок. Аналітика допомагає впроваджувати персоналізовані стратегії та пропонувати товари за індивідуальними потребами. Чат-боти та онлайн-підтримка забезпечують миттєвий зв'язок із споживачами. Інтерактивні технології, такі, наприклад, як віртуальні тури тощо підвищують залученість клієнтів до процесу, роблять покупки більш зручними та приємними. Метою даного дослідження є проєктування і розробка підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів (як частина розробки веб-застосунку клієнтської підтримки для офлайн магазинів), використання якого спрямоване на покращення якості комунікації та обслуговування запитів клієнтів. раціональне з точки зору кількості, покриття функціоналу тестами. Об’єкт дослідження: процеси управління проєктом розробки підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів. Предмет дослідження: проєкт розробки підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/6746 |
| Appears in Collections: | 122 Комп’ютерні науки (Управління стартапами і проектами в галузі інформаційних технологій) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Пояснювальна записка_ Сокоренко Сергій_МСТП-2202_2023-2024.pdf Restricted Access | 1.74 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра комп’ютерних наук та системного аналізу
Пояснювальна записка
до кваліфікаційної роботи
магістра
(освітньо-кваліфікаційний рівень)
на тему: «Управління проєктом розробки підсистеми автоматизованих тестів
веб-застосунку клієнтської підтримки для офлайн магазинів»
Виконав: студент 2 курсу, групи МСТП-2202
спеціальності 122 «Комп’ютерні науки»
(шифр і назва спеціальності)
освітня програма «Управління стартапами
(назва освітньої програми)
і проєктами в галузі інформаційних технологій»
Сокоренко Сергій Петрович
Керівник Бойко В.В.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси 2024 року
2
Черкаський державний технологічний університет
Факультет Інформаційних технологій і систем
Кафедра Комп’ютерних наук та системного аналізу
Освітньо-кваліфікаційний рівень Магістр
Спеціальність 122 – комп’ютерні науки
Освітня програма Управління стартапами і проєктами в галузі інформаційних технологій
ЗАТВЕРДЖУЮ
Завідувач кафедри КНСА
_______________ Юрій ТРИУС
«____» _____________ 20__ р.
ЗАВДАННЯ
на кваліфікаційну роботу магістра студенту
Сокоренка Сергій Петровича
(прізвище, ім‘я, по батькові)
1. Тема роботи Управління проєктом розробки підсистеми автоматизованих тестів
веб-застосунку клієнтської підтримки для офлайн магазинів
Керівник роботи Бойко Володимир Васильович, д.т.н.,
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «06» жовтня 2023 р. № 267/04.
2. Строк подання студентом роботи «25» 01 2024 року.
3. Вихідні дані до роботи:
Результати та матеріали з проходження виробничої та переддипломної практики
4. Зміст пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
1. Дослідження та аналіз мотивації (передумов) виникненння ідеї проєкту.
2. Формування та розробка концепції проєкту.
3. Планування управління проєктом.
4. Моделювання виконання проєкту.
Висновки.
Список вкористаних джерел.
Додатки.
3
6. Консультанти розділів роботи
Прізвище, ініціали та Підпис, дата
Розділ посада
завдання видав завдання прийняв
консультанта
7. Дата видачі завдання 06.10.2024 р.
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ з/п Назва етапів кваліфікаційної роботи магістра Примітка
етапів роботи
1 Видача завдання на кваліфікаційну роботу до 01.09.2023
магістра.
2 Аналіз літературних джерел, об’єкту та до 17.09.2024
предмету дослідження.
3 Написання теоретичного розділу кваліфікаційної до 01.10.2024
роботи магістра.
4 Написання аналітичного розділу (аналіз об’єкту до 03.11.2024
й предмету дослідження).
5 Написання практичних розділів й висновків
до 01.12.2024
кваліфікаційної роботи магістра.
6 Передзахист кваліфікаційної роботи магістра на до 15.01.2024
засіданні випускової кафедри.
7 Подання роботи завідувачу кафедри КН та СА. до 25.01.2024
8 Захист кваліфікаційної роботи магістра. 29.01.2024
Студент _____________________________ /__________________/
(підпис) ПІБ
Керівник роботи ____________________________ /__________________/
(підпис) ПІБ
4
РЕФЕРАТ
Кваліфікаційна робота магістра містить: 109 с., 4 рис., 11 табл., 26
використаних джерел.
В Україні сфера продажів включає обидві форми – онлайн та офлайн.
Зростання електронної комерції відзначається популярністю і зручністю онлайн-
покупок. Водночас, традиційні офлайн магазини залишаються важливим елементом
ринку, сприяючи формулюванню особистого позитивного досвіду та взаємодії
клієнтів з магазинами. Взаємодія обох сфер визначає багатогранний характер ринку
забезпечення товарів та послуг в Україні, який включає найрізноманітніші сфери.
У сфері продажів в Україні спостерігається кілька ключових напрямків
розвитку. Онлайн-продажі надалі будуть зростати завдяки вдосконаленню
електронної комерції, цифровим платформам та розвитку онлайн-маркетплейсів. У
той же час, офлайн магазини розвивають інтерактивні технології, такі як віртуальні
тури та персоналізовані послуги, для збереження привабливості фізичної взаємодії.
Інтеграція обох форм продажів та розвиток багатоканальних стратегій розвитку
стають ключовими для підтримки вимог різноманітних споживачів.
Інформаційні технології в Україні відіграють визначальну роль у сфері
продажів. Електронна комерція та онлайн-платформи дозволяють компаніям
розширювати свої ринки збуту, ефективно управляти запасами та впроваджувати
персоналізований маркетинг. Використання аналітики допомагає усувати ризики та
прогнозувати попит. У розробці мобільних додатків та інтерактивних інтерфейсів
для офлайн магазинів важливими є зусилля, спрямовані на забезпечення найкращого
клієнтського досвіду. Технології сприяють підвищенню ефективності, відкриваючи
нові можливості для інновацій та взаємодії з клієнтами.
Інформаційні технології в Україні ефективно змінюють взаємодію з клієнтами
в сфері продажів. Електронна комерція та онлайн-системи забезпечують зручність та
доступність для покупок. Аналітика допомагає впроваджувати персоналізовані
стратегії та пропонувати товари за індивідуальними потребами. Чат-боти та онлайн-
підтримка забезпечують миттєвий зв'язок із споживачами. Інтерактивні технології,
5
такі, наприклад, як віртуальні тури тощо підвищують залученість клієнтів до
процесу, роблять покупки більш зручними та приємними.
Мета роботи і задачі дослідження. Метою даного дослідження є
проєктування і розробка підсистеми автоматизованих тестів веб-застосунку
клієнтської підтримки для офлайн магазинів (як частина розробки веб-застосунку
клієнтської підтримки для офлайн магазинів), використання якого спрямоване на
покращення якості комунікації та обслуговування запитів клієнтів.
Задачі виконання проєкту розробки веб-застосунку клієнтської підтримки
для офлайн магазинів:
Аналіз ринку. Провести детальний аналіз ринку для оцінки потреби у веб-
застосунку для клієнтської підтримки в офлайн магазинах. Визначити конкурентне
середовище, виявити сильні та слабкі сторони конкурентів.
Визначення мети та цільової аудиторії. Визначити основні цілі та завдання
веб-застосунку. Визначити, яку аудиторію він буде обслуговувати (наприклад, малі
бізнеси, великі роздрібні мережеві магазини тощо).
Формування функціоналу. Розробити перелік основних функціональних
можливостей застосунку, таких як: онлайн-чат, віддалена консультація, віртуальні
тури магазину, обробка замовлень тощо.
Дизайн інтерфейсу. Розробити зручний та інтуїтивно зрозумілий інтерфейс
для користувачів, який відповідає їхнім потребам. Забезпечити максимальну
зручність взаємодії (UI|UX).
Технічна архітектура. Розробити технічну архітектуру застосунку,
визначити технології, які будуть використовуватися (база даних, мови
програмування, сервери).
Розробка прототипу. Створити прототип застосунку для демонстрації
основного функціоналу та взаємодії з користувачами. Прототип може допомогти вам
отримати зворотний зв'язок від майбутніх користувачів.
6
Розробка застосунку. Почати розробку самого застосунку, враховуючи
визначені функціонал та дизайн. Важливо дотримуватися графіку та
використовувати кращі практики розробки програмного забезпечення.
Тестування. Провести ретельне тестування для виявлення та виправлення
будь-яких помилок, а також забезпечити відповідність застосунку стандартам
безпеки та захисту персональних даних.
Інтеграція з існуючими системами. Врахувати можливість інтеграції
застосунку з існуючими системами управління складом, обліку, платіжними
системами та іншими.
Маркетинг та просування. Розробити стратегію маркетингу та просування
для залучення користувачів. Використовувати цифровий маркетинг, соціальні
мережі, контент-маркетинг та інші канали для привертання уваги.
Навчання персоналу та користувачів. Забезпечити навчання персоналу
магазину для використання застосунку та підготувати навчальний матеріал для
користувачів.
Служба підтримки. Організувати службу підтримки для користувачів
застосунку, яка надає відповіді на їхні запитання та допомагає вирішувати технічні
та організаційні проблеми.
З перелічених вище завдань реалізації проєкту розробки веб-застосунку
клієнтської підтримки для офлайн магазинів випливають завдання щодо розробки
управління проєктом розробки підсистеми автоматизованих тестів веб-застосунку.
Завдання дослідження:
Основне завдання. Розробити проєкт підсистеми автоматизованих тестів веб-
застосунку клієнтської підтримки для офлайн магазинів.
Гнучкість та готовність до змін. Врахувати в архітектурі фреймворку тестів
та підходах до побудови тест-сьютів необхідність мінімальних часових та
людських ресурсів на підтримку тестів при змінах, розвитку та масштабуванні
проєкту в майбутньому – тобто гнучкість та підтримуваність.
7
Тестування «під різними напрямками». Врахувати та включити в фреймворк
різні види тестування, а саме: е2е-тестування; UI (інтерфейсу); UX
(користувацього досвіду – зручності використання); тестування API;
передбачити різні тестові набори для: повного/швидкого регресивного
тестування, смоук-тестування, модульного тестування і т.д.
Якість коду. Забезпечити читабельність та якість коду для легкого розуміння
членами технічної команди загальних блоків та напрямків тих чи інших
тестових кейсів чи наборів.
Покриття функціоналу. Забезпечити максимальне, але при цьому оптимальне
і раціональне з точки зору кількості, покриття функціоналу тестами.
Об’єкт дослідження: процеси управління проєктом розробки підсистеми
автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів.
Предмет дослідження: проєкт розробки підсистеми автоматизованих тестів
веб-застосунку клієнтської підтримки для офлайн магазинів.
Для ефективного управління проєктом розробки підсистеми автоматизованих
тестів веб-застосунку клієнтської підтримки для офлайн магазинів можна
використовувати ряд методів дослідження.
Оскільки проєкт має два основних напрямки – технічний та управлінський,
було використано комбінацію різних підходів і методів для різностороньої оцінки та
забезпечення успішності його реалізації, а саме:
аналіз стан ринку даного напрямку;
проєктування інформаційної системи;
SWOT-аналіз;
прототипування та тестування;
аналіз ризики, які можуть мати місце для даного проєкту (під час виконання,
впровадження та експлуатації).
При паралельному використанні данних методів було забезпечено досить
глибокий розбір проєкту та обрано раціональний шлях виконання на кожному з його
етапів. Також це дало можливість виявити потенційні ризики, що допомогло
8
ефективно керувати всіма стадіями проєкту від ідеї, до експлуатації та
масштабування.
Перелік ключових слів: РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ,
УПРАВЛІННЯ ПРОЄКТАМИ, АВТОМАТИЗОВАНЕ ТЕСТУВАННЯ, ПРОЄКТ,
ОНЛАЙН-ДОДАТОК, МЕРЕЖЕВЕ ПЛАНУВАННЯ.
9
ABSTRACT
Master's qualifying work includes: 109 p., 4 rites, 11 tabl., 26 sources used.
Actuality of theme.
In Ukraine, the sphere of sales includes both forms - online and offline. The growth
of e-commerce is marked by the popularity and convenience of online shopping. At the
same time, traditional offline stores remain an important element of the market,
contributing to the formulation of a positive personal experience and interaction of
customers with stores. The interaction of both spheres determines the multifaceted nature
of the market for the provision of goods and services in Ukraine, which includes the most
diverse spheres.
There are several key directions of development in the field of sales in Ukraine.
Online sales will continue to grow due to improvements in e-commerce, digital platforms
and the development of online marketplaces. At the same time, offline stores are
developing interactive technologies, such as virtual tours and personalized services, to
maintain the appeal of physical interaction. The integration of both forms of sales and the
development of multi-channel development strategies are becoming key to support the
demands of diverse consumers.
Information technologies in Ukraine play a decisive role in the field of sales. E-
commerce and online platforms allow companies to expand their sales markets, manage
inventory efficiently and implement personalized marketing. Using analytics helps
eliminate risks and forecast demand. In the development of mobile applications and
interactive interfaces for offline stores, efforts aimed at providing the best customer
experience are important. Technology drives efficiency, opening up new opportunities for
innovation and customer engagement.
Information technologies in Ukraine are effectively changing interaction with
customers in the field of sales. E-commerce and online systems provide convenience and
accessibility for shopping. Analytics help implement personalized strategies and offer
products based on individual needs. Chatbots and online support provide instant
communication with consumers. Interactive technologies, such as, for example, virtual
10
tours, etc., increase the involvement of customers in the process, make shopping more
convenient and pleasant.
Purpose and tasks of research. The purpose of this study is to design and develop
a subsystem of automated tests of a web application for customer support for offline stores
(as part of the development of a web application for customer support for offline stores),
the use of which is aimed at improving the quality of communication and servicing
customer requests.
Tasks of the the project of developing a web application for customer support
for offline stores:
Market analysis. Conduct a detailed market analysis to assess the need for a web
application for customer support in offline stores. Determine the competitive
environment, identify the strengths and weaknesses of competitors.
Defining the goal and target audience. Determine the main goals and objectives of
the web application. Determine what audience you want to serve (eg, small
businesses, large retail chain stores, etc.).
Formation of functionality. Develop a list of the main functionality of the
application, such as online chat, remote consultation, virtual store tours, order
processing, etc.
Interface design. Develop a user-friendly and intuitive interface that meets their
needs. Provide maximum convenience of interaction (UI|UX).
Technical architecture. Develop the technical architecture of the application,
determine the technologies that will be used (database, programming languages,
servers).
Prototype development. Create a prototype of the application to demonstrate the
main functionalities and interaction with users. A prototype can help you get
feedback from future users.
Application development. Begin development of the application itself, taking into
account the defined functionalities and design. It's important to stay on schedule and
use software development best practices.
11
Testing. Conduct thorough testing to identify and correct any errors, and ensure that
the application complies with security and privacy standards.
Integration with existing systems. Take into account the possibility of integrating the
application with existing warehouse management systems, accounting, payment
systems and others.
Marketing and promotion. Develop a marketing and promotion strategy to attract
users. Use digital marketing, social media, content marketing and other channels to
gain attention.
Training of staff and users. Provide training for store staff to use the application and
prepare training material for users.
Support service. Organize a support service for the users of the application, which
provides answers to their questions and helps to solve technical and organizational
problems.
From the tasks listed above for the implementation of the project of developing a
web application for customer support for offline stores, the tasks related to the
development of project management for the development of a subsystem of automated
tests of the web application follow.
Objectives of the study:
The main task. To develop a project of a subsystem of automated tests of a customer
support web application for offline stores.
Flexibility and readiness for changes. Take into account in the architecture of the
test framework and approaches to building test suites the need for minimal time and
human resources to support tests during changes, development and scaling of the
project in the future - that is, flexibility and maintainability.
Testing "under different directions". Take into account and include in the framework
various types of testing, namely: e2e-testing; UI (interface); UX (user experience -
ease of use); API testing; provide different test suites for: full/quick regression
testing, smoke testing, unit testing, etc.
12
Code quality. Ensure readability and code quality for easy understanding by
members of the technical team of common blocks and directions of certain test cases
or sets.
Functional coverage. To ensure the maximum, but at the same time optimal and
rational in terms of quantity, coverage of functionality with tests.
Object of research: project management processes for the development of a
subsystem of automated tests of a customer support web application for offline stores.
Subject of research: a project to develop a subsystem of automated tests of a
customer support web application for offline stores.
A number of research methods can be used to effectively manage a project to
develop a subsystem of automated tests of a customer support web application for offline
stores.
Since the project has two main directions - technical and managerial, a
combination of different approaches and methods was used for multifaceted assessment
and ensuring the success of its implementation, namely:
analysis of the state of the market in this direction;
information system design;
SWOT analysis;
prototyping and testing;
analysis of risks that may occur for this project (during implementation,
implementation and operation).
With the parallel use of these methods, a fairly deep analysis of the project was
ensured and a rational way of execution was chosen at each of its stages. It also made it
possible to identify potential risks, which helped to effectively manage all stages of the
project from ideation to operation and scaling.
The key words: SOFTWARE DEVELOPMENT, PROJECT MANAGEMENT,
AUTOMATED TESTING, PROJECT, ONLINE APPLICATION, NETWORK PLANNING.
13
ЗМІСТ
ВСТУП .................................................................................................................................. 4
1 АНАЛІЗ ТА ДОСЛІДЖЕННЯ ПЕРЕДУМОВ ВИНИКНЕННЯ ПРОЄКТУ .............. 7
1.1 Аналіз та загальна характеристика предметного середовища .................................. 7
1.2 Аналіз аналогів проєкту .............................................................................................. 11
2 ФОРМУВАННЯ ТА РОЗРОБКА КОНЦЕПЦІЇ ПРОЄКТУ ....................................... 25
2.1 Аналіз зовнішнього оточення ..................................................................................... 25
2.2 SWOT-аналіз галузі ..................................................................................................... 34
2.3 Аналіз конкурентних сил в галузі по Портеру ......................................................... 37
2.4 Розробка коцепції проєкту .......................................................................................... 43
2.5 Учасники проєкту ........................................................................................................ 49
2.6 Життєвий цикл ............................................................................................................. 51
3 ПЛАНУВАННЯ ТА УПРАВЛІННЯ ПРОЄКТОМ ...................................................... 59
3.1 Планування змісту та організаційна структура проєкту ......................................... 59
3.2 Планування змісту та календарного плану проєкту ................................................ 66
3.3 Планування бюджету .................................................................................................. 68
3.4 Управління якістю ....................................................................................................... 84
3.5 Управління коммунікаціями ....................................................................................... 89
4 ВИКОНАННЯ ПРОЄКТУ ............................................................................................. 93
4.2 Опис продукту проєкту ................................................................................... 93
4.1 Опис підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки
для офлайн магазинів ............................................................................................ 95
ВИСНОВКИ ..................................................................................................................... 108
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ........................................................................ 111
ДОДАТКИ
14
ВСТУП
Актуальність теми. На даний момент, актуальність розробки веб-застосунку
клієнтської підтримки для офлайн магазинів може бути визначена кількома
ключовими факторами:
Зміни у поведінці споживачів. За останні роки споживачі стали активно
використовувати онлайн-платформи для отримання інформації та здійснення
покупок. Розробка зручного веб-застосунку може допомогти офлайн
магазинам адаптуватися до цих змін та забезпечити ефективну клієнтську
підтримку в онлайн-середовищі.
Підвищення конкурентоспроможності. Магазинам важливо бути
конкурентоспроможними, і веб-застосунок для клієнтської підтримки може
стати додатковим інструментом для залучення та утримання клієнтів. Зручна
та ефективна онлайн-підтримка може стати ключовим фактором вибору для
покупців.
Покращення обслуговування клієнтів. Веб-застосунок дозволяє надавати
швидку та ефективну клієнтську підтримку, включаючи онлайн-чат, систему
тікетів, інтерактивні форми та інші інструменти. Це може полегшити процеси
зв'язку між клієнтами та магазином.
Збільшення лояльності клієнтів. Відмінна клієнтська підтримка впливає на
загальний досвід покупців та може сприяти збільшенню лояльності. Веб-
застосунок дозволяє надавати персоналізовану та доступну підтримку, що
важливо для задоволення клієнтів.
Врахування впливу COVID-19. Пандемія COVID-19 додала важливості
онлайн-взаємодії та підтримки. Офлайн магазинам варто розглядати
розширення своїх можливостей в цьому напрямку, щоб забезпечити безпеку та
зручність для клієнтів.
Загалом, розробка веб-застосунку клієнтської підтримки для офлайн магазинів
може сприяти покращенню комунікації з клієнтами, забезпечити конкурентні
переваги та зробити обслуговування більш ефективним у сучасних умовах бізнесу.
15
Мета та задачі дослідження. Метою даного дослідження є проєктування і
розробка підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки
для офлайн магазинів (як частина розробки веб-застосунку клієнтської підтримки
для офлайн магазинів), використання якого спрямоване на покращення якості
комунікації та обслуговування запитів клієнтів.
Задачі виконання проєкту розробки веб-застосунку клієнтської підтримки
для офлайн магазинів:
Аналіз ринку. Провести детальний аналіз ринку для оцінки потреби у веб-
застосунку для клієнтської підтримки в офлайн магазинах. Визначити конкурентне
середовище, виявити сильні та слабкі сторони конкурентів.
Визначення мети та цільової аудиторії. Визначити основні цілі та завдання
веб-застосунку. Визначити, яку аудиторію він буде обслуговувати (наприклад, малі
бізнеси, великі роздрібні мережеві магазини тощо).
Формування функціоналу. Розробити перелік основних функціональних
можливостей застосунку, таких як: онлайн-чат, віддалена консультація, віртуальні
тури магазину, обробка замовлень тощо.
Дизайн інтерфейсу. Розробити зручний та інтуїтивно зрозумілий інтерфейс
для користувачів, який відповідає їхнім потребам. Забезпечити максимальну
зручність взаємодії (UI|UX).
Технічна архітектура. Розробити технічну архітектуру застосунку,
визначити технології, які будуть використовуватися (база даних, мови
програмування, сервери).
Розробка прототипу. Створити прототип застосунку для демонстрації
основного функціоналу та взаємодії з користувачами. Прототип може допомогти вам
отримати зворотний зв'язок від майбутніх користувачів.
Розробка застосунку. Почати розробку самого застосунку, враховуючи
визначені функціонал та дизайн. Важливо дотримуватися графіку та
використовувати кращі практики розробки програмного забезпечення.
16
Тестування. Провести ретельне тестування для виявлення та виправлення
будь-яких помилок, а також забезпечити відповідність застосунку стандартам
безпеки та захисту персональних даних.
Інтеграція з існуючими системами. Врахувати можливість інтеграції
застосунку з існуючими системами управління складом, обліку, платіжними
системами та іншими.
Маркетинг та просування. Розробити стратегію маркетингу та просування
для залучення користувачів. Використовувати цифровий маркетинг, соціальні
мережі, контент-маркетинг та інші канали для привертання уваги.
Навчання персоналу та користувачів. Забезпечити навчання персоналу
магазину для використання застосунку та підготувати навчальний матеріал для
користувачів.
Служба підтримки. Організувати службу підтримки для користувачів
застосунку, яка надає відповіді на їхні запитання та допомагає вирішувати технічні
та організаційні проблеми.
З перелічених вище завдань реалізації проєкту розробки веб-застосунку
клієнтської підтримки для офлайн магазинів випливають завдання щодо розробки
управління проєктом розробки підсистеми автоматизованих тестів веб-застосунку.
Завдання дослідження:
Основне завдання. Розробити проєкт підсистеми автоматизованих тестів веб-
застосунку клієнтської підтримки для офлайн магазинів.
Гнучкість та готовність до змін. Врахувати в архітектурі фреймворку тестів
та підходах до побудови тест-сьютів необхідність мінімальних часових та
людських ресурсів на підтримку тестів при змінах, розвитку та масштабуванні
проєкту в майбутньому – тобто гнучкість та підтримуваність.
Тестування «під різними напрямками». Врахувати та включити в фреймворк
різні види тестування, а саме: е2е-тестування; UI (інтерфейсу); UX
(користувацього досвіду – зручності використання); тестування API;
17
передбачити різні тестові набори для: повного/швидкого регресивного
тестування, смоук-тестування, модульного тестування і т.д.
Якість коду. Забезпечити читабельність та якість коду для легкого розуміння
членами технічної команди загальних блоків та напрямків тих чи інших
тестових кейсів чи наборів.
Покриття функціоналу. Забезпечити максимальне, але при цьому оптимальне
і раціональне з точки зору кількості, покриття функціоналу тестами.
Об’єкт дослідження: процеси управління проєктом розробки підсистеми
автоматизованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів.
Предмет дослідження: проєкт розробки підсистеми автоматизованих тестів
веб-застосунку клієнтської підтримки для офлайн магазинів.
Для ефективного управління проєктом розробки підсистеми автоматизованих
тестів веб-застосунку клієнтської підтримки для офлайн магазинів можна
використовувати ряд методів дослідження.
Оскільки проєкт має два основних напрямки – технічний та управлінський,
було використано комбінацію різних підходів і методів для різностороньої оцінки та
забезпечення успішності його реалізації, а саме:
аналіз стан ринку даного напрямку;
проєктування інформаційної системи;
SWOT-аналіз;
прототипування та тестування;
аналіз ризики, які можуть мати місце для даного проєкту (під час виконання,
впровадження та експлуатації).
При паралельному використанні данних методів було забезпечено досить
глибокий розбір проєкту та обрано раціональний шлях виконання на кожному з його
етапів. Також це дало можливість виявити потенційні ризики, що допомогло
ефективно керувати всіма стадіями проєкту від ідеї, до експлуатації та
масштабування.
18
1 АНАЛІЗ ТА ДОСЛІДЖЕННЯ ПЕРЕДУМОВ ВИНИКНЕННЯ ПРОЄКТУ
1.1 Аналіз та загальна характеристика предметного середовища
Роль клієнтської підтримки в роботі бізнесу.
Клієнтська підтримка в офлайн магазинах грає ключову роль у забезпеченні
успіху бізнесу. Ось деякі з аспектів важливості клієнтської підтримки для офлайн
магазинів:
Сприяння задоволенню клієнтів:
o Гарна клієнтська підтримка допомагає створювати позитивне враження від
відвідування магазину.
o Відповідний та професійний підхід персоналу може значно підвищити
задоволення клієнтів від покупок.
Вирішення проблем та конфліктів:
o Клієнти можуть зіткнутися з проблемами чи конфліктами під час покупок.
Якщо їм надається ефективна підтримка, це сприяє вирішенню проблем та
позитивному вирішенню ситуацій.
Будівництво лояльності:
o Приємний досвід взаємодії з персоналом може збільшити лояльність
клієнтів.
o Лояльність сприяє повторним покупкам та рекомендаціям товарів чи послуг
магазину.
Збільшення конкурентоспроможності:
o Висока якість обслуговування може стати конкурентною перевагою для
офлайн магазину.
o Коли клієнти отримують якісний сервіс, вони більше схильні обирати цей
магазин над конкурентами.
Залучення нових клієнтів:
o Позитивний відгук про клієнтську підтримку може привернути нових
клієнтів.
19
o Рекомендації від інших клієнтів, які отримали відмінний сервіс, можуть
стати сильним маркетинговим інструментом.
Відгуки та покращення процесів:
o Взаємодія з клієнтами дозволяє отримати цінні відгуки, які можна
використовувати для поліпшення роботи магазину.
o Реагування на скарги та пропозиції допомагає покращувати процеси та
адаптувати їх до потреб клієнтів.
Взагалі кажучи, ефективна клієнтська підтримка допомагає не лише
вирішувати поточні проблеми, але й будує позитивне сприйняття бренду, створює
лояльність та сприяє зростанню бізнесу, що і є однією з основних цілей – отримання
прибутку.
Роль комунікаційних технологій.
Телекомунікаційні технології відіграють важливу роль в сфері продажів і
мають великий вплив на способи взаємодії між бізнесами та їх клієнтами. Ось деякі
ключові аспекти ролі телекомунікаційних технологій у продажах:
Ефективна комунікація:
o Відеоконференції та онлайн-зустрічі: Технології відеокомунікацій
дозволяють проводити віртуальні зустрічі, презентації та консультації в
режимі реального часу, навіть якщо учасники перебувають на великій
відстані.
o Телефонія та месенджери: Використання телефонії та месенджерів для
швидкого обміну інформацією та вирішення питань.
Дистанційні продажі та електронна комерція:
o Онлайн-магазини та платіжні системи: Технології дозволяють
підприємствам створювати та управляти електронними магазинами,
приймати онлайн-замовлення та здійснювати електронні платежі.
o Електронна комунікація з клієнтами: Зручність спілкування через
електронну пошту, чати та соціальні мережі полегшує взаємодію з
покупцями.
20
Персоналізований підхід:
o Системи управління відносинами з клієнтами (CRM): Технології CRM
дозволяють вести базу даних клієнтів, відстежувати їхні взаємодії з брендом
та надавати персоналізовані пропозиції.
o Аналітика та обробка даних: Використання аналітичних інструментів
допомагає розуміти поведінку клієнтів, їхні вподобання та попит, що
дозволяє налаштовувати стратегії продажу.
Мобільність та доступність:
o Мобільні додатки: Розробка мобільних додатків для зручного доступу
клієнтів до продуктів та послуг навіть у русі.
o Технології "облачного" зберігання: Забезпечення доступу до даних та
інструментів для продажу з будь-якого пристрою з Інтернет-з'єднанням.
Реклама та маркетинг:
o Інтернет-реклама та соціальні мережі: Використання різноманітних
технологій для цільового рекламування, аналізу рекламної ефективності та
взаємодії з аудиторією через соціальні мережі.
Спільна робота та обмін інформацією:
o Спільні робочі платформи: Використання технологій для спільної роботи та
обміну інформацією, що полегшує комунікацію внутрішніми командами та
партнерами.
Розвиток телекомунікаційних технологій значно полегшує ведення бізнесу та
надає компаніям більше можливостей для ефективного спілкування та продажів [2].
Розвиток телекомунікаційних технологій має значний вплив на сферу
продажів, і цей вплив охоплює різні аспекти бізнес-процесів. Ось кілька ключових
напрямків, де телекомунікації впливають на продажі:
Електронна комунікація:
o Електронна пошта та чати: Забезпечення ефективного спілкування між
продавцями та клієнтами через електронну пошту та чати дозволяє швидко
відповідати на запитання, надавати інформацію та обробляти замовлення.
21
o Відеоконференції: Застосування відеоконференційних технологій для
проведення онлайн-зустрічей, демонстрацій продуктів та переговорів з
клієнтами дозволяє встановлювати більш особисті зв'язки.
Мобільні додатки та платформи:
o Розробка мобільних додатків для зручності клієнтів сприяє зростанню
продажів, оскільки вони можуть легко переглядати каталоги, робити
замовлення та отримувати спеціальні пропозиції.
o Мобільні платформи для оплати сприяють зручності покупок та зменшують
тривалість транзакцій.
Аналітика та обробка даних:
o Використання телекомунікацій для збору та аналізу даних дозволяє
продавцям розуміти поведінку клієнтів, адаптувати стратегії продажу та
надавати персоналізовані пропозиції.
o Обробка даних також допомагає виявляти тенденції та прогнозувати попит,
що є важливим для управління запасами та планування продажів.
Системи управління відносинами з клієнтами (CRM):
o Використання телекомунікацій у CRM-системах дозволяє ефективно вести
базу клієнтів, слідкувати за історією взаємодії та надавати персоналізований
підхід до кожного клієнта.
Спільні робочі платформи:
o Застосування технологій спільної роботи спрощує комунікацію між
продавцями та внутрішніми командами, що полегшує обмін інформацією та
координацію дій.
Інтернет-маркетинг та соціальні мережі:
o Використання телекомунікацій для реклами в Інтернеті та соціальних
мережах дозволяє досягати широкої аудиторії, розміщувати рекламу та
взаємодіяти з клієнтами онлайн.
Всі ці аспекти взаємодії телекомунікацій та продажів сприяють покращенню
ефективності, зручності для клієнтів та загального успіху бізнесу.
22
1.2 Аналіз аналогів проєкту. Типи ПЗ для клієнтської підтримки.
Програмне забезпечення для клієнтської підтримки відіграє важливу роль у
функціонуванні сучасного бізнесу та бізнес-процесів; у забезпеченні ефективного та
своєчасного обслуговування клієнтів [1]. Існує кілька типів програмного
забезпечення, які використовуються в цій області. Ось деякі з них:
CRM-системи (Customer Relationship Management):
o Ці системи допомагають у веденні бази даних клієнтів та взаємодії з ними.
Вони можуть містити інформацію про історію покупок, запитання клієнтів,
пропозиції та інші важливі дані (комунікації менеджерів з клієнтами;
інциденти; історія звернень і т.д.).
o CRM дозволяє персоналу підтримки надавати персоналізовані (що є дуже
важливим з точки зору враження клієнту відповіді та послуги, а також
ефективно керувати відносинами з клієнтами.
Системи Help Desk:
o Ці системи використовуються для відстеження та вирішення запитань,
проблем та скарг клієнтів. Вони допомагають організувати роботу служби
підтримки та вчасно реагувати на потреби клієнтів.
o Вони можуть включати функції автоматизації, які допомагають ефективно
розподіляти завдання та використовувати шаблони відповідей.
Чат-боти та віртуальні асистенти:
o Використання чат-ботів для автоматизованої відповіді на типові запитання
та вирішення базових питань клієнтів.
o Віртуальні асистенти можуть надавати інтерактивну допомогу, взаємодіяти з
клієнтами та виконувати определені завдання.
Системи моніторингу соціальних мереж:
o Вони дозволяють відстежувати та взаємодіяти з клієнтами через соціальні
мережі, вирішуючи їхні проблеми або реагуючи на коментарі та згадки про
бренд.
23
o Такі системи допомагають виявляти тенденції та реагувати на події в
реальному часі.
Системи відслідковування звернень:
o Вони дозволяють стежити за всіма зверненнями клієнтів та контролювати
їхню обробку. Це може включати телефонні дзвінки, електронні листи,
онлайн-чати та інші канали зв'язку.
o Важливо для ведення обліку та аналізу взаємодії з клієнтами.
Системи аналітики та звітності:
o Допомагають збирати, аналізувати та представляти дані про роботу служби
підтримки. Це може включати ефективність операторів, час відповіді, рівень
задоволеності клієнтів та інші метрики.
o Забезпечують можливість приймати управлінські рішення та
вдосконалювати процеси підтримки.
Використання цих типів програмного забезпечення дозволяє підприємствам
забезпечити високий рівень обслуговування клієнтів та ефективно управляти їхнім
відносинами [16].
CRM (Customer Relationship Management) - системи управління
відносинами з клієнтами - це програмні засоби, які допомагають підприємствам
ефективно вести відносини з клієнтами, а також взаємодіяти з ними. Основна мета
CRM-систем полягає в забезпеченні комплексного підходу до управління
інформацією про клієнтів та оптимізації всіх процесів, пов'язаних з обслуговуванням
клієнтів.
Основні функції CRM-систем включають:
Управління контактами: Зберігання та оновлення інформації про клієнтів, їх
контактні дані, історію взаємодії та інші релевантні дані.
Управління продажами: Відстеження поточного стану угод та продаж,
управління календарем та завданнями продаж, аналіз продаж та прогнозування.
24
Маркетинг та аналітика: Планування та ведення маркетингових кампаній,
відстеження рекламних заходів, аналіз результатів та ефективності
маркетингових заходів.
Служба підтримки: Обробка та відстеження запитань, скарг і повідомлень від
клієнтів, надання підтримки та вирішення проблем.
Автоматизація рутинних завдань: Автоматизація процесів, таких як відправка
повідомлень, нагадувань, завдань, для оптимізації часу та підвищення
ефективності.
Аналітика та звітність: Надання звітів та аналітичної інформації для управління
та прийняття стратегічних рішень.
Інтеграція з іншими системами: Можливість інтеграції з іншими
корпоративними системами (наприклад, електронною поштою, системами
управління складом, фінансовими системами тощо).
CRM-системи можуть бути впроваджені в різних галузях, від роздрібної
торгівлі до бізнесу на рівні корпорацій, і допомагають підприємствам покращувати
відносини з клієнтами, збільшувати ефективність та підвищувати
конкурентоспроможність.
Найбільш поширені у світі CRM-системи це:
Salesforce: є однією з найбільш відомих та використовуваних CRM-платформ у
світі. Вона надає інструменти для автоматизації маркетингу, продажів та
обслуговування клієнтів.
HubSpot CRM: відомий своєю простотою використання та інтеграцією з
іншими інструментами маркетингу та продажу. Він пропонує безкоштовний
базовий план та різні додаткові модулі.
Microsoft Dynamics 365: надає повністю інтегровану платформу для управління
відносинами з клієнтами, яка охоплює області маркетингу, продажів та
обслуговування клієнтів.
Zoho CRM: є частиною екосистеми інструментів Zoho та відомий своєю
доступністю та різноманіттям функцій для малого та середнього бізнесу.
25
Oracle CX Cloud Suite: пропонує різні модулі для управління відносинами з
клієнтами, включаючи маркетинг, продажі, обслуговування та аналітику.
SAP Customer Experience (раніше відомий як SAP Hybris) надає рішення для
маркетингу, комерції, продажів та обслуговування клієнтів.
Pipedrive. Pipedrive відомий як простий та ефективний інструмент для
управління продажами та CRM, зокрема для малих та середніх підприємств.
Важливо відзначити, що вибір CRM-системи залежить від конкретних потреб
вашого бізнесу, розміру компанії, галузі та інших факторів. Вибір може змінюватися
в залежності від зміни умов та нових функціональних вимог.
Системи Help Desk (або служби підтримки) – це програмні інструменти,
створені для організації та ведення процесів вирішення проблем і запитань
користувачів чи клієнтів. Ці системи призначені для забезпечення ефективного
взаємодії між службою підтримки та користувачами, а також для відстеження та
вирішення інцидентів.
Основні аспекти систем Help Desk включають:
Тікет-система (запитання): створення, відстеження та управління тікетами
(заявками) на вирішення проблем чи надання підтримки.
Автоматизація процесів: Автоматизоване призначення та розподіл тікетів між
операторами служби підтримки для швидкого вирішення проблем.
База знань: Створення та підтримка бази знань, яка містить інформацію про
рішення часто зустрічаючихся проблем і вказівки для користувачів.
Системи повідомлень: Комунікація між службою підтримки та користувачами
за допомогою електронної пошти, чату або інших засобів.
Аналітика та звітність: Збір та аналіз даних щодо вирішення тікетів, часу
реакції, задоволеності користувачів тощо.
Сервіс-рівні (SLA): Встановлення та виконання рівнів обслуговування для
забезпечення якості та швидкості вирішення проблем.
26
Інтеграція з іншими системами: Можливість інтеграції з іншими
корпоративними системами, такими як CRM (управління відносинами з
клієнтами) чи системами управління завданнями.
Ці системи дозволяють організаціям ефективно взаємодіяти з користувачами,
надавати швидку та якісну підтримку, а також відстежувати і аналізувати процеси
вирішення проблем. Зокрема, системи Help Desk є невід'ємною частиною багатьох
комплексних підходів до управління відносинами з клієнтами та обслуговуванням
користувачів.
На ринку існує багато систем Help Desk, і їх популярність може змінюватися
залежно від потреб і вимог різних компаній. Давайте розглянемо кілька
найпоширеніших систем Help Desk:
Zendesk: є однією з найпоширеніших платформ Help Desk, яка включає
рішення для керування клієнтською підтримкою, чату, заявок та аналітики.
Freshdesk: пропонує інтуїтивно зрозумілу та доступну службу підтримки з
функціями маркетингу та аналітики для покращення обслуговування клієнтів.
Jira Service Management (раніше відома як Jira Service Desk): це рішення, яке
входить у франшизу продуктів Atlassian і забезпечує службу підтримки та
управління задачами.
ServiceNow: пропонує розширений набір інструментів для управління
сервісами та подіями, включаючи Help Desk, IT Service Management (ITSM) та
інші рішення.
Kayako: цілком інтегрована платформа Help Desk, яка включає в себе
інструменти для спілкування з клієнтами, служби підтримки та аналітики.
Intercom: відомий своєю спрощеною спільнотою та зручними інструментами
для обслуговування клієнтів, включаючи чат та автоматизацію.
Freshservice (належить компанії Freshworks): спеціалізується на ITSM та Help
Desk рішеннях для підтримки організацій.
Help Scout: ставить акцент на зручну спільноту та надає інструменти для
обслуговування клієнтів та комунікації.
27
Обираючи систему Help Desk, важливо враховувати конкретні потреби та
характеристики конкретного бізнесу. Розмір компанії, обсяги клієнтської підтримки,
можливості автоматизації та інші фактори можуть визначити найбільш підходящий
варіант. Також варто продумати можливості масштабування, розвитку та інтеграції з
іншими суміжними системами.
Чат-боти та віртуальні асистенти — це програмні рішення, які
використовуються для автоматизації комунікації з користувачами через текстовий чи
вокальний інтерфейс. Ці технології можуть виконувати різні завдання, включаючи
відповіді на запитання, вирішення проблем, надання інформації та виконання
певних завдань.
Чат-боти:
Чат-боти — це програми, які автоматично взаємодіють з користувачами через
текстовий ввод. Вони можуть використовуватися для розв'язання конкретних
завдань або надавати загальну інформацію.
Чат-боти можуть вбудовуватися в веб-сайти, месенджери, соціальні мережі та
інші платформи для зручності користувачів.
Віртуальні асистенти:
Віртуальні асистенти — це програми, які використовують штучний інтелект
для взаємодії з користувачами та надання допомоги. Вони можуть мати
вищий рівень інтелектуальності та можуть виконувати більше завдань.
Віртуальні асистенти можуть бути вбудовані в пристрої (наприклад, в
смартфони), в програми чат-ботів, або працювати як окремі додатки.
Основні характеристики чат-ботів та віртуальних асистентів включають:
Автоматизація відповідей: Вони можуть розпізнавати інтент користувача та
відповідати на його запитання чи виконувати певні завдання.
Навчання на основі машинного навчання: Деякі чат-боти та віртуальні
асистенти можуть навчатися на основі даних та досвіду взаємодії з
користувачами.
28
Можливість розширення функціоналу: Вони можуть інтегруватися з іншими
системами та сервісами для надання розширених можливостей.
Інтерфейс взаємодії: Взаємодія може відбуватися через текстовий ввод,
голосові команди, вибір з меню чи комбінацію цих елементів.
Чат-боти та віртуальні асистенти знайшли широке застосування у різних
сферах, включаючи обслуговування клієнтів, електронну комерцію, технічну
підтримку та особистий асистент в повсякденному житті.
На сучасному ринку існує багато чат-ботів та віртуальних асистентів, і їх
популярність може змінюватися відповідно до тенденцій та потреб ринку. Деякі з
найпоширеніших чат-ботів та віртуальних асистентів у світі на даний момент
включають: ChatGPT (OpenAI): OpenAI розробила модель ChatGPT, що
використовує технологію генерації тексту GPT-3 для створення високоякісних чат-
ботів та віртуальних асистентів.
Google Assistant: є віртуальним асистентом від Google, який використовується
в різних пристроях, таких як смартфони, динаміки, годинники та інші.
Siri (Apple): є вбудованим віртуальним асистентом для пристроїв Apple, таких
як iPhone, iPad та Mac.
Amazon Alexa: використовується в різних пристроях, включаючи смарт-
динаміки та інші побутові пристрої від Amazon.
Microsoft Cortana: є віртуальним асистентом від Microsoft, який
використовується у Windows та інших продуктах.
Facebook Messenger Bots: боти в Facebook Messenger використовуються
здебільшого для спілкування з клієнтами, надання інформації та обробки
замовлень (як правило відповіді на найпоширеніші стандартні запитання від
клієнтів).
WhatsApp Business API: дозволяє компаніям взаємодіяти з клієнтами через
WhatsApp, і це включає можливість використання чат-ботів.
IBM Watson Assistant: використовує штучний інтелект для створення чат-ботів
та віртуальних асистентів для різних сфер бізнесу.
29
Rasa: є відкритим інструментом для створення власних чат-ботів з можливістю
керування та налаштуванням.
HubSpot Conversations: надає інструменти для створення чат-ботів та
автоматизованих відповідей від команди HubSpot.
Ці та інші чат-боти та віртуальні асистенти використовуються в різних
галузях, включаючи бізнес, технічну підтримку, освіту та розваги.
Системи моніторингу соціальних мереж (Social Media Monitoring, або
SMM) — це інструменти та платформи, які слідкують за активністю користувачів у
соціальних мережах, відстежують публікації, коментарі та інші взаємодії, а також
аналізують ці дані для здобуття важливої інформації. Моніторинг соціальних мереж
є важливою частиною стратегій маркетингу, репутаційного менеджменту, аналізу
конкуренції та забезпечення взаємодії з аудиторією.
Основні аспекти систем моніторингу соціальних мереж включають:
Слідкування за ключовими словами: Визначення та відстеження ключових
слів, фраз або хештегів, пов'язаних із брендом, продуктом чи темою.
Моніторинг бренду та репутації: Відслідковування обговорення бренду в
соціальних мережах для оцінки реакції користувачів та взаємодії з ними.
Аналіз конкуренції: Спостереження за активністю конкурентів у соціальних
мережах, оцінка їхнього впливу та аналіз стратегій.
Виявлення тенденцій та взаємодія з аудиторією: Визначення актуальних тем та
тенденцій, що обговорюються у соціальних мережах, а також виявлення
потреб та думок аудиторії.
Сприяння взаємодії та відгуків: Відслідковування взаємодії з публікаціями,
коментарів, відгуків та інших форм сприяння активності аудиторії.
Аналітика та звітність: Збір та аналіз даних для створення звітів про
ефективність стратегій у соціальних мережах.
30
Попередження про кризові ситуації: Виявлення негативних тенденцій та
можливих кризових ситуацій для оперативної реакції та репутаційного
менеджменту.
Системи моніторингу соціальних мереж дозволяють компаніям ефективно
взаємодіяти з аудиторією, слідкувати за реакцією на свої продукти чи послуги, а
також забезпечують аналітичні дані для покращення маркетингових стратегій.
На сучасному ринку існує багато систем моніторингу соціальних мереж (Social
Media Monitoring, або SMM), які допомагають компаніям відстежувати та
аналізувати активність в соціальних мережах. Деякі з найпоширеніших систем
моніторингу соціальних мереж на даний момент включають:
Hootsuite: дозволяє вам планувати та публікувати контент у соціальних
мережах, а також відстежувати згадки про ваш бренд та аналізувати взаємодію
з аудиторією.
Sprout Social: надає інструменти для управління соціальними мережами, а
також аналітичні засоби для вимірювання ефективності кампаній.
Brandwatch: спеціалізується на моніторингу соціальних мереж для аналізу
суспільної думки та слідкування за темами обговорень.
Talkwalker: надає інструменти для моніторингу соціальних мереж, аналізу
впливу та вимірювання результативності кампаній.
Buffer: дозволяє розподіляти контент у соціальних мережах та аналізувати
взаємодію з аудиторією.
Sysomos: надає інструменти для моніторингу та аналізу соціальних мереж для
розуміння трендів та реакції аудиторії.
Mention: дозволяє вам відстежувати згадки про ваш бренд у соціальних
мережах, а також отримувати повідомлення про нові згадки.
Falcon.io: надає інтегровану платформу для управління соціальними мережами
та аналізу результатів кампаній.
Socialbakers: використовує штучний інтелект для аналізу ефективності
контенту та взаємодії з аудиторією у соціальних мережах.
31
CrowdTangle (належить Facebook): надає аналітику для соціальних медіа та
дозволяє вам слідкувати за популярністю контенту.
Обираючи систему моніторингу соціальних мереж, важливо враховувати
потреби вашого бізнесу, обсяг даних, які вам необхідно відстежувати, та
функціональні можливості, які ви очікуєте від платформи.
Системи відслідковування звернень (Issue Tracking Systems або Ticketing
Systems) — це програмні рішення, що допомагають організаціям відстежувати та
керувати різними типами звернень, скарг, запитань або завдань внутрішнього або
зовнішнього характеру. Ці системи забезпечують ефективну обробку і вирішення
проблем шляхом створення та відстеження тікетів або заявок.
Основні аспекти систем відслідковування звернень включають:
Створення та реєстрація тікетів: Можливість створення нових заявок чи тікетів
для будь-якого типу питань, проблем чи завдань.
Автоматизована розсилка та призначення: Системи можуть автоматично
призначати тікети відповідальним співробітникам чи відділам для подальшої
обробки.
Слідкування та оновлення стану: Забезпечення механізмів для слідкування за
статусом та проходженням заявок від відкриття до закриття.
Прикріплення файлів та коментарів: Можливість додавання файлів, коментарів
та інших деталей до тікетів для подальшого аналізу та вирішення проблеми.
Попередження та нагадування: Системи можуть надсилати сповіщення та
нагадування про терміни вирішення, важливі події чи невирішені питання.
Аналітика та звітність: Збір та аналіз даних для створення звітів про
ефективність роботи та взаємодії з заявками.
Інтеграція з іншими системами: Взаємодія з іншими корпоративними
системами для обміну даними та поліпшення процесів.
Ці системи особливо корисні для служб підтримки, технічної підтримки,
відділу обробки скарг, а також для внутрішньої координації та відстеження робочих
32
завдань. Вони допомагають організаціям ефективно вирішувати проблеми та
забезпечувати якісну взаємодію з клієнтами чи внутрішніми користувачами.
Системи відслідковування звернень, також відомі як системи управління
заявками (Issue Tracking Systems або Ticketing Systems), є важливими для багатьох
компаній для ефективного вирішення та моніторингу проблем, запитань або завдань.
Деякі з найпоширеніших таких систем включають:
Jira (від Atlassian): є однією з найпопулярніших систем відслідковування
звернень і використовується для управління проєктами, розробки програмного
забезпечення та тікетами підтримки.
Zendesk: не лише служить системою відслідковування звернень, але також
включає інструменти для клієнтської підтримки, чату та аналітики.
ServiceNow: пропонує рішення для управління зверненнями, IT-сервісами,
обслуговуванням клієнтів та іншими бізнес-процесами.
Freshdesk: є простою та ефективною системою відслідковування звернень, яка
також надає інші інструменти для обслуговування клієнтів.
Trello (тепер належить Atlassian): використовує карти та дошки для організації
та відслідковування завдань, і його можна використовувати для керування
проєктами.
Asana: не лише служить системою відслідковування звернень, але і надає
інструменти для організації та співпраці в команді.
Bugzilla: є відкритою системою відслідковування помилок, яка
використовується для ведення списку та вирішення помилок у програмному
забезпеченні.
Redmine: це відкрите програмне забезпечення для управління проєктами та
система відслідковування звернень.
Microsoft Azure DevOps (раніше VSTS): включає інструменти для управління
проєктами, розробки програмного забезпечення та відслідковування звернень.
Monday.com: дозволяє вам створювати та відстежувати завдання та проєкти, а
також співпрацювати з командою.
33
Обираючи систему відслідковування звернень, важливо враховувати
специфічні потреби вашого бізнесу, розмір команди та тип проєктів, які ви плануєте
вести.
Системи аналітики та звітності – це програмні рішення, призначені для
збору, аналізу та візуалізації даних для прийняття управлінських рішень. Ці системи
допомагають підприємствам відстежувати та розуміти різноманітні аспекти їхньої
діяльності, щоб приймати обґрунтовані стратегічні рішення та вдосконалювати
ефективність бізнес-процесів.
Основні аспекти систем аналітики та звітності включають:
Збір та інтеграція даних: Автоматизований збір даних з різних джерел, таких
як бази даних, файлові системи, API та інші, та їхнє об'єднання в єдину
систему.
Аналіз даних: Використання різноманітних алгоритмів та методів для
виявлення та розуміння закономірностей, тенденцій та взаємозв'язків у
накопичених даних.
Візуалізація даних: Створення графіків, діаграм, карт та інших візуальних
елементів для зручного сприйняття та аналізу даних.
Створення звітів та панелей інструментів: Генерація структурованих звітів та
інтерактивних панелей інструментів для представлення ключової інформації.
Автоматизація завдань: Можливість автоматизації регулярних аналітичних
завдань та створення регулярних звітів.
Прогнозування та моделювання: Використання аналітичних методів для
прогнозування майбутніх трендів та результатів на основі історичних даних.
Безпека та конфіденційність: Забезпечення високого рівня захисту та
конфіденційності даних під час їхнього аналізу та зберігання.
Ці системи використовуються в різних галузях, включаючи маркетинг,
фінанси, логістику, ресурсне планування, та інші, допомагаючи організаціям
34
зробити осмисленими рішення на основі даних та вдосконалити свою стратегію
бізнесу [17].
Системи аналітики та звітності використовуються компаніями для збору,
аналізу та представлення даних з метою прийняття обґрунтованих рішень. Деякі з
найпоширеніших систем аналітики та звітності у світі включають:
Google Analytics: одна з найпоширеніших систем для аналізу веб-трафіку та
поведінки користувачів на веб-сайтах.
Microsoft Power BI: дозволяє вам візуалізувати та аналізувати дані з різних
джерел, створювати звіти та інтерактивні панелі управління.
Tableau: потужна платформа візуалізації та аналізу даних, яка дозволяє
створювати зручні та інтерактивні звіти.
QlikView / Qlik Sense: використовують технологію асоціативного аналізу для
створення візуальних звітів та дашбордів.
Adobe Analytics: це рішення для аналізу цифрових даних, зокрема для веб-
аналітики та аналізу поведінки користувачів.
IBM Cognos Analytics: це рішення для створення розумних звітів, дашбордів та
аналітичних додатків.
SAS Visual Analytics: інструмент для візуалізації та аналізу даних, що дозволяє
вам взаємодіяти з великими обсягами інформації.
Domo: хмарна платформа для аналізу та візуалізації даних, яка дозволяє
отримувати інсайти з різних джерел.
Looker: платформа для створення звітів та аналізу даних, яка надає
інтерактивність та можливості вбудованої аналітики.
Yellowfin BI: це платформа для бізнес-інтелекту, яка включає в себе
візуалізацію, аналітику та звітність.
Обираючи систему аналітики та звітності, важливо враховувати потреби
вашого бізнесу, обсяги даних, які вам необхідно обробляти, і функціональні
можливості, які ви очікуєте від платформи.
Висновки до розділу 1.
35
У даному розділі повністю проаналізовано та дано загальну характеристику
предметного середовища перед початком розробки проєкту. Також проведено
грунтовний та вичерпний аналіз аналогів проєкту. Розглянуто види та типи
програмного забезпечення (ПЗ) для клієнтської підтримки. По кожному розділу дано
основні риси та особливості; також розгянуто спеціалізацію конкретних
представників ПЗ та дано їх стислі характеристики.
36
2 ФОРМУВАННЯ ТА РОЗРОБКА КОНЦЕПЦІЇ ПРОЄКТУ
2.1 Аналіз зовнішнього оточення
Аналіз зовнішнього оточення (англ. External Environment Analysis) – це процес
оцінки та розуміння впливу зовнішніх факторів на діяльність організації чи проєкту.
Цей вид аналізу допомагає визначити можливості та загрози, які виникають з
зовнішнього середовища, і враховувати їх при прийнятті стратегічних рішень.
Ключові елементи аналізу зовнішнього оточення включають:
Економічний контекст. Оцінка стану економіки, тенденцій і циклічності,
валютних курсів, рівня інфляції, ринкових цін тощо.
Соціокультурні фактори. Врахування соціокультурних тенденцій,
демографічних характеристик, змін у споживчих уподобаннях та поведінці
клієнтів.
Політичний та правовий контекст. Розуміння політичної стабільності,
законодавчих змін, регулюючих стандартів та інших правових аспектів.
Технологічні інновації. Оцінка нових технологій, їх впливу на бізнес-процеси
та можливостей для інновацій.
Екологічні чинники. Урахування впливу бізнесу на навколишнє середовище та
врахування змін в екологічних стандартах.
Конкурентна ситуація. Аналіз конкурентів, їхніх стратегій, сильних і слабких
сторін для визначення конкурентного положення.
Світові та регіональні тенденції. Розуміння тенденцій на світовому та
регіональному рівні, які можуть вплинути на бізнес.
Взяті разом, ці аспекти допомагають управлінцям та стратегічним
планувальникам визначити оптимальний напрямок розвитку, адаптувати стратегії до
змін у зовнішньому середовищі та ефективно використовувати можливості, які
пропонує ринок.
Аналіз зовнішнього оточення для проєкту "розробки веб-застосунку
клієнтської підтримки для офлайн магазинів" включає врахування різноманітних
37
факторів, які можуть впливати на успішність та розвиток проєкту. Ось декілька
ключових аспектів для такого аналізу:
Технологічні тенденції (оцінка нових технологій, таких як штучний інтелект,
машинне навчання, аналітика даних, які можуть покращити функціональність
платформи).
Конкурентне середовище (аналіз існуючих рішень у сфері онлайн клієнтської
підтримки та визначення конкурентних переваг вашого продукту).
Соціальні та культурні тенденції (врахування змін у споживчих уподобаннях
та підходах до покупок в онлайн та офлайн середовищі).
Лояльність клієнтів (розуміння того, які фактори впливають на лояльність
клієнтів, і як проєкт може покращити цей аспект).
Політичне та правове оточення (визначення законодавчих аспектів, які можуть
впливати – такі як правила зберігання та обробки особистих даних,
наприклад).
Економічні фактори (оцінка економічної стабільності та платоспроможності
цільової аудиторії).
Споживчий запит (вивчення змін у споживчому попиті та ідентифікація потреб
цільової аудиторії).
Зміни в екосистемі бізнесу (розуміння, які зміни в бізнес-екосистемі можуть
вплинути на узгодженість та інтеграцію продукту).
Цей аналіз допомагає не лише визначити ризики та виклики, але й виявити
можливості для успішної інтеграції веб-застосунку в офлайн магазини та
задоволення потреб клієнтів.
Розглянемо зацікавлені сторони проєкту – внутрішні та зовнішні (табл. 2.1).
38
Таблиця 2.1 – Зацікавлені сторони проєкту розробки веб-застосунку клієнтської
підтримки для офлайн магазинів
№ Зацікавлені Вплив на проєкт Очікування
сторони
Внутрішні зацікавлені сторони
1 Керівництво Цілі проєкту, фінансове Отримання прибутку та розвиток
проєкту забезпечення та проєкту
планування
2 ІТ-відділ Технічна реалізація Забезпечення якості програмного
(розробники проєкту, безпосередні продукту у відповідності по вимог
проєкту) виконавці (які з ітераціями можуть
змінюватися)
3 Відділ проєктного Раціональне Втілення проєкту в терміни та з
управління планування високою якістю
4 Фінансовий відділ Контроль витрат та Раціональність та ефективність
загального бюджету використання коштів на проєкт
5 Відділ продажів Забезпечує продаж Якісний сучасний проєкт, який
рішеня клієнтам вирішує проблеми потенційних
клієнтів
Зовнішні зацікавлені сторони
1 Клієнти проєкту Формують вимоги до Вирішення комунікаційних
(офлайн магазини) систем, які їм потрібні проблем з клієнтами
для роботи
2 Партнери та Забезпечують певний Своєчасна інформація та
підрядники (за вплив на успішність ефективна взаємодія
необхідності) проєкту
3 Користувачі Користуються Простий, зручний інтерфейс;
системи системою при надійний функціонал для
комунікації із забезпечення вирішення їх потреб
клієнтами проєкту
4 Конкуренти Спостерігають та Що забезпечать якісніший
реагуються на розвиток продукт, ніж конкуренти
своїк конкурентів
2.2 SWOT-аналіз електронної торгівлі (галузі, як частини економіки
України)
SWOT-аналіз – це інструмент стратегічного аналізу, який допомагає оцінити
внутрішні та зовнішні аспекти організації чи проєкту. Абревіатура визначає чотири
39
аспекти: Strengths (Сильні сторони), Weaknesses (Слабкі сторони), Opportunities
(Можливості) та Threats (Загрози). Аналіз допомагає визначити внутрішні переваги
та недоліки, а також зовнішні можливості та загрози, що дозволяє розробляти
ефективні стратегії та приймати управлінські рішення.
Далі ми поговоримо про проведення SWOT-аналізу для галузі електронної
торгівлі.
Сильні сторони (Strengths) в контексті SWOT-аналізу в сфері електронної
торгівлі можуть включати:
Глобальний доступ. Можливість здійснювати торгівлю в будь-якому місці
світу, привертаючи міжнародних клієнтів.
Ефективний маркетинг. Застосування цифрових маркетингових стратегій для
залучення уваги та реклами продуктів чи послуг.
Автоматизація процесів. Використання технологій для автоматизації
замовлення, оплати та доставки, що збільшує ефективність операцій.
Розширення асортименту. Можливість легко розширювати асортимент
товарів чи послуг без фізичних обмежень простору.
Аналітика та данні. Використання аналітичних інструментів для вивчення
поведінки клієнтів та оптимізації стратегій продажів.
Гнучкість ціноутворення. Можливість легко адаптувати ціни та проводити
розпродажі або акції.
Зручність для клієнтів. Персоналізовані пропозиції, зручний пошук та інші
функції, що полегшують процес покупок.
Економія часу. Можливість швидко здійснювати покупки, уникнувши
фізичного візиту до магазину.
Враховуючи ці сильні сторони, компанії в сфері електронної торгівлі можуть
оптимізувати свою стратегію та збільшити конкурентоспроможність на ринку.
Слабкі сторони (Weaknesses) в сфері електронної торгівлі в контексті SWOT-
аналізу можуть включати:
40
Залежність від інтернет-з'єднання. Вразливість до проблем із з'єднанням
може призвести до втрати зв'язку з клієнтами та ускладнити процес покупок.
Безпека даних. Збереження та захист особистих даних клієнтів може стати
проблемою через ризики кіберзлочинності.
Конкуренція з великими платформами. Конкуренція з великими електронними
торговими платформами може ускладнити привертання уваги та збереження
клієнтів.
Технічні неполадки. Можливість технічних проблем, таких як збої на веб-сайті
або проблеми з оплатою, що можуть впливати на враження користувачів.
Неоднорідність якості інтернет-з'єднання. Нерівномірність якості інтернет-
з'єднання у різних регіонах може впливати на швидкість завантаження
сторінок та користувацький комфорт.
Потреба в постійному оновленні. Необхідність постійного оновлення
технічних та програмних рішень для відповідності вимогам ринку.
Високі витрати на цифровий маркетинг. Великі витрати на рекламу та
цифровий маркетинг, що можуть вимагати значних бюджетів.
Проблеми з логістикою. Складнощі та витрати, пов'язані з організацією
ефективної системи доставки та логістики.
Аналіз цих слабких сторін дозволяє розробникам та менеджерам зосередитися
на вдосконаленні аспектів бізнесу та подоланні проблем для покращення
конкурентоспроможності.
Можливості (Opportunities) в сфері електронної торгівлі в рамках SWOT-
аналізу включають:
Розширення ринку. Можливість залучення нових аудиторій та ринків через
глобальний доступ до інтернету.
Розвиток мобільних платформ. Використання зростаючої популярності
мобільних пристроїв для розширення каналів продажу та сприяння
мобільному шопінгу.
41
Впровадження інновацій. Можливість впровадження нових технологій, таких
як розпізнавання обличчя чи розширена реальність для поліпшення
користувацького досвіду.
Партнерства та інтеграції. Співпраця з іншими компаніями чи інтеграція з
іншими платформами для розширення функціоналу та залучення нових
клієнтів.
Персоналізація та аналітика. Використання аналітики та данних для
створення персоналізованих пропозицій та приваблення клієнтів.
Розвиток крос-бордер е-комерції. Залучення клієнтів з інших країн через
розвиток крос-бордер торгівлі та оптимізація процесів міжнародної доставки.
Ріст популярності онлайн-платежів. Використання розширених та безпечних
систем онлайн-платежів для зручності покупок.
Рекламні та маркетингові можливості. Ефективне використання цифрового
маркетингу, рекламних кампаній та соціальних мереж для збільшення обігів.
Використання цих можливостей дозволяє компаніям в сфері електронної
торгівлі розширювати свою діяльність та збільшувати конкурентоспроможність на
ринку.
Загрози (Threats) в сфері електронної торгівлі в рамках SWOT-аналізу можуть
включати:
Кіберзлочинність та кібератаки. Ризик зламу безпеки інформації та крадіжки
особистих даних клієнтів.
Зростання конкуренції. З'явлення нових конкурентів або зміцнення позицій
існуючих на ринку електронної торгівлі.
Залежність від технологій. Ризик застаріння технологічних рішень, що може
призвести до втрати конкурентної переваги.
Проблеми з логістикою та доставкою. Загрози пов'язані з погіршанням
логістичних процесів та непередбачуваністю в області доставки.
Відсутність фізичного дотику. Загроза конкуренції з офлайн-торгівлі через
відсутність можливості фізичного перегляду товарів.
42
Зміни в законодавстві. Ризик впровадження нових правил і законів, що може
вплинути на операційні процеси та вартість електронної торгівлі.
Зміни в економіці. Економічні кризи або зміни в економічних умовах, що
можуть вплинути на покупельну спроможність споживачів.
Проблеми з оплатою та фінансами. Ризик затримок у фінансових операціях та
проблем із спрощенням оплати.
Аналіз цих загроз дозволяє компаніям розробляти стратегії для подолання
труднощів та зменшення ризиків у динамічному середовищі електронної торгівлі.
Отже SWOT-аналіз визначає внутрішні та зовнішні аспекти організації чи
проєкту. Strengths (сильні сторони) та Weaknesses (слабкі сторони) допомагають
оцінити внутрішні можливості та обмеження. Opportunities (можливості) та Threats
(загрози) дозволяють визначити зовнішні фактори, які можуть бути вигідними чи
ризикованими. SWOT-аналіз допомагає розробляти стратегії для максимізації
переваг та зменшення негативного впливу (зведена інформація наведена в таблиці
2.2).
Таблиця 2.2 – SWOT-аналіз проєкту розробки веб-застосунку клієнтської підтримки
для офлайн магазинів
Сильні сторони Слабкі сторони
Глобальний доступ Залежність від інтернет-з'єднання
Ефективний маркетинг Безпека даних
Автоматизація процесів Конкуренція з великими платформами
Розширення асортименту Технічні неполадки
Аналітика та даний Неоднорідність якості інтернет-
Гнучкість ціноутворення з'єднання
Зручність для клієнтів Потреба в постійному оновленні
Економія часу Високі витрати на цифровий
маркетинг
Проблеми з логістикою
Можливості Загрози
Розширення ринку Кіберзлочинність та кібератаки
Розвиток мобільних платформ Зростання конкуренції
Впровадження інновацій Залежність від технологій
Партнерства та інтеграції Проблеми з логістикою та
43
Персоналізація та аналітика доставкою
Розвиток крос-бордер е-комерції Відсутність фізичного контакту
Рост популярності онлайн-платежів Зміни в законодавстві
Рекламні та маркетингові Зміни в економіці
можливості Проблеми з оплатою та фінансами
Щодо отриманих результатів та висновків, то можна виділити наступне: сфера
є досить конкурентною, високоризиковою та постійно потребує актуальних змін від
гравців на такому ринку.
2.3 Аналіз конкурентних сил в галузі за Портером (метод п’яти сил)
Використаємо в даному розділі наступний аналітичний метод.
Аналіз п'яти сил Портера - це концепція, розроблена відомим стратегічним
аналітиком Майклом Портером, яка використовується для оцінки конкурентної
ситуації в галузі підприємництва та визначення зовнішнього впливу на організацію.
Цей аналітичний інструмент базується на розгляді п'яти ключових сил, які
визначають конкуренцію в галузі:
1. Загроза нових учасників (нових конкурентів): наскільки легко або складно
новим компаніям увійти на ринок та конкурувати з існуючими гравцями.
Висока загроза нових учасників може підняти рівень конкуренції.
2. Сила переговорів покупців: вплив клієнтів на ринку. Якщо покупці мають
значний вплив на ціни, умови продажу та інші аспекти, це може впливати на
прибутковість і стабільність підприємства.
3. Сила переговорів постачальників: вплив постачальників на компанію. Якщо
постачальники мають більший контроль або є обмеженою кількістю, вони
можуть встановлювати умови, що впливають на витрати підприємства.
4. Загроза заміни продуктів або послуг: наскільки легко клієнти можуть перейти
до інших продуктів або послуг. Якщо є багато альтернатив, це може обмежити
здатність компанії утримати клієнтів.
44
5. Сила внутрішньої конкуренції в галузі: оцінюється рівень конкуренції між
існуючими гравцями на ринку. Висока конкуренція може призвести до
зниження цін та прибутковості.
Аналіз п'яти сил Портера допомагає підприємствам зрозуміти своє оточення та
приймати стратегічні рішення для забезпечення конкурентних переваг (результати
наведено в таблиці 2.3).
Таблиця 2.3 – Методика експертної оцінки конкурентного середовища
Оцінка
№ Конкурентні сили Фактор Стан фактору
фактору
Нові конкуренти
1 2
(НК)
Сила переговорів
1
покупців
Сила переговорів
0
постачальників
Загроза заміни
2
продуктів або послуг
Сила внутрішньої
2
конкуренції в галузі
Загальний вплив конкурентного середовища: 1.4
У розрахунках використано трьохбальний механізм оцінки від 1 до 3, з
градацією впливу – слабкий/середній/сильний.
45
2.4 Розробка коцепції проєкту
Проєкт із розробки веб-застосунку клієнтської підтримки для офлайн
магазинів являється та задумувався як інструменти вирішення комунікаційних
проблем між клієнтами та власниками бізнесів електронної торгівлі, що в результаті
має задовольнити вимоги обох сторін. Шляхи, аспекти та заплановані наступні
результати, а саме:
Модернізація обслуговування. Передбачає впровадження сучасних
інструментів, таких як чат-підтримка та віртуальні асистенти, для покращення
взаємодії з клієнтами.
Інтеграція з офлайн магазинами. Створення інструменту, який легко
інтегрується з існуючими системами управління та обліку в офлайн магазинах.
Персоналізація обслуговування. Використання аналітики та данних для
надання персоналізованих рекомендацій та обслуговування клієнтів.
Підтримка через різні канали. Розробка мультіканальної системи підтримки
для зручності клієнтів, які вибирають різні способи взаємодії.
Інноваційні технології. Впровадження штучного інтелекту та інших
інноваційних технологій для автоматизації певних аспектів підтримки та
взаємодії.
Оптимізація процесів. Забезпечення ефективного вирішення проблем та
надання інформації клієнтам з мінімальними затримками.
Залучення та навчання користувачів. Розробка інструментів для залучення та
навчання користувачів використовувати платформу.
Збір та аналіз даних. Використання аналітики для збору та аналізу даних, що
допомагає вдосконалювати сервіс та адаптуватися до змін потреб клієнтів.
Фокус на безпеці та конфіденційності. Велика увага приділяється захисту
особистих даних та забезпеченню високого рівня безпеки.
Лояльність та задоволеність користувачів. Постійна робота над поліпшенням
якості обслуговування з метою підвищення лояльності та задоволеності
клієнтів.
46
Цей проєкт має на меті створення інноваційного та ефективного інструменту
для покращення взаємодії між офлайн магазинами та їхніми клієнтами.
Мета проєкту
Мета розробки проєкту веб-застосунку клієнтської підтримки для офлайн
магазинів полягає в створенні інноваційного інструмента, що полегшить взаємодію
магазинів із клієнтами; створення продукту, який сприяє покращенню
обслуговування клієнтів у секторі офлайн роздрібної торгівлі. забезпечити зручний
онлайн доступ до консультацій, оптимізувати процеси обслуговування та підвищити
рівень задоволення клієнтів, щоб покупки та отримання інформації ставали
простішими та доступнішими широкому загалу користувачів.
Цілі та задачі проєкту
Цілі та задачі виконання проєкту «розробки підсистеми автоматизованих
тестів веб-застосунку клієнтської підтримки для офлайн магазинів»:
Аналіз ринку. Провести детальний аналіз ринку для оцінки потреби у веб-
застосунку для клієнтської підтримки в офлайн магазинах. Визначити
конкурентне середовище, виявити сильні та слабкі сторони конкурентів.
Визначення мети та цільової аудиторії. Визначити основні цілі та завдання веб-
застосунку. Визначити, яку аудиторію ви хочете обслуговувати (наприклад, малі
бізнеси, великі роздрібні мережеві магазини тощо).
Формування функціональності. Розробити перелік основних функціональних
можливостей застосунку, таких як онлайн-чат, віддалена консультація,
віртуальні тури магазину, обробка замовлень тощо.
Дизайн інтерфейсу. Розробити зручний та інтуїтивно зрозумілий інтерфейс для
користувачів, який відповідає їхнім потребам. Забезпечити максимальну
зручність взаємодії (UI|UX).
Технічна архітектура. Розробити технічну архітектуру застосунку, визначити
технології, які будуть використовуватися (база даних, мови програмування,
сервери).
47
Розробка прототипу. Створити прототип застосунку для демонстрації основних
функціональностей та взаємодії з користувачами. Прототип може допомогти
вам отримати зворотний зв'язок від майбутніх користувачів.
Розробка застосунку. Почати розробку самого застосунку, враховуючи визначені
функціональності та дизайн. Важливо дотримуватися графіку та
використовувати кращі практики розробки програмного забезпечення.
Тестування. Провести ретельне тестування для виявлення та виправлення будь-
яких помилок, а також забезпечити відповідність застосунку стандартам
безпеки та захисту персональних даних.
Інтеграція з існуючими системами. Врахувати можливість інтеграції застосунку
з існуючими системами управління складом, обліку, платіжними системами та
іншими.
Маркетинг та просування. Розробити стратегію маркетингу та просування для
залучення користувачів. Використовуйте цифровий маркетинг, соціальні
мережі, контент-маркетинг та інші канали для привертання уваги.
Навчання персоналу та користувачів. Забезпечити навчання персоналу магазину
для використання застосунку та підготувати навчальний матеріал для
користувачів.
Служба підтримки. Організувати службу підтримки для користувачів
застосунку, яка надає відповіді на їхні запитання та вирішує проблеми.
Із озвучених вище задач й випливають конкретні кроки по реалізації проєкту,
його виконання згідно технічного завдання, календарного плану і т.д.
Продукт проєкту:
Продукт проєкту веб-застосунку клієнтської підтримки для офлайн магазинів
може включати наступні ключові функції:
Чат-підтримка. Можливість спілкування в режимі реального часу з клієнтами
для вирішення питань та надання допомоги.
Відслідковування замовлень. Сервіс для відстеження статусу та
місцезнаходження замовлень клієнтів.
48
Автоматизована система відповідей. Використання штучного інтелекту для
автоматизованої відповіді на типові запитання та ситуації.
Віртуальний асистент. Елементи штучного інтелекту для виконання завдань та
надання корисної інформації клієнтам.
Аналітика та звітність. Інструменти для збору та аналізу даних щодо
використання підтримки та взаємодії з клієнтами.
Інтеграція з існуючими системами. Можливість легко інтегруватися з
системами управління запасами, платіжними системами та іншими
інструментами.
Мульти канальність. Підтримка для різних каналів взаємодії, таких як чат,
електронна пошта, телефон, аудіо- та відео- зв’язок та можливість організації
конференцій тощо.
Персоналізація. Можливість надання персоналізованих рекомендацій та
обслуговування на основі даних про покупки та поведінку клієнтів.
Цей продукт спрямований на полегшення комунікації, підвищення
ефективності та покращення клієнтського досвіду для офлайн магазинів.
Критерії успішності
Критерії успішності автоматизованої інформаційної системи проєкту
"розробки веб-застосунку клієнтської підтримки для офлайн магазинів" можуть
включати:
Кількість активних користувачів. Зростання кількості користувачів та активних
взаємодій з платформою.
Задоволеність клієнтів. Висока оцінка задоволеності та позитивні відгуки
користувачів щодо якості обслуговування та взаємодії.
Ефективність підтримки. Зменшення часу відповіді на запитання клієнтів та
рівня невирішених проблем.
Впровадження інновацій. Успішна реалізація та прийняття інноваційних
функцій, таких як штучний інтелект або віртуальний асистент.
49
Інтеграція з офлайн бізнесами. Залучення офлайн магазинів для використання
платформи та позитивні відгуки партнерів.
Збільшення продажів. Підвищення обсягів продажів та конверсії завдяки
покращенню обслуговування та взаємодії з клієнтами.
Стійкість до технічних проблем. Мінімізація технічних збоїв та швидке
вирішення будь-яких проблем.
Рентабельність. Забезпечення рентабельності бізнесу, враховуючи витрати на
розробку та підтримку платформи.
Розширення функціоналу. Постійне розширення функціоналу та адаптація до
змін потреб ринку та технологій.
Партнерства та визнання. Укладання партнерств з ключовими гравцями та
визнання бренду в галузі клієнтської підтримки.
Ці критерії визначають успіх проєкту як у плані взаємодії з користувачами, так
і в аспектах фінансової стійкості та конкурентоспроможності на ринку.
Обмеження проєкту
Обмеження проєкту "розробки веб-застосунку клієнтської підтримки для
офлайн магазинів" можуть включати:
Технічні труднощі. Складнощі у впровадженні та підтримці технічних рішень,
особливо для малих підприємств.
Опір офлайн бізнесів. Опір частини офлайн магазинів до використання нових
технологій та переходу до цифрової підтримки.
Проблеми з безпекою даних. Необхідність забезпечення високого рівня
безпеки для особистих даних клієнтів.
Вартість впровадження. Великі витрати на розробку та впровадження
платформи, особливо для проєктів з обмеженим бюджетом.
Конкуренція з іншими рішеннями. Конкуренція з іншими подібними
платформами та інструментами, які вже існують на ринку.
Труднощі інтеграції. Складнощі інтеграції з різними системами управління та
обліку в офлайн магазинах.
50
Залежність від інтернет-з'єднання. Проблеми з використанням платформи у
випадку ненадійного або обмеженого інтернет-з'єднання.
Питання лояльності клієнтів. Це є певними викликом утримати лояльність
клієнтів, особливо якщо їм зручніше використовувати традиційні методи
обслуговування.
Специфічні потреби різних бізнес-галузей. Необхідність адаптації платформи
до специфічних потреб та процесів різних видів офлайн бізнесів.
Зміни в законодавстві. Потенційні труднощі, пов'язані з змінами в
законодавстві щодо обробки та зберігання особистих даних.
Врахування цих обмежень у процесі розробки та впровадження може сприяти
більш успішному розвитку проєкту.
Технології проєкту
Всі використані технології було обрано з критеріїв технічних вимог,
розповсюдженості та розширюваності. А саме:
Front-end: JavaScript [5,8], Angular [18,19,20].
Back-end: Node.js [7], MongoDB [9,10,11], Jitsi [14,15].
CI\CD: Docker compose [12,13], Jenkins [21,22].
Testing: Playwright [3,4,6], TypeScript [23,24].
Server: Linux [25], Nginx [26].
2.5 Учасники проєкту
Учасники проєкту "розробки веб-застосунку клієнтської підтримки для
офлайн магазинів" включати різні ролі та фахівців. Основні учасники такого проєкту
можуть бути наступними:
Засновники (Founder(s)). Особи, які відповідають за ідею та стратегічне
керівництво проєктом, можливо, ініціатори розробки ідеї та визначення мети
проєкту.
Технічний директор (CTO). Відповідає за технічну сторону проєкту, вибір
технічних рішень, архітектуру програмного забезпечення та розробку.
51
Бізнес-аналітик (Business Analyst). Вивчає потреби бізнесу та користувачів,
визначає функціональні вимоги, проводить аналіз ринку та
конкурентоспроможності.
Дизайнер продукту (Product Designer). Відповідає за вигляд та взаємодію з
користувачем, розробляє інтерфейс та взаємодію з користувачем.
Розробники (Developers). Програмісти, які відповідають за написання коду та
реалізацію функціональності веб-застосунку.
Тестувальники (Testers/QA). Проводять тестування для забезпечення якості
програмного продукту та виявлення можливих помилок.
Менеджер продукту (Product Manager). Керує розвитком продукту, визначає
пріоритети та спілкується з командами розробки.
Маркетологи (Marketers). Відповідають за стратегію маркетингу,
позиціонування продукту, просування та привертання користувачів.
Фахівець з підтримки клієнтів (Customer Support Specialist). Забезпечує
взаємодію з користувачами, вирішує їхні питання та надає підтримку.
Юрист (Legal Advisor). Надає консультації щодо правових аспектів,
включаючи захист інтелектуальної власності та відповідність законодавству.
Кожен учасник має визначену роль та відповідальність, співпрацюючи для
досягнення загальних цілей проєкту.
2.6 Життєвий цикл
Життєвий цикл проєкту розробки веб-застосунку клієнтської підтримки для
офлайн магазинів включає ряд етапів, що охоплюють планування, розробку,
впровадження, експлуатацію та закриття проєкту. Розгляному з чого складаються
дані етапи:
1. Планування:
Визначення мети проєкту. Встановлення чітких цілей та очікувань від
розробки веб-застосунку клієнтської підтримки для офлайн магазинів.
Аналіз вимог. Збір та аналіз вимог, включаючи потреби користувачів та
бізнес-процеси.
52
Планування ресурсів та графіка. Визначення бюджету, потрібних ресурсів,
термінів виконання та графіка робіт.
2. Розробка:
Проєктування архітектури. Створення концепції та структури веб-
застосунку.
Розробка функціоналу. Створення коду та реалізація необхідного
функціоналу.
Тестування. Перевірка роботи програмного забезпечення на виявлення та
виправлення помилок.
3. Впровадження:
Тестування на живому середовищі. Впровадження веб-застосунку для
реальних користувачів.
Навчання персоналу. Надання інструкцій та навчання персоналу офлайн
магазинів щодо використання нового інструменту.
Запуск. Офіційне запуск веб-застосунку та розпочаток його повноцінної
роботи.
4. Експлуатація:
Підтримка та обслуговування. Регулярна технічна підтримка, оновлення та
вдосконалення.
Моніторинг ефективності. Слідкування за роботою застосунку, збір та аналіз
даних щодо його використання.
5. Закриття:
Оцінка проєкту. Аналіз результатів проєкту та порівняння їх із визначеними
раніше цілями.
Завершення проєкту. Закриття проєкту, включаючи документацію та
відзвітування.
Цей життєвий цикл може бути реалізований в рамках різних методологій
управління проєктами, таких як Waterfall, Agile, або Hybrid, в залежності від
специфіки проєкту та його вимог.
53
Існує кілька основних моделей розробки програмного забезпечення, кожна з
яких має свої переваги та обмеження. Ось кілька основних моделей:
1. Модель Waterfall (Каскадна модель) (рис. 2.1):
Проєкт розбивається на послідовні етапи: визначення вимог, проєктування,
реалізація, тестування, впровадження та обслуговування.
Кожен етап починається тільки після завершення попереднього.
Відмінно підходить для проєктів із чітко визначеними вимогами, де зміни
рідко виникають.
Рисунок 2.1 – Каскадна модель розробки
2. Модель Spiral (Вертоліт):
Застосовує ітерації та повторення через кожен з етапів розробки.
Цикл включає визначення вимог, аналіз, проєктування, реалізацію,
тестування та оцінку ризиків.
Дозволяє гнучкіше адаптуватися до змін у вимогах та виявляти ризики на
ранніх етапах.
3. Модель Agile (Гнучка модель) (рис. 2.2):
Акцент на ітераційному та інкрементному підході.
Розробка відбувається в коротких циклах, називаних ітераціями, і включає
активну участь замовника та ефективний комунікаційний процес.
54
Особливо підходить для проєктів, де важлива швидкість реакції на зміни та
активна участь замовника.
Рисунок 2.2 – Гнучка модель розробки
4. Модель V-модель (Модель V) (рис. 2.3.):
Кожен етап розробки має відповідний етап тестування.
Забезпечує паралельний процес розробки та тестування.
Допомагає зменшити ризики, пов'язані з пізнім виявленням проблем у
процесі тестування.
55
Рисунок 2.3 – Гнучка модель розробки
5. Модель Ітеративної та Інкрементальної розробки (рис. 2.4):
Закладає невеликі ітерації розробки, в кожній з яких додається новий
функціонал або вдосконалення.
Дозволяє замовнику переглядати та оцінювати проміжні результати на
ранніх стадіях.
Рисунок 2.4 – Гнучка модель розробки
6. Модель RAD (Rapid Application Development, Швидкий розвиток додатків):
Акцентується на швидкому випуску функціоналу та використанні груп для
активної комунікації та співпраці.
56
Підходить для проєктів, де швидкість розробки є критичною.
Кожна модель має свої переваги та обмеження, і вибір конкретної моделі
залежить від конкретних вимог та характеристик проєкту. В сучасному розробництві
програмного забезпечення часто застосовують гібридні підходи, поєднуючи
елементи різних моделей в залежності від потреб проєкту.
Для виконання проєкту розробки веб-застосунку клієнтської підтримки для
офлайн магазинів обрано формат розробки Agile з ітераціями (спринтами).
Висновки до розділу 2.
У даному розділі ми сформували та повністю розробили концепцію проєкту,
що будемо втілювати в життя. Проаналізували зовнішнє оточення по ключовим
елементам та з врахування необхідних аспектів; розглянули зацікавлені сторону
проєкту. Провели SWOT-аналіз галузі електронної торгівлі; виконали аналіз
конкурентних сил в галузі за Портером (метод п’яти сил) та провели відповідні
розрахунки. Також розглянули і сформували життєвий цикл нашого проєкту з
розглядом основних найрозповсюдженіших моделей розробки ПЗ. Сформували мету,
концепцію, цілі, задачі та учасників проєкту, критерії успішності.
57
3 ПЛАНУВАННЯ ТА УПРАВЛІННЯ ПРОЄКТОМ
3.1 Планування змісту та організаційна структура проєкт
Планування структури стартапу є надзвичайно важливим етапом і є один із
фундаментів успішного запуску та розвитку проєкту. Виділяють наступні причини
планування структури проєкту:
Чіткість і спрямованість. Планування структури допомагає визначити мету та
завдання проєкту, створюючи чіткий шлях для досягнення цілей.
Розподіл обов'язків. Визначення ролей та відповідальностей сприяє
ефективній роботі команди, уникненню дублювання завдань та забезпеченню
ефективного використання ресурсів.
Залучення інвесторів та партнерів. Чітка структура демонструє потенційним
інвесторам та партнерам, як об'єктиви та ресурси розподілені в організації, що
сприяє вірогідності успіху проєкту.
Забезпечення рівноваги. Правильне розподілення функцій та обов'язків
допомагає уникнути перевантаження окремих членів команди та забезпечити
баланс роботи всієї організації.
Адаптація до змін. Гнучка структура дозволяє проєкту швидше адаптуватися
до змін внутрішнього та зовнішнього середовища.
Мотивація команди. Чітко визначені ролі та відповідальності сприяють
зростанню мотивації команди, оскільки кожен знає, як його внесок сприяє
загальному успіху.
Важливість планування структури проєкту:
Ефективне управління ресурсами. Структура дозволяє ефективно
використовувати людські та фінансові ресурси, уникати зайвого витрат та
підтримувати узгоджений розвиток.
Забезпечення стійкості. Планування структури допомагає виявити можливі
слабкі місця та ризики, що сприяє побудові стійкого та витривалого бізнесу.
58
Привертання інвестицій. Інвестори шукають проєкти з чіткою стратегією та
структурою, оскільки це збільшує їхню вірогідність отримання прибутку.
Створення ефективного бізнес-процесу. Планування допомагає оптимізувати
бізнес-процеси, визначити оптимальні шляхи взаємодії між різними відділами
та командами.
Створення організаційного клімату. Чітка структура сприяє створенню
задоволеного та ефективного організаційного клімату, що впливає на робочий
потенціал команди.
Підготовка до масштабування. Правильно спроєктована структура легше
масштабується з розвитком бізнесу, що дозволяє проєкту більше можливостей
для росту.
Узгоджена та обдумана структура є ключовим елементом успіху проєкту,
допомагаючи забезпечити ефективну роботу та досягти поставлених цілей.
Матриця відповідальності, відома як матриця RACI, є інструментом
управління проєктами та бізнес-процесами, який визначає ролі та відповідальності
осіб в рамках конкретного завдання чи проєкту. Скорочення RACI вказує на чотири
основні ролі, які можуть бути взяті учасниками в дії:
R - Responsible (Відповідальний). Особа або група, яка несе відповідальність
за виконання конкретної задачі чи етапу проєкту. Це ті, хто виконує роботу.
A - Accountable (Відповідальний за результат). Одна особа, яка несе кінцеву
відповідальність за успіх завдання чи етапу проєкту. Це та особа, яка приймає
рішення та відповідає за результат.
C - Consulted (Покликаний до консультації). Особи, які надають консультації
чи вносять внесок у процес, але не несуть безпосередньої відповідальності за
виконання завдання.
I - Informed (Повідомлений). Особи, які повинні бути проінформовані про хід
та результати завдання чи етапу, але не приймають активної участі у виконанні
чи прийнятті рішень.
59
Матриця RACI зазвичай виглядає як таблиця, де в рядках вказуються завдання
чи етапи проєкту, а в стовпчиках вказуються ролі (R, A, C, I). У перетині рядка та
стовпчика вказується, яка роль відіграється для конкретного завдання чи етапу
(результати наведено в таблиці 3.1).
Таблиця 3.1 – Матриця відповідальності (RACI)
Задача / Роль
Розробка технічної архітектури R I R - - -
Написання коду I R - - -
Дизайн інтерфейсу - R - - - -
Вивчення потреб користувачів R C - - C -
Розробка маркетингових
C - - R I -
стратегій
Продаж продукту - - - - R C
Технічна підтримка - - - - - R
Тестування системи I R R - I I
Забезпечення стабільної роботи
- R R - - C
інфраструктури
3.2 Планування змісту та календарного плану проєкту
Планування змісту проєкту – це стратегічний процес створення плану, який
визначає основні компоненти та елементи, необхідні для успішного розвитку та
впровадження нового бізнесу. Планування змісту стартапу включає ряд ключових
компонентів, які спрямовані на визначення, розробку та управління всією діяльністю
проєкту. Цей план служить своєрідною картою шляху для команди та зацікавлених
сторін, визначаючи цілі, стратегії, тактики та ресурси, необхідні для досягнення
успіху.
Основні аспекти планування змісту проєкту включають:
Керівник проєкту
Дизайнер
Команда розробки +
QA
Маркетинг
Відділ продажів
Підтримки
(клієнтська та техн.)
60
Опис продукту або послуги. Ретельне визначення та опис того, що саме проєкт
пропонує на ринку. Це включає унікальні характеристики продукту чи
послуги, їхню цінність для клієнтів та конкурентні переваги.
Цільова аудиторія та ринок. Визначення цільової аудиторії, аналіз ринку та
конкурентів. Важливо з'ясувати, чи існує попит на продукт чи послугу на
обраному ринку.
Бізнес-модель. Розробка стратегії генерації прибутку та визначення того, як
проєкт буде вибудовувати свою фінансову структуру.
Маркетинговий план. Визначення стратегій маркетингу та продажів для
привертання та утримання клієнтів. Це включає позиціонування бренду,
стратегії ціноутворення та рекламні кампанії.
Організаційна структура та команда. Визначення структури компанії, ролей та
відповідальностей членів команди. Опис кваліфікацій та досвіду, необхідного
для ефективного виконання завдань.
Фінансовий план. Прогнозування фінансових результатів, включаючи
прибуток і збитки, бюджет, прогноз готівкового потоку та план витрат.
Ризик-аналіз та стратегії управління ризиками. Визначення потенційних
ризиків та розробка стратегій для їх виявлення, оцінки та контролю.
Часовий графік. Створення часового графіка для розвитку та впровадження
різних етапів проєкту.
Ключові показники продуктивності (KPI). Визначення та встановлення KPI
для вимірювання ефективності та відстеження досягнення стратегічних цілей.
План виведення продукту на ринок. Розробка стратегії для виходу на ринок та
подальшого розвитку компанії.
План змісту проєкту є інструментом, який допомагає створити збалансовану та
стратегічну візію для нового бізнесу, сприяючи його стійкому розвитку та
конкурентоспроможності.
Планування змісту проєкту представляє собою стратегічний процес,
спрямований на визначення конкретних кроків, етапів та завдань, необхідних для
61
успішного розроблення та впровадження автоматизованої інформаційної системи
управління в будівельній компанії. Ця процедура включає в себе ретельний аналіз
бізнес-потреб, формування вимог, проєктування системи, реалізацію, впровадження,
експлуатацію та моніторинг можливостей для подальшої модернізації.
Компоненти планування змісту проєкту (Таблиця 3.2):
Аналіз потреб.
Визначення вимог.
Проєктування.
Реалізація.
Експлуатація та підтримка.
Моніторинг та модернізація:
Також виконано з допомогою програмних засобів календарний план-графік та
роадмап.
Таблиця 3.2 – Розподілення участі в проекті відповідно до ролей
Монітор
Експлуата
Аналіз Визначен Проєктув инг та
Найменування Реалізація ція та
потреб ня вимог ання модерніз
підтримка
ація
Керівник проєкту + + + + + +
UX/UI Дизайнер + +
Front-end розробник + + +
Back-end розробник + + +
QA інженер + + +
Маркетолог + + + + +
Менеджер (продаж, + +
тех.підтримки
62
Таблиця 3.3 – РоадМап (Сітьовий графік)
№ Посада/Місяць (2024р) міс. 07 08 09 10 11 12
1 Керівник проєкту 6
2 UX/UI Дизайнер 3
3 Front-end розробник 5
4 Back-end розробник 5
5 QA інженер 5
6 Маркетолог 1
7 Менеджер з продажу та технічної підтримки 2
3.3 Планування бюджету
Управління бюджетом є ключовим елементом ефективного ведення проєкту.
Нижче наведено деякі аспекти, які слід враховувати при управлінні бюджетом
проєкту:
Детальне планування витрат. Створення детального плану витрат на різні
аспекти бізнесу, включаючи розробку продукту, маркетинг, обладнання, оренду
та оплату праці.
Резервування на неочікувані витрати. Врахування резерву на непередбачувані
витрати або зміни в стратегії. Це може допомогти уникнути фінансових
труднощів у випадку непередбачуваних обставин.
Перевірка та оцінка ефективності витрат. Регулярна перевірка та оцінка
ефективності витрат, щоб забезпечити, що гроші витрачаються на те, що
справді необхідно для досягнення стратегічних цілей.
Розробка етапів витрат. Розподілення бюджету на етапи, щоб можна було
ефективно контролювати та визначати пріоритетність витрат на різних етапах
розвитку.
Прогнозування прибутку та витрат. Регулярне прогнозування прибутку та
витрат на основі реальних даних дозволяє адаптувати бюджет відповідно до
поточної ситуації.
63
Управління готівкою. Ефективне управління готівкою, щоб уникнути
фінансових труднощів та забезпечити платоспроможність компанії.
Визначення ключових показників продуктивності (KPI). Встановлення та
відстеження KPI для вимірювання використання ресурсів та ефективності
витрат.
Стратегія збереження ресурсів. Використання стратегій збереження ресурсів,
таких як угоди з постачальниками, перевірка альтернативних варіантів та
оптимізація процесів.
Регулярне оновлення бюджету. Регулярне оновлення бюджету відповідно до
змін в стратегії бізнесу, ринкових умов та інших факторів.
Залучення професіоналів. Залучення фахівців з фінансів та бухгалтерії для
забезпечення правильного ведення бухгалтерії та контролю над фінансами.
Управління бюджетом є невід'ємною частиною стратегічного управління
проєктом. Ретельне планування та ефективне використання ресурсів можуть
допомогти проєкту досягти своїх цілей та забезпечити стійкий розвиток (детальніше
таблиця 3.4).
Таблиця 3.4 – Витрати на залучення працівників (трудових ресурсів) на
виконання запланованих та запроєктованих робіт проєкту
Ставка на Термін, Сумарна
№ Найменування Кількість
місяць місяців ціна, грн
1 Керівник проєкту 1 25 000 6 150 000
2 UX/UI Дизайнер 1 25 000 3 75 000
3 Front-end розробник 1 75 000 5 350 000
4 Back-end розробник 1 75 000 5 350 000
5 QA інженер 1 50 000 5 250 000
6 Маркетолог 1 35 000 1 35 000
7 Менеджер з продажу та 2 50 000 2 100 000
технічної підтримки
Сума: 1 310 000
64
3.4 Управління ризиками
Управління ризиками є важливою складовою стратегічного управління
проєктом. Нижче наведено основні стратегії управління ризиками для проєктів:
Ідентифікація ризиків. Ретельна ідентифікація всіх можливих ризиків, які
можуть виникнути під час розвитку проєкту. Це включає технічні, фінансові,
ринкові та інші ризики.
Аналіз ризиків. Оцінка важливості та ймовірності кожного ризику. Аналіз
ризиків допомагає визначити, які ризики є найбільш критичними та
потребують негайного управління.
Розробка стратегій управління ризиками. Розроблення конкретних стратегій та
планів дій для кожного ідентифікованого ризику. Це може включати
уникнення, зменшення, передачу або прийняття ризику.
Створення резервного фонду. Створення резервного фонду для
непередбачених витрат чи можливих збитків внаслідок ризикованих ситуацій.
Страхування. Використання страхування для перенесення фінансового ризику
на страхову компанію. Це особливо важливо для проєктів у високоризикових
галузях.
Диверсифікація ризиків. Розподіл ризиків шляхом диверсифікації діяльності
чи портфеля продуктів, що може зменшити загальний вплив ризиків.
Встановлення системи моніторингу. Створення системи моніторингу для
регулярного відстеження ризикованих ситуацій та оперативного реагування на
них.
Створення культури управління ризиками. Впроваження культури управління
ризиками серед команди та сприяння свідомому взяттю на себе ризиків у
процесі прийняття рішень.
Сценарійне планування. Розробка сценаріїв для можливих ризикованих
ситуацій та стратегій дій у випадку їх виникнення.
65
Застосування кращих практик галузі. Використання накопиченого досвіду та
кращих практик відомих компаній у відповідній галузі для управління
ризиками.
Управління ризиками є динамічним процесом, і стратегії повинні регулярно
переглядатися та оновлюватися відповідно до змін у середовищі проєкту та
ринкових умовах.
Ідентифікація ризиків є важливим етапом управління ризиками в проєкті.
Для ефективної ідентифікації ризиків можна використовувати різні методи та
підходи. Нижче подано деякі ключові аспекти, які можна врахувати (детальніше
таблиці 3.5- 3.8):
Аналіз галузі та ринку. Вивчення галузі та ринку, в якому діє проєкт, для
виявлення зовнішніх ризиків, таких як конкуренція, зміни в законодавстві чи
ринкові коливання.
Технічний аналіз. Оцінка технічних аспектів продукту або послуги, виявлення
можливих технічних проблем, вразливостей або обмежень.
Аналіз конкурентів. Вивчення стратегій конкурентів та визначення можливих
впливів на позицію проєкту на ринку.
Аналіз потреб ринку. Оцінка можливостей та загроз, пов'язаних зі змінами в
потребах цільової аудиторії.
Аналіз фінансових аспектів. Визначення фінансових ризиків, таких як нестача
коштів, зростання витрат чи непрогнозовані фінансові труднощі.
Внутрішній аналіз бізнес-процесів. Перегляд внутрішніх процесів та
ідентифікація можливих слабких місць чи неефективностей.
Аналіз та ідентифікація викликів з рекрутингу. Розгляд можливих труднощів у
формуванні команди та забезпеченні кваліфікованого персоналу.
Оцінка ризиків з партнерських відносин. Визначення ризиків, пов'язаних з
партнерськими угодами, аутсорсингом чи іншими формами співпраці.
Визначення технологічних ризиків. Оцінка можливих технологічних викликів,
таких як технічні збої, нестабільність системи чи проблеми з безпекою.
66
Аналіз впливу змін в законодавстві. Вивчення потенційного впливу змін в
законодавстві на діяльність проєкту.
Важливо проводити систематичні сесії ідентифікації ризиків та враховувати
нові фактори, що можуть вплинути на проєкт. Це допомагає забезпечити гнучкість
та адаптивність в управлінні ризиками на різних етапах розвитку бізнесу.
Таблиця 3.5 – Аналіз ймовірності виникнення ризикових подій та їх впливу на хід
виконання завдань проєкту
Ймовірність появи ризикових подій, бали Стан виконання завдань проєкту (х), %
Слабо-ймовірна 1 0 < х ≤ 10
Малоймовірна 2 10 < х ≤ 30
Ймовірна 3 30 < х ≤ 60
Дуже ймовірна 4 60 < х ≤ 90
Майже можлива 5 90 < х ≤ 100
Таблиця 3.6 – Оцінка розміру можливих втрат від негативних наслідків ризикових
подій для визначення їх впливу на реалізацію завдань проєкту
Величина можливих втрат, бали Стан виконання завдань проєкту (у), %
Мінімальна 1 0 < у ≤ 10
Низька 2 10 < у ≤ 30
Середня 3 30 < у ≤ 60
Висока 4 60 < у ≤ 90
Максимальна 5 90 < у ≤ 100
67
Таблиця 3.7 – Ризики при виконанні проєкту
№ Ризик Опис Наслідки настання Ймо Вели Зага
ризику ризикової події вірні чина льна
сть втр вели
ат чина
1 Технічні Невідповідність Затримки у розробці, 4 4 16
проблеми обраних технологій і можливі втрати даних
т.д.
2 Зміни вимог Потреба у частих Затримки, збільшення 3 2 6
змінах вимог під час бюджету та втрати часу
реалізації проєкту
3 Проблеми з Можливість витоку чи Порушення приватності 2 2 4
безпекою недостатньої захисту клієнтів, втрати довіри
даних конфіденційних даних та юридичні проблеми
4 Відсутність Недостатній досвід Збільшення ризику 3 3 9
досвіду в команди в розробці невдачі та неефективна
здійсненні подібних реалізація проєкту
подібних інформаційних систем
проєктів
5 Фінансові Непередбачувані Затримки у реалізації, 3 4 12
обмеження фінансові труднощі чи зменшення
обмеження бюджету функціональності
6 Неефективна Проблеми в Затримки, конфлікти та 2 2 4
комунікація комунікації та невірне розуміння
у команді недорозуміння. завдань
7 Недостатня Система неспроможна Збої у роботі, втрати 3 3 9
стійкість до витримати великий даних та негативний
навантаженн обсяг роботи або вплив на репутацію
я користувачів
8 Неправильна Недооцінка чи Затримки у графіку та 3 4 12
оцінка переоцінка перевищення бюджету
обсягу робіт
9 Невідповідні Відсутність або Підвищене ризик витоку 2 2 4
сть системи неправильна даних та порушення
стандартам відповідність безпеки.
безпеки: стандартам безпеки
68
Таблиця 3.8 – Матриця імовірностей та наслідків
Ймовірність / 1 2 3 4 5
втрата
1
2 3, 6, 9 2; 8
3 2 4, 7
4 5, 8 1
5
Найбільш вагомі ризики за загальною оцінкою (ймовірність х величина втрат)
- це 1, 5 та 8. Розглянемо стратегії реагування та заходи при їх виникненні:
1. №1, Технічні проблеми (імовірність/величина втрат: 4/4):
Стратегія реагування: активний моніторинг технічного стеку та отриманих
проміжних результатів продукту по ітераціях.
Заходи: аналіз технічних вимог до проєкту та врахування всіх обмежень
технічних рішень та технологій.
2. №5 Фінансові обмеження (імовірність/величина втрат: 3/4):
Стратегія реагування: контроль витрат.
Заходи: ретельне планування та ретроспективи витрат після кожної ітерації
(спринта).
3. №8 Неправильна оцінка обсягу робіт (імовірність/величина втрат: 3/4):
Стратегія реагування: активне управління проєктом та регулярне
переглядання обсягу робіт.
Заходи: систематичні перегляди обсягу робіт, впровадження механізмів
виявлення та виправлення непорозумінь, а також утворення додаткових
резервів у графіку та бюджеті.
69
3.5 Управління якістю
Управління якістю на проєкті розробки веб-застосунку клієнтської підтримки
для офлайн магазинів є важливою складовою для забезпечення успішності та
задоволеності користувачів. Цей процес включає в себе ряд кроків та практик, які
спрямовані на досягнення визначених стандартів та вимог до продукту. Основні
етапи та практики управління якістю:
Визначення вимог якості. Чітка формулювання вимог щодо
функціональності, продуктивності, надійності, безпеки та інших аспектів
системи.
Планування якості. Визначення стратегії тестування, методів оцінки якості,
визначення вимог до тестових середовищ, ресурсів та розробка плану
якості.
Розробка та тестування. Використання технік тестування для перевірки
функціональності та відповідності вимогам. Автоматизація тестування, де
це можливо, для покращення ефективності.
Вимірювання та метрики. Встановлення метрик якості, які дозволяють
вимірювати ефективність та стан проєкту. Моніторинг ключових показників
продуктивності та якості.
Контроль конфігурацій. Управління конфігурацією коду та інших елементів
проєкту, щоб забезпечити стабільність та відстеження змін.
Управління ризиками якості. Визначення потенційних ризиків якості та
розробка стратегій їх управління.
Тестування продуктивності та безпеки. Проведення тестів для визначення
продуктивності системи та її захищеності від потенційних загроз.
Залучення замовника. Активна участь замовника в процесі тестування та
збору зворотнього зв'язку щодо відповідності системи вимогам.
Навчання та підтримка персоналу. Забезпечення належного навчання для
користувачів та технічної підтримки для розв'язання можливих проблем.
70
Аудит якості. Проведення періодичних аудитів для перевірки дотримання
встановлених процедур та стандартів якості.
Ці етапи дозволяють не лише виявляти можливі проблеми у якості, але й
вдосконалювати процеси розробки для досягнення вищих стандартів. Управління
якістю має бути інтегрованою частиною усього життєвого циклу проєкту.
Управління якістю на проєкті веб-застосунку для офлайн магазинів є динамічним
процесом, який вимагає постійного вдосконалення та взаємодії між розробниками,
тестувальниками та замовниками. Це гарантує не тільки високу якість продукту, але
й відповідає змінюючимся потребам користувачів та ринковим умовам.
3.5 Управління коммунікаціями проєкту
Управління комунікаціями проєкту – це ключовий елемент проєктного
управління, спрямований на ефективне планування, виконання, моніторинг та
контроль комунікацій всередині проєкту. Цей процес включає в себе систематичне
управління інформаційним потоком між різними сторонами проєкту з метою
забезпечення успішного виконання завдань та досягнення цілей проєкту.
Основні елементи управління комунікаціями проєкту включають:
Планування комунікацій. Визначення потреб у комунікаціях різних
зацікавлених сторін (стейкхолдерів), встановлення мети та обсягу комунікацій.
Визначення зацікавлених сторін. Встановлення ідентифікації та ролей всіх
осіб, які можуть бути впливовими чи зацікавленими у проєкті.
Розробка плану комунікацій. Створення стратегії комунікацій, включаючи
визначення каналів спілкування, частоти та формату звітності.
Реалізація комунікацій. Виконання плану комунікацій, включаючи передачу
інформації стейкхолдерам, вирішення питань та надання оновлень.
Моніторинг та контроль. Слідкування за ефективністю комунікацій, виявлення
можливих проблем та коригування плану, якщо це необхідно.
Управління ризиками комунікацій. Визначення та управління можливими
ризиками, пов'язаними з комунікаціями, для запобігання негативним
наслідкам.
71
Мотивація команди. Використання комунікацій для мотивації та залучення
членів команди, зокрема встановлення цілей та визначення важливості їхнього
внеску.
Оцінка та звітність. Здійснення оцінки ефективності комунікацій та підготовка
звітів для різних зацікавлених сторін.
Ефективне управління комунікаціями сприяє забезпеченню зрозумілості,
взаєморозуміння та співпраці всіх стейкхолдерів, що покращує шанси на успішне
завершення проєкту.
На проєкті використовуються різноманітні види комунікацій, які можна
класифікувати за різними критеріями. Ось декілька основних видів комунікацій на
проєкті:
Внутрішня комунікація:
o Вертикальна: Відбувається між різними рівнями управління, наприклад, від
керівництва до виконавчого персоналу та навпаки.
o Горизонтальна: Відбувається між представниками одного рівня управління,
щоб обговорити питання або вирішити спільні завдання.
Зовнішня комунікація:
o Стейкхолдерська: Взаємодія зі стейкхолдерами проєкту, включаючи клієнтів,
партнерів, інвесторів, громадські організації та інші зацікавлені сторони.
o Публічна: Комунікація з широким загалом або громадськістю, зокрема через
медіа та інші канали.
Формальна комунікація:
o Офіційна: Заснована на встановлених процедурах та правилах, таких як
офіційні звіти, документація та протоколи зустрічей.
o Неофіційна: Включає неформальні обговорення та взаємодії, які можуть
виникнути не в рамках офіційних процедур.
Спрямована на завдання та результати:
o Технічна: Комунікація, спрямована на обговорення та вирішення технічних
аспектів проєкту.
72
o Бізнес-орієнтована: Комунікація, що стосується бізнес-аспектів проєкту,
таких як стратегія, фінанси та маркетинг.
Індивідуальна та групова комунікація:
o Одержувач один до одного: Пряма комунікація між двома особами.
o Групова: Комунікація в рамках групи людей, що мають спільні інтереси або
відповідальності.
Інтерактивна та одностороння комунікація:
o Інтерактивна: Включає активний обмін інформацією між учасниками, такий
як дискусії та наради.
o Одностороння: Однобічна передача інформації від одного учасника до
іншого без активної відповіді.
Використання різних видів комунікацій залежить від характеру проєкту, його
учасників та специфічних вимог стейкхолдерів. Організація ефективної комунікації
є ключовим елементом успішного виконання проєктів.
Висновки до розділу 3.
У даному розділі ми виконали планування та управління проєктом.
Сплановано зміст та організаційна структура проєкту з побудовою матриці RACI.
Спланували зміст та календарний план проєкту, побудували РоадМап (сітьовий
графік). Також спланували бюджет та провели планування та аналіз ризиків –
ймовірність виникнення та оцінка розміру можливих втрат, побудували матрицю
імовірностей та наслідків.
73
4 ВИКОНАННЯ ПРОЄКТУ
4.1 Опис продукту проєкту
Назва продукту: підсистема автоматизованих тестів веб-застосунку клієнтської
підтримки для офлайн магазинів
Опис: «розробка підсистеми автоматизованих тестів веб-застосунку
клієнтської підтримки для офлайн магазинів» є складовою частиною «розробки веб-
застосунку клієнтської підтримки для офлайн магазинів. Призначена для контролю
якості виконаних попередніх стадій (аналізу вимог, проєктування та розробки) та
якості продукту в цілому.
Модуль «розробки підсистеми автоматизованих тестів веб-застосунку
клієнтської підтримки для офлайн магазинів» було використано застосовуючи мову
програмування JavaScript та фреймворк Playwright. Вибір даних технологій був
зумовлений технічними можливостями даних компонентів.
4.2 Опис підсистеми автоматизованих тестів веб-застосунку клієнтської
підтримки для офлайн магазинів
Підсистема автоматизованих тестів веб-застосунку клієнтської підтримки для
офлайн магазинів» складається з наступних складових структурних частин
об’єднаних спільною логікою:
Провели основні налаштування для початку роботи з тестами.
Спочатку йдуть тест-сьюти для кімнати очікування застосунку.
Для хедера.
Тест-сьют для поля вводу імені користувача.
Тест-сьют для кнопки приєдання до кімнати.
Тест-сьют для авторизації через Facebook.
Тест-сьют для авторизації через Google.
Тест-сьют для перевірки аватара.
Тест-сьют для перевірки кнопки увімкнення мікрофона та її налаштувань.
74
Тест-сьют для перевірки кнопки увімкнення камери та її налаштувань.
Тест-сьют для перевірки кнопки налаштувань застосунку.
Тест-сьют для перевірки елементів футера.
Тест-сьют для перевірки можливості приєднання до кімнати.
Тест-сьют для перевірки основних елементів кімнати.
Тест-сьют для перевірки основних елементів області учасників.
Тест-сьют для перевірки мікрофона в кімнаті.
Тест-сьют для перевірки камери в кімнаті.
Тест-сьют для перевірки функціоналу запису віртуальної зустрічі, запросити
на зустрі інших користувачів і т.д. .
Тест-сьют для перевірки можливості чату між учасниками зустрічі.
Тест-сьют для перевірки функціоналу кімнати при перебуванні одного та
кількох учасників.
Текст програми підстистеми автоматизованих тестів мовою JavaScript та із
застосуванням фреймворку Playwright подано у додатку Б.
Висновки до розділу 4.
У даному розділі ми вже безпосередньо приступили до виконання проєкту.
Повністю описали продукт даного проєкту. Описали та охарактеризували підсистему
автоматзиованих тестів веб-застосунку клієнтської підтримки для офлайн магазинів,
та успішно виконали розробку повністю підсистеми автоматизованих тестів.
75
ВИСНОВКИ
У даній кваліфікаційній роботі було проведено грунтовне дослідження ринку
телекомунікаційних програмних засобів клієнтської підтримки, що існують на
ринку. Розглянуто всі основні типи згруповані за напрямками використання, їх
основні особливості та переваги. Також стисло проаналізовано особливості
конкретних програмних засобів по кожній з груп.
У результаті виконання практичної частини основного проєкту з розробки веб-
застосунку клієнтської підтримки для офлайн магазинів було виконано розробку
підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для
офлайн магазинів. Для цього було використано мову програмування JavaScript та
фреймворк Playwright.
Системи відеозв'язку між покупцем та офлайн магазином можуть мати
декілька переваг, які сприяють покращенню зв'язку між клієнтами та працівниками
магазину. Ось деякі з можливих переваг:
Онлайн консультації. Клієнти можуть отримати консультації в режимі
реального часу, знаходячись вдома або в іншому місці. Продавці можуть
надавати інформацію про товари, допомагати в виборі, відповідати на питання
та навіть показувати товари через відео.
Віртуальний показ товарів. Продавці можуть використовувати відеозв'язок для
демонстрації товарів у режимі реального часу. Це особливо корисно для
продажу товарів, які краще розглядаються або потребують більш детального
розгляду.
Віддалене замовлення товарів. Покупці можуть робити замовлення товарів в
режимі онлайн під час відеодзвінку. Це дозволяє зручно оформити покупку,
обговорити деталі та навіть здійснити онлайн-оплату.
Особистий підхід до клієнта. Відеозв'язок дозволяє зберегти особистий
контакт між покупцем та працівником магазину, навіть якщо вони далеко один
76
від одного. Це може створювати позитивний враження та зміцнювати
відносини з клієнтами.
Вирішення питань та роз'яснення. За допомогою відеозв'язку клієнти можуть
швидко вирішувати питання або роз'яснювати непорозуміння щодо товарів,
цін, акцій тощо без необхідності фізичного відвідування магазину.
Збільшення впізнаваності бренду. Відеозв'язок дозволяє магазинам створювати
персоналізовані та індивідуальні експертні консультації, що може сприяти
позитивній впізнаваності бренду.
Заощадження часу. Віддалений відеозв'язок може ефективно заощаджувати час
як для клієнтів, так і для працівників, оскільки він дозволяє проводити
консультації та оформлення замовлень без потреби фізичного присутності.
Переваги проєкту:
Покращена клієнтська служба. Застосунок для клієнтської підтримки може
надавати клієнтам швидкий та зручний спосіб отримання інформації,
вирішення проблем та отримання консультацій, що сприяє покращенню
загального рівня обслуговування.
Віддалена консультація та продажі. Веб-застосунок може дозволити віддалено
проводити консультації та навіть здійснювати продажі, що особливо актуально
в умовах обмежень або у ситуаціях, коли клієнти не можуть відвідувати
фізичний магазин.
Оптимізація роботи персоналу. Застосунок може допомагати оптимізувати
роботу персоналу, дозволяючи їм ефективно обробляти запити клієнтів, вести
онлайн-чати та взаємодіяти з клієнтами безпосередньо через веб-платформу.
Розширення асортименту. Магазини можуть розширити асортимент товарів та
послуг, надаючи клієнтам доступ до онлайн-каталогу чи віртуального
магазину.
Збільшення лояльності клієнтів. Інтерактивний та ефективний веб-застосунок
для підтримки може допомагати в підтримці та розвитку лояльності клієнтів,
забезпечуючи їм зручний доступ до інформації та обслуговування.
77
Збільшення конкурентоспроможності. Створення веб-застосунку може
слугувати як інноваційний крок, що підвищить конкурентоспроможність
магазину на ринку та сприятиме привертанню нових клієнтів.
Адаптація до змін у споживчому поведінці. Застосунок дозволяє магазинам
ефективно адаптуватися до змін у споживчому поведінці, зокрема до зростання
віртуальних інтеракцій та онлайн-покупок.
Проблеми і недоліки проєкту:
Вартість розробки та впровадження. Розробка високоякісного веб-застосунку
може бути витратною, і вартість розробки та впровадження може бути
великою для проєкту. Потрібно враховувати витрати на програмування,
дизайн, тестування та підтримку.
Необхідність популяризації серед клієнтів. Важливо вивчити та розробити
стратегії для популяризації вашого веб-застосунку серед клієнтів. Якщо
клієнти не знають або не використовують застосунок, він може залишитися
малоефективним.
Технічні проблеми та безпека. Веб-застосунок повинен бути надійним та
безпечним, оскільки будь-які технічні проблеми чи вразливості можуть
впливати на довіру користувачів та призвести до втрати клієнтів.
Навчання та прийняття користувачами. Клієнти можуть виявити опір
використанню нового сервісу, особливо якщо вони звикли до традиційного
обслуговування у фізичних магазинах.
Конкуренція з іншими каналами обслуговування. Магазини можуть вже
використовувати інші канали обслуговування, такі як телефонна лінія
підтримки, чат або електронна пошта. Конкурування з існуючими каналами
може бути складним завданням.
Необхідність інтеграції з існуючими системами. Якщо магазин вже
використовує інші інформаційні системи, важливо забезпечити сумісність та
інтеграцію з новим веб-застосунком.
78
Забезпечення якості обслуговування. Імовірність виникнення труднощів у
взаємодії з клієнтами в онлайн-середовищі може впливати на якість
обслуговування та призводити до негативного враження.
Залежність від інтернет-з'єднання. Застосунок передбачає наявність
стабільного інтернет-з'єднання, і відмова мережі може призвести до втрати
можливостей взаємодії з клієнтами (тимчасової на період відсутності зв’язку).
Проблеми з конфіденційністю даних. Захист особистих даних клієнтів є
критичним аспектом. Якщо клієнти відчують недостатню конфіденційність, це
може вплинути на їхню готовність використовувати веб-застосунок.
Враховуючи виявленні переваги та недоліки даної системи, можна сказати, що
все-таки запровадження даного типу системи принесе значну користь для кінцевого
споживача продукту, а саме для клієнта та буде ефективним інструментом компаній
зі сфери продажів для успішної роботи та отримання прибутку.
79
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Боб Дорф, Стів Бленк. Священна книга стартапера. Як збудувати успішну
компанію. Наш формат. 2018. 512 с.
2. Даніель Канеман. Мислення швидке й повільне. Наш формат. 2017. 480 с.
3. Playwright enables reliable end-to-end testing for modern web apps.
https://playwright.dev/
4. Playwright on GitHub https://github.com/microsoft/playwright
5. Kinsbruner, Eran (2022). A Frontend Web Developer's Guide to Testing: Explore
leading web test automation frameworks and their future driven by low-code and
AI. Packt Publishing. ISBN 978-1803238319
6. Irvine, Daniel (2023). Svelte with Test-Driven Development: Advance your skills
and write effective automated tests with Vitest, Playwright, and Cucumber.js. Packt
Publishing. ISBN 978-1837638338
7. Node.js is an open-source, cross-platform JavaScript runtime environment.
https://nodejs.org/
8. Herman, David (2013). Effective JavaScript. Addison-Wesley. p. 83. ISBN 978-0-
321-81218-6
9. MongoDB: The Developer Data Platform https://www.mongodb.com/
10. Banker, Kyle (March 28, 2011), MongoDB in Action (1st ed.), Manning, p. 375,
ISBN 978-1-935182-87-0
11. Pirtle, Mitch (March 3, 2011), MongoDB for Web Development (1st ed.), Addison-
Wesley Professional, p. 360, ISBN 978-0-321-70533-4
12. Docker: Accelerated Container Application Development https://www.docker.com/
13. Docker on GitHub https://github.com/docker
14. Jitsi: Free Video Conferencing Software for Web & Mobile https://jitsi.org/
15. Jitsi on GitHub https://github.com/jitsi
16. Вплив війни на інтернет-торгівлю: як змінювалися онлайн-продажі рітейлерів
протягом І півріччя 2022 року https://rau.ua/novyni/vpliv-vijni-na-internet/
80
17. Розширення бізнесу завдяки e-commerce: підходи великого ритейлу
https://www.epravda.com.ua/columns/2023/05/2/699655/
18. Angular (web framework) https://en.wikipedia.org/wiki/Angular_(web_framework)
19. The web development framework for building the future https://angular.io/
20. Angular GitHub https://github.com/angular/angular
21. Jenkins. Build great things at any scale https://www.jenkins.io/
22. Hudson devs vote for name change; Oracle declares fork. ITWorld. Retrieved May
31, 2018. https://www.itworld.com/article/2746627/open-source-tools/hudson-devs-
vote-for-name-change--oracle-declares-fork.html
23. TypeScript is JavaScript with syntax for types. https://www.typescriptlang.org/
24. TypeScript is a language for application-scale JavaScript.
https://www.npmjs.com/package/typescript
25. Building and maintaining community images https://www.linuxserver.io/
26. Deliver Modern Applications at Scale with F5 NGINX https://www.nginx.com/
81
ДОДАТОК А
Затверджую
Зав. кафедри КНСА,
______________ Юрій ТРИУС
«____»____________2024 р.
УПРАВЛІННЯ ПРОЄКТОМ РОЗРОБКИ ПІДСИСТЕМИ
АВТОМАТИЗОВАНИХ ТЕСТІВ ВЕБ-ЗАСТОСУНКУ КЛІЄНТСЬКОЇ
ПІДТРИМКИ ДЛЯ ОФЛАЙН МАГАЗИНІВ
Специфікація
482. ЧДТУ. 32251-01 90 01
Листів 2
Розробник ____________________ Сокоренко С.П.
Керівник ____________________ Бойко В.В.
Черкаси – 2024
82
482. ЧДТУ. 32251-01
Позначення Найменування Примітка
Документація
482. ЧДТУ. 32251-01 12 01 Текст програми
підстистеми
автоматизованих тестів
мовою JavaScript та із
застосуванням
фреймворку Playwright
482. ЧДТУ. 32251-01 90 01 Публікація по темі
кваліфікаційної роботи
магістра
83
ДОДАТОК Б
Затверджую
Зав. кафедри КНСА,
______________ Юрій ТРИУС
«____»____________2024 р.
УПРАВЛІННЯ ПРОЄКТОМ РОЗРОБКИ ПІДСИСТЕМИ
АВТОМАТИЗОВАНИХ ТЕСТІВ ВЕБ-ЗАСТОСУНКУ КЛІЄНТСЬКОЇ
ПІДТРИМКИ ДЛЯ ОФЛАЙН МАГАЗИНІВ
Текст програми підстистеми автоматизованих тестів мовою JavaScript та із
застосуванням фреймворку Playwright
482. ЧДТУ. 32251-01 12 01
Листів 21
Розробник ____________________ Сокоренко С.П.
Черкаси – 2024
84
Текст програми підстистеми автоматизованих тестів мовою JavaScript та із
застосуванням фреймворку Playwright:
import { test, expect, chromium, defineConfig, firefox } from
'@playwright/test';
// import { test, expect, chromium } from '@playwright/test';
// const { test, expect } = require('@playwright/test');
// import { defineConfig } from '@playwright/test';
const testUrl = ("https://application.com");
// const testUrl = ("http://localhost:4200/")
//==================== Test cases for Waiting room ====================
//=== Header ===
test('testCameraAccess', async ({page}) => {
await page.goto(testUrl);
await page.waitForTimeout(40000);
await page.locator('controls').getByRole('button').click();
await page.getByText('Would you like to end call for everyone in this
room?').isVisible();
await page.getByRole('button', { name: 'Leave' }).click();
});
test('testTitleCheckingInTheCode', async ({page}) => {
await page.goto(testUrl);
await expect(page).toHaveTitle(/.*Application/);
});
test('testFaviconCheckingInTheCode', async ({page}) => {
await page.goto(testUrl);
await page.locator('id="appIcon"');
await page.locator('id="appAppleIcon"');
await expect(page).toHaveURL('./assets/favicon/favicon-application.png');
await expect(page.locator('id="appIcon"')).toHaveAttribute('type',
'/.*image/x-icon/');
});
test('testLoginLogo', async ({page}) => {
await page.goto(testUrl);
await page.getByRole('main').getByRole('link');
await page.locator('class="login__logo"');
await page.locator('src="/assets/images/logo.png"');
});
test('testLogoAndLinkToMain', async ({page}) => {
await page.goto(testUrl);
const page1Promise = page.waitForEvent('popup');
await page.getByRole('main').getByRole('link').click();
85
const page1 = await page1Promise;
await page.getByRole('heading', { name: 'Customer support for you'
}).isVisible();
});
test('testLoginTextIntro1', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Video conferencing for you').isVisible();
});
test('testLoginTextIntro2', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Set up the camera and enter into the video chat. No
account required.').isVisible();
});
//InputRoomName
test('testInputRoomNameTitle', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Room name').isVisible();
await page.locator('text=Room name').isVisible();
await page.getByPlaceholder('Please enter room name').click();
await page.getByText('Room name').isVisible();
await page.locator('text=Room name').isVisible();
});
test('testInputRoomNamePlaceholder', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByPlaceholder('Please enter room name').isVisible();
await page.locator('text=Please enter room name').isVisible();
await page.getByPlaceholder('Please enter room name').click();
await page.getByText('Please enter room name').isVisible();
await page.locator('text=Please enter room name').isVisible();
});
test('testInputRoomNameValidationMessage', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Room name Required field. Only letters, digits,
dash and underscore.').isHidden();
await page.getByPlaceholder('Please enter room name').click();
await page.getByText('Room name Required field. Only letters, digits,
dash and underscore.').isVisible();
});
test('testInputRoomNameValidationOnlyEnLetters', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
86
await page.getByPlaceholder('Please enter room name').fill('Автотест Назва
Кімнати');
await page.getByText('Room name Required field. Only letters, digits,
dash and underscore.').isVisible();
await page.getByText('Required field.').locator('nth=1').isVisible();
});
test('testInputRoomNameValidationMessage3characters', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Room name should be at least 3
characters.').isHidden();
await page.getByPlaceholder('Please enter room name').click();
await page.getByText('Room name should be at least 3
characters.').isVisible();
});
test('testInputRoomNameValidationMessage50characters', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Room name should be not more 50
characters.').isHidden();
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room
name').fill('TestRoomName_1234567890_TestRoomName_1234567890_TestRoomName_123
4567890_');
await page.getByText('Room name should be not more 50
characters.').isVisible();
});
//InputUserName
test('testInputUserNameTitle', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').click();
await page.getByText('Your name').isVisible();
await page.locator('text=Your name').isVisible();
await page.getByPlaceholder('Please enter your name').click();
await page.getByText('Your name').isVisible();
await page.locator('text=Your name').isVisible();
});
test('testInputUserNamePlaceholder', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByPlaceholder('Please enter your name').isVisible();
await page.locator('text=Please enter your name').isVisible();
await page.getByPlaceholder('Please enter your name').click();
await page.getByText('Please enter room name').isVisible();
await page.locator('text=Please enter room name').isVisible();
87
});
test('testInputUserNameValidationMessage', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Required field.').isHidden();
await page.getByPlaceholder('Please enter your name').click();
await page.getByText('Required field.').isVisible();
});
test('testInputUserNameValidationMessage3characters', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').hover();
await page.getByText('Name should be at least 3 characters.').isHidden();
await page.getByPlaceholder('Please enter your name').click();
await page.getByText('Name should be at least 3
characters.').isVisible();
});
test('testInputUserNameValidationMessage50characters', async ({page}) => {
await page.goto(testUrl);
await page.locator('ng-component').click();
await page.getByText('Name should be not more 50
characters.').isHidden();
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your
name').fill('TestUserName_1234567890_TestUserName_1234567890_TestUserName_123
4567890_');
await page.getByText('Name should be not more 50
characters.').isVisible();
});
//Join room button
test('testJoinRoomButton', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="button button--create-room"');
await page.getByText('Join room ').isVisible();
});
//Facebook authorization
test('testFacebookLoginLogo', async ({page}) => {
await page.goto(testUrl);
await page.getByRole('main').getByRole('link');
await page.locator('class="social facebook"');
await page.locator('src="/assets/icons/social/facebook.png"');
});
test('testFacebookLoginLogoCheckBeforeLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
88
});
test('testFacebookLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
});
test('testFacebookLogin11', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
});
test('testFacebookLoginLogoCheckAfterLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
});
test('testFacebookLogOutLogo', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
});
test('testFacebookLogOut', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social facebook"').click();
});
test('testFacebookLoginUserMenuCheck', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="toggle-profile-dropdown"');
await page.locator('class="profile-dropdown ng-star-inserted"');
await page.locator('class="profile-details"');
await page.locator('class="profile-avatar"');
await page.locator('class="profile-avatar-input"');
await page.locator('class="profile-label"');
await page.getByText('Profile').isVisible();
await page.locator('class="profile-avatar-delete ng-star-
inserted"');
await page.getByText('Delete avatar').isVisible();
await page.locator('class="profile-name"');
await page.getByText('Serhii').isVisible();
await page.locator('class="profile-messages"');
await page.getByText('Messages').isVisible();
await page.locator('class="profile-settings"');
await page.getByText('Settings').isVisible();
await page.locator('class="profile-logout"');
await page.getByText('Log out').isVisible();
});
89
test('testFacebookLoginRoomCheck', async ({page}) => {
await page.goto(testUrl);
});
//Google authorization
test('testGoogleLoginLogo', async ({page}) => {
await page.goto(testUrl);
await page.getByRole('main').getByRole('link');
await page.locator('class="social google"');
await page.locator('src="/assets/icons/social/google.png"');
});
test('testGoogleLoginLogoCheckBeforeLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLogin11', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLoginLogoCheckAfterLogin', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLogOutLogo', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLogOut', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testGoogleLoginUserMenuCheck', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="toggle-profile-dropdown"');
await page.locator('class="profile-dropdown ng-star-inserted"');
await page.locator('class="profile-details"');
await page.locator('class="profile-avatar"');
90
await page.locator('class="profile-avatar-input"');
await page.locator('class="profile-label"');
await page.getByText('Profile').isVisible();
await page.locator('class="profile-avatar-delete ng-star-
inserted"');
await page.getByText('Delete avatar').isVisible();
await page.locator('class="profile-name"');
await page.getByText('Serhii').isVisible();
await page.locator('class="profile-messages"');
await page.getByText('Messages').isVisible();
await page.locator('class="profile-settings"');
await page.getByText('Settings').isVisible();
await page.locator('class="profile-logout"');
await page.getByText('Log out').isVisible();
});
test('testGoogleLoginRoomCheck', async ({page}) => {
await page.goto(testUrl);
await page.locator('class="social google"').click();
});
test('testUserAvatarAdd', async ({page}) => {
await page.goto(testUrl);
// enter to the room
// check avatar
});
test('testUserAvatarDelete', async ({page}) => {
await page.goto(testUrl);
// enter to the room
// check avatar
// delete avatar
});
//Mute button
test('testMuteUnmuteButton', async ({page}) => {
await page.goto(testUrl);
await page.locator('app-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).isVisible();
await page.locator('app-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).click();
await page.locator('app-toggle-icon').filter({ hasText: 'Unmute'
}).locator('div').nth(1).isVisible();
await page.locator('app-toggle-icon').filter({ hasText: 'Unmute'
}).locator('div').nth(1).click();
//check hint and title
});
91
test('testMuteHint', async ({page}) => {
await page.goto(testUrl);
await page.locator('app-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).isVisible();
});
test('testMuteTitle', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Mute').isVisible();
await page.getByText('Mute').click();
});
test('testUnmuteHint', async ({page}) => {
await page.goto(testUrl);
await page.locator('app-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).click();
await page.locator('app-toggle-icon').filter({ hasText: 'Unmute'
}).locator('div').nth(1).isVisible();
});
test('testUnmuteTitle', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Unmute');
});
//Cam button
test('testStartStopCamButton', async ({page}) => {
await page.goto(testUrl);
await page.locator('div').filter({ hasText: 'Stop Cam' }).nth(2).click();
await page.locator('div').filter({ hasText: 'Start Cam' }).nth(2).click();
});
test('testStopCamHint', async ({page}) => {
await page.goto(testUrl);
await page.locator('app-toggle-icon').filter({ hasText: 'Stop Cam'
}).locator('div').nth(1).isVisible();
});
test('testCamTitle', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Stop Cam').isVisible();
await page.getByText('Stop Cam').click();
});
test('testStartCamHint', async ({page}) => {
await page.goto(testUrl);
await page.locator('app-toggle-icon').filter({ hasText: 'Stop Cam'
}).locator('div').nth(1).click();
await page.locator('app-toggle-icon').filter({ hasText: 'Start Cam'
}).locator('div').nth(1).isVisible();
92
});
//Settings button
test('testWaitingRoomSettingsButton', async ({page}) => {
await page.goto(testUrl);
await page.waitForTimeout(3000);
const locator = page.locator('div');
await expect(locator).toHaveAttribute('automationID', 'settingsOptions');
await page.locator('div').filter({ hasText: 'Settings' }).nth(3).click();
await page.locator('automationid="settingsOptions"').click();
await page.locator('#cdk-overlay-0').getByText('Settings').isVisible();
await page.locator('class="settings ng-untouched ng-pristine ng-invalid
ng-star-inserted"').isVisible();
await page.locator('class="settings-header"').isVisible();
await page.locator('#cdk-overlay-0 svg').first().click();
});
//Outro
test('testOutroText', async ({page}) => {
await page.goto(testUrl);
await page.getByText('Application based platform and can be easily
integrated into your business.').isVisible();
console.log(page.getByText('Application based platform and can be easily
integrated into your business.'));
});
// === Footer test-suite ===
test('testFooterText', async ({page}) => {
await page.goto(testUrl);
await page.getByRole('contentinfo');
await page.getByText('Support and development').isVisible();
});
test('testFooterCheckingAndLinkToDev', async ({page}) => {
await page.goto(testUrl);
const page3Promise = page.waitForEvent('popup');
await page.getByRole('contentinfo').getByRole('link').click();
const page3 = await page3Promise;
await page.getByRole('heading', { name: 'Custom video streaming and WebRTC
development' }).isVisible();
});
// === Entering to the room meeitng test-suite ===
test('testEnteringToTheRoomWithValidCredsMoreThan4SymbolsLessThan50', async
({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
93
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByRole('button', { name: 'Join room' }).isVisible();
await page.getByPlaceholder('Please enter your name').press('Enter');
});
test('testEnteringToTheRoomWithEmptyCreds', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('');
await page.getByPlaceholder('Please enter room name').click();
await page.getByText('Room name Required field. Only letters, digits, dash
and underscore.').isVisible();
await page.getByText('Required field.').locator('nth=1').isVisible();
});
test('testEnteringToTheRoomWithValidRoomnameAndEmptyName', async ({page}) =>
{
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
await page.getByText('Required field.').isVisible();
});
test('testEnteringToTheRoomWithEmptyRoomnameAndValidName', async ({page}) =>
{
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
await page.getByText('Room name Required field. Only letters, digits, dash
and underscore.').isVisible();
});
94
test('testEnteringToTheRoomRoomnameLess3SymbolsNameValid', async ({page}) =>
{
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Te');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
await page.getByText('Room name should be at least 3
characters.').isVisible();
});
test('testEnteringToTheRoomRoomnameMoreThan50SymbolsNameValid', async
({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room
name').fill('TestUserName_1234567890_TestUserName_1234567890_TestUserName_123
4567890_');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
// await page.getByText('Room name should be at least 3
characters.').isVisible();
});
test('testEnteringToTheRoomRoomnameValidNameLessThan4Symbols', async ({page})
=> {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Te');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
await page.getByText('Required field.').isVisible();
});
test('testEnteringToTheRoomRoomnameValidNameMoreThan50Symbols', async
({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
95
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your
name').fill('TestRoomName_1234567890_TestRoomName_1234567890_TestRoomName_123
4567890_');
await page.getByPlaceholder('Please enter room name').click();
// await page.expect('button', { name: 'Join room' }).toBeEnabled();
// await page.getByRole('button', { name: 'Join room' }).click();
await page.getByText('Required field.').isVisible();
});
test('testMeetingRoomLogo', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('class="logo-container"');
await page.locator('application-header img').isVisible();
// await page.locator('application-
controls').getByRole('button').click();
});
test('testMeetingRoomName', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('class="logo-container"');
await page.getByText('Autotest-Room_Name').click();
await expect(page.getByText('Autotest-
Room_Name')).toHaveText('Autotest-Room_Name');
// await page.locator('application-
controls').getByRole('button').click();
await page.locator('xpath=/html/body/application-root/application-
room/div[1]/application-header/div[1]/span[1]').isVisible();
const element = await page.locator('xpath=/html/body/application-
root/application-room/div[1]/application-header/div[1]/span[1]');
const elementValue = await element.textContent();
// console.log(elementValue);
expect('Autotest-Room_Name').toEqual(elementValue);
96
});
//========= Number of participants test-suite ============
test('testPictogrammNumberOfCallParticipats', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('logo-container');
await page.locator('class="users__icon"');
// await page.locator('application-
controls').getByRole('button').click();
});
test('testLiveTimeCounter', async ({page}) => { //Under construction
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
// await page.locator('class="live"').isVisible();
// const locator = page.locator('class="live"');
// await expect(locator).toBeVisible();
await page.locator('class="live"');
});
//========= Meeting room layouts test-suite============
test('testViewLayoutsDisplaying', async ({page}) => { //Under construction
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
97
await page.locator('div').filter({ hasText: 'Autotest User Name'
}).nth(1).isVisible();
});
//========= Speakers area test-suite============
// testSpeakersArea
test('testSpeakersAreaConnectionIndicator', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.getByTitle('Connection info').locator('application-control-
button').isVisible();
await page.getByTitle('Connection info').locator('use').isVisible();
await page.getByTitle('Connection info').locator('use').isVisible();
await page.locator('tech-info ng-star-inserted').isVisible();
await page.getByText('Resolution: ').isVisible();
await page.getByText('Frame rate: ').isVisible();
await page.getByText('Video codec: ').isVisible();
await page.getByText('Bitrate (Kbps): ').isVisible();
});
test('testSpeakersAreaEnterFullscreen', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.getByTitle('Enter fullscreen').locator('div').click();
await page.locator('main ng-star-inserted');
await page.keyboard.press('Escape');
});
test('testSpeakersAreaNameWrapper', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
98
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('container h100 is-own');
await page.getByText('name-wrapper').isVisible();
await page.getByText('country').isVisible();
await page.getByText('mat-tooltip-trigger flag-icon flag-icon-ua
ng-star-inserted').isVisible();
await page.getByText(' Autotest User Name ').isVisible();
await page.getByText('weather ng-star-inserted').isVisible();
await page.getByText('time').isVisible();
});
//========= testMicButton Test Suite============
test('testMicButtonOnOff', async ({page}) => {
await page.goto(testUrl);
await page.locator('application-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).isVisible();
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Mic'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Mic' }).nth(2).hover();
await page.getByRole('tooltip', { name: 'Disable
microphone'}).isVisible()
await page.locator('application-
controls').getByRole('button').click();
// await page.locator('application-
controls').getByRole('button').click();
// await page.getByText('Would you like to end call for
everyone in this room?').isVisible();
// await page.getByRole('button', { name: 'Leave' }).click();
});
test('testMicButtonOffOn', async ({page}) => {
await page.goto(testUrl);
await page.locator('application-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).isVisible();
await page.locator('application-toggle-icon').filter({ hasText: 'Mute'
}).locator('div').nth(1).click();
await page.locator('application-toggle-icon').filter({ hasText: 'Unmute'
}).locator('div').nth(1).isVisible();
99
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest
User Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Mic'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Mic' }).nth(2).hover();
await page.getByRole('tooltip', { name: 'Enable
microphone'}).isVisible()
// await page.locator('application-
controls').getByRole('button').click();
// await page.getByText('Would you like to end call for
everyone in this room?').isVisible();
// await page.getByRole('button', { name: 'Leave' }).click();
});
//========= testCamButton Test Suite============
test('testCamButtonOnOff', async ({page}) => {
await page.goto(testUrl);
await page.locator('application-toggle-icon').filter({ hasText: 'Stop
Cam' }).locator('div').nth(1).isVisible();
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest
User Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Cam'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Cam' }).nth(2).hover();
await page.getByRole('tooltip', { name: 'Disable
camera'}).isVisible()
// await page.locator('application-
controls').getByRole('button').click();
// await page.getByText('Would you like to end call for
everyone in this room?').isVisible();
// await page.getByRole('button', { name: 'Leave' }).click();
});
test('testCamButtonOffOn', async ({page}) => {
await page.goto(testUrl);
await page.locator('application-toggle-icon').filter({ hasText: 'Stop
Cam' }).locator('div').nth(1).isVisible();
100
await page.locator('application-toggle-icon').filter({ hasText: 'Stop
Cam' }).locator('div').nth(1).click();
await page.locator('application-toggle-icon').filter({ hasText: 'Start
Cam' }).locator('div').nth(1).isVisible();
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest
User Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Cam'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Cam'
}).nth(2).hover();
await page.getByRole('tooltip', { name: 'Enable
camera'}).isVisible()
// await page.locator('application-
controls').getByRole('button').click();
// await page.getByText('Would you like to end call for
everyone in this room?').isVisible();
// await page.getByRole('button', { name: 'Leave' }).click();
});
//=========testRecButton test suite============
test('testRecButton', async ({page}) => { //Under construction
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest
User Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Rec'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Rec' }).nth(2).hover();
await page.getByRole('tooltip', { name: 'Start
recording'}).isVisible()
await page.locator('aria-label="Start recording"');
await page.getByText('Rec', { exact: true }).click();
});
test('testShareButton', async ({page}) => { //Under construction
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
101
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('div').filter({ hasText: 'Rec'
}).nth(2).isVisible();
await page.locator('div').filter({ hasText: 'Rec' }).nth(2).hover();
await page.getByRole('tooltip', { name: 'Start screen
sharing'}).isVisible()
await page.locator('aria-label="Start screen sharing"');
await page.getByText('Share', { exact: true }).click();
});
test('testInviteButton', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('aria-label="Invite participants"');
await page.getByText('Invite', { exact: true });
await page.locator('class="control-button-outer control-button-outer--
invite-participant invite-control ng-star-inserted"').isVisible();
await page.locator('application-toggle-icon').filter({ hasText:
'Invite' }).locator('div').nth(1).click();
await page.locator('class="invite-participant ng-star-
inserted"').isVisible();
await page.locator('class="invite-participant__copy"').isVisible();
await page.locator('aria-label="Copy room url"');
await
page.locator('src="/assets/application/icons/sprite.svg#copy');
});
test('testFeedBackButton', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
const page4Promise = page.waitForEvent('popup');
await page.getByRole('link', { name: 'Send feedback' }).click();
const page4 = await page4Promise;
102
await page4.getByRole('heading', { name: 'customer service management'
}).click();
await page4.getByRole('banner').getByRole('link', { name: 'Help Center'
}).click();
});
test('testMainRoomSettingsButton', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('application-toggle-icon').filter({ hasText:
'Settings' }).locator('div').nth(1).click();
await page.locator('#cdk-overlay-13').getByText('Settings');
await page.getByText('Camera', { exact: true });
await page.getByText('Audio', { exact: true });
await page.getByText('Choose background effects');
});
test('testChatButton', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('application-
controls').getByText('Chat').isVisible();
await page.locator('div').filter({ hasText: 'Chat'
}).nth(3).isVisible();
await page.locator('application-controls').getByText('Chat').click();
await page.locator('application-chat').getByText('Chat
Participants').isVisible();
await page.locator('application-chat').locator('class="opened"');
await page.getByRole('banner').getByRole('button').isVisible();
await page.waitForTimeout(2000);
await page.locator('application-controls').getByText('Chat').click();
await page.getByRole('banner').getByRole('button').click();
await page.locator('application-controls').getByText('Chat').click();
await page.getByRole('banner').getByText('Chat').isVisible();
await page.locator('class="chat"');
103
await page.locator('class="chat__header"');
await page.locator('class="chat__tabs"');
await page.locator('class="chat__title chat__title--chat
chat__title--active"');
await page.locator('class="chat__title chat__title--users');
await page.locator('class="chat__body chat__body--visible"');
await page.locator('class="chat__footer ng-star-inserted"');
await page.getByPlaceholder('Type something').click();
await page.getByPlaceholder('Type something').click();
await page.getByPlaceholder('Type something').fill('Something
another one');
await
page.getByRole('contentinfo').getByRole('button').click();
await page.locator('application-controls').getByText('Chat').click();
await page.locator('application-controls').getByText('Chat').click();
await page.getByRole('banner').getByRole('button').click();
await page.locator('application-controls').getByText('Chat').click();
await page.getByRole('banner').getByRole('button').click();
});
test('testChatMessageSending', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.locator('application-controls').getByText('Chat').click();
await page.getByPlaceholder('Type something').click();
await page.getByPlaceholder('Type something').click();
await page.getByPlaceholder('Type something').fill('Something
another one');
await
page.getByRole('contentinfo').getByRole('button').click();
await page.locator('application-controls').getByText('Chat').click();
await page.locator('application-controls').getByText('Chat').click();
});
test('testParticipantsButton', async ({page}) => {
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.getByText(' Participants ', { exact: true }).isVisible();
104
await page.locator('application-
controls').getByText('Participants').isVisible();
await page.locator('div').filter({ hasText: 'Participants'
}).nth(3).isVisible();
await page.locator('application-
controls').getByText('Participants').click();
await page.getByRole('banner').getByText('Participants').isVisible();
await page.locator('class="participants"');
await page.locator('class="participants__header"');
await page.locator('class="participants__tabs"');
await page.locator('class="participants__title
participants__title--participants"')
await page.locator('class="participants__icon"');
await page.locator('class="participants__body"');
await page.getByRole('banner').getByRole('button').click();
await page.locator('application-
controls').getByText('Participants').click();
});
//========= Meeting room layouts test-suite ============
// test1ParticipantInTheRoom
test('test1ParticipantInTheRoom', async ({page}) => {
const numberOfCallParticipantsExpected1 = 1;
const numberOfCallParticipantsExpected1String = '1';
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name');
await page.getByPlaceholder('Please enter your name').press('Enter');
await page.waitForTimeout(5000);
expect(numberOfCallParticipantsExpected1).toEqual(await
page.evaluate('APP.conference.membersCount'));
await page.locator('xpath=/html/body/application-root/application-
room/div[1]/application-header/div[1]/span[2]/span').isVisible();
const element = await page.locator('xpath=/html/body/application-
root/application-room/div[1]/application-header/div[1]/span[2]/span');
const elementValue = await element.textContent();
expect(numberOfCallParticipantsExpected1String).toEqual(elementValue);
});
// test2ParticipantsInTheRoom
test('test2ParticipantsInTheRoom', async ({page}) => {
const numberOfCallParticipantsExpected2 = 2;
const numberOfCallParticipantsExpected2String = '2';
105
await page.goto(testUrl);
await page.getByPlaceholder('Please enter room name').click();
await page.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page.getByPlaceholder('Please enter your name').click();
await page.getByPlaceholder('Please enter your name').fill('Autotest User
Name 1');
await page.getByPlaceholder('Please enter your name').press('Enter');
const browser1 = await chromium.launch();
const context1 = await browser1.newContext();
const page1 = await context1.newPage();
await page1.goto(testUrl);
await page1.getByPlaceholder('Please enter room name').click();
await page1.getByPlaceholder('Please enter room name').fill('Autotest-
Room_Name');
await page1.getByPlaceholder('Please enter your name').click();
await page1.getByPlaceholder('Please enter your name').fill('Autotest
User Name 2');
await page1.getByPlaceholder('Please enter your name').press('Enter');
await page1.locator('logo-container');
await page1.locator('class="users__icon"');
await page1.locator('application-header').getByText('2', { exact:
true }).isVisible();
await page1.locator('app-video').getByText('Autotest User Name
1').isVisible();
await page1.locator('app-video').getByText('Autotest User Name
2').isVisible();
await page1.locator('application-
controls').getByText('Participants').click();
await page1.locator('app-participant').getByText('Autotest User
Name 1').click();
await page1.locator('app-participant').getByText('Autotest User
Name 2').click();
await page.waitForTimeout(5000);
expect(numberOfCallParticipantsExpected2).toEqual(await
page.evaluate('APP.conference.membersCount'));
await page.locator('xpath=/html/body/application-root/application-
room/div[1]/application-header/div[1]/span[2]/span').isVisible();
const element = await page.locator('xpath=/html/body/application-
root/application-room/div[1]/application-header/div[1]/span[2]/span');
const elementValue = await element.textContent();
expect(numberOfCallParticipantsExpected2String).toEqual(elementValue);
await context1.close();
});
106
ДОДАТОК В
Затверджую
Зав. кафедри КНСА,
______________ Юрій ТРИУС
«____»____________2024 р.
УПРАВЛІННЯ ПРОЄКТОМ РОЗРОБКИ ПІДСИСТЕМИ
АВТОМАТИЗОВАНИХ ТЕСТІВ ВЕБ-ЗАСТОСУНКУ КЛІЄНТСЬКОЇ
ПІДТРИМКИ ДЛЯ ОФЛАЙН МАГАЗИНІВ
Публікація по темі кваліфікаційної роботи магістра
482. ЧДТУ. 32251-01 90 01
Листів 3
Розробник ____________________ Сокоренко С.П.
Черкаси – 2024
107
108
Додаток В. Публікація по темі кваліфікаційної роботи магістра
УПРАВЛІННЯ ПРОЄКТОМ РОЗРОБКИ ПІДСИСТЕМИ
АВТОМАТИЗОВАНИХ ТЕСТІВ ВЕБ-ЗАСТОСУНКУ КЛІЄНТСЬКОЇ
ПІДТРИМКИ ДЛЯ ОФЛАЙН МАГАЗИНІВ
Сокоренко С. П. (студент ФІТІС), Триус Ю. В., д.пед.н., к.ф.-м.н., проф.
Черкаський державний технологічний університет
Інформаційні технології в Україні відіграють визначальну роль у сфері
продажів. Електронна комерція та онлайн-платформи дозволяють компаніям
розширювати свої ринки збуту, ефективно управляти запасами та впроваджувати
персоналізований маркетинг. Використання аналітики допомагає усувати ризики та
прогнозувати попит. У розробці мобільних додатків та інтерактивних інтерфейсів
для офлайн магазинів важливими є зусилля, спрямовані на забезпечення найкращого
клієнтського досвіду. Технології сприяють підвищенню ефективності, відкриваючи
нові можливості для інновацій та взаємодії з клієнтами.
Програмне забезпечення для клієнтської підтримки відіграє важливу роль у
функціонуванні сучасного бізнесу та бізнес-процесів; у забезпеченні ефективного та
своєчасного обслуговування клієнтів.
Також інформаційні технології в Україні ефективно змінюють взаємодію з
клієнтами в сфері продажів. Електронна комерція та онлайн-системи забезпечують
зручність та доступність для покупок. Аналітика допомагає впроваджувати
персоналізовані стратегії та пропонувати товари за індивідуальними потребами. Чат-
боти та онлайн-підтримка забезпечують миттєвий зв'язок із споживачами.
Інтерактивні технології, такі, наприклад, як віртуальні тури тощо підвищують
залученість клієнтів до процесу, роблять покупки більш зручними та приємними.
У даній кваліфікаційній роботі буде проведено грунтовне дослідження ринку
телекомунікаційних програмних засобів клієнтської підтримки, що існують на
ринку. Розглянуто всі основні типи згруповані за напрямками використання, їх
основні особливості та переваги. Також стисло проаналізовано особливості
конкретних програмних засобів по кожній з груп.
109
У результаті виконання практичної частини основного проєкту з розробки веб-
застосунку клієнтської підтримки для офлайн магазинів буде виконано розробку
підсистеми автоматизованих тестів веб-застосунку клієнтської підтримки для
офлайн магазинів. Для цього було використано мову програмування JavaScript та
фреймворк Playwright.
Враховуючи можливі переваги та недоліки даної системи, можна сказати, що
запровадження даного типу системи принесе значну користь для кінцевого
споживача продукту, а саме для клієнта та буде ефективним інструментом компаній
зі сфери продажів для успішної роботи та отримання прибутку. Загалом, розробка
веб-застосунку клієнтської підтримки для офлайн магазинів може сприяти
покращенню комунікації з клієнтами, забезпечити конкурентні переваги та зробити
обслуговування більш ефективним у сучасних умовах бізнесу.