0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Представьте мобильное приложение для туризма. В нем пользователь может изучать карту местности и:</p>
1
<p>Представьте мобильное приложение для туризма. В нем пользователь может изучать карту местности и:</p>
2
<ul><li>Создавать записи о местах, которые хочет посетить</li>
2
<ul><li>Создавать записи о местах, которые хочет посетить</li>
3
<li>Просматривать информацию о городах и достопримечательностях</li>
3
<li>Просматривать информацию о городах и достопримечательностях</li>
4
<li>Исправлять информацию о достопримечательностях</li>
4
<li>Исправлять информацию о достопримечательностях</li>
5
<li>Удалять записи о местах, которые больше не хочется посетить</li>
5
<li>Удалять записи о местах, которые больше не хочется посетить</li>
6
</ul><p>Другой пример - вы администратор художественной онлайн-галереи. Вам необходимо:</p>
6
</ul><p>Другой пример - вы администратор художественной онлайн-галереи. Вам необходимо:</p>
7
<ul><li>Создавать записи о новых художниках и их работах</li>
7
<ul><li>Создавать записи о новых художниках и их работах</li>
8
<li>Просматривать информацию об экспонатах</li>
8
<li>Просматривать информацию об экспонатах</li>
9
<li>Редактировать информацию о художниках и экспонатах</li>
9
<li>Редактировать информацию о художниках и экспонатах</li>
10
<li>Удалять записи о работах, которые убрали из галереи</li>
10
<li>Удалять записи о работах, которые убрали из галереи</li>
11
</ul><p>В этих сценариях прослеживаются базовые действия: создание, чтение, обновление и удаление. Они известны как<strong>CRUD</strong>(<strong>C</strong><em>reate<strong>R</strong></em>ead<strong>U</strong>*pdate<strong>D</strong>elete).</p>
11
</ul><p>В этих сценариях прослеживаются базовые действия: создание, чтение, обновление и удаление. Они известны как<strong>CRUD</strong>(<strong>C</strong><em>reate<strong>R</strong></em>ead<strong>U</strong>*pdate<strong>D</strong>elete).</p>
12
<p>В этом уроке мы изучим каждую из операций CRUD. Вы разберетесь в особенностях создания, чтения, обновления и удаления. Также вы узнаете, как тестировать CRUD на примере сервиса Яндекс.Карты.</p>
12
<p>В этом уроке мы изучим каждую из операций CRUD. Вы разберетесь в особенностях создания, чтения, обновления и удаления. Также вы узнаете, как тестировать CRUD на примере сервиса Яндекс.Карты.</p>
13
<h2>Особенности CRUD</h2>
13
<h2>Особенности CRUD</h2>
14
<p>Сначала разберем каждую операцию CRUD в отдельности. Все операции связаны друг с другом. Например, мы не можем получить доступ к удаленному товару или удалить товар, который еще не создан. Эти вещи кажутся очевидными, но всегда есть вероятность допустить ошибку, что может привести к неожиданным результатам.</p>
14
<p>Сначала разберем каждую операцию CRUD в отдельности. Все операции связаны друг с другом. Например, мы не можем получить доступ к удаленному товару или удалить товар, который еще не создан. Эти вещи кажутся очевидными, но всегда есть вероятность допустить ошибку, что может привести к неожиданным результатам.</p>
15
<h3>Create</h3>
15
<h3>Create</h3>
16
<p>Создание новых данных - ключевая функция всего CRUD. Остальные операции не имеют смысла без создания новой записи в базе данных.</p>
16
<p>Создание новых данных - ключевая функция всего CRUD. Остальные операции не имеют смысла без создания новой записи в базе данных.</p>
17
<p>При создании новой записи важно валидировать данные, как и в любой форме. Подробнее про валидацию вы узнали из урока "Формы".</p>
17
<p>При создании новой записи важно валидировать данные, как и в любой форме. Подробнее про валидацию вы узнали из урока "Формы".</p>
18
<p>Валидация помогает не допустить ошибочные данные в базу и таким образом предотвратить возможные ошибки при чтении. Правильная валидация данных так же обеспечивает защиту от вредоносных значений, которые могут быть добавлены в базу данных.</p>
18
<p>Валидация помогает не допустить ошибочные данные в базу и таким образом предотвратить возможные ошибки при чтении. Правильная валидация данных так же обеспечивает защиту от вредоносных значений, которые могут быть добавлены в базу данных.</p>
19
<h3>Read</h3>
19
<h3>Read</h3>
20
<p>Чтение данных - операция, которая доступна всем пользователям. Зачастую, чтение - единственная операция, которая доступна пользователю без прав администратора. Например, вы и другие студенты Хекслета можете читать этот урок, но отредактировать урок или создать новый не получится.</p>
20
<p>Чтение данных - операция, которая доступна всем пользователям. Зачастую, чтение - единственная операция, которая доступна пользователю без прав администратора. Например, вы и другие студенты Хекслета можете читать этот урок, но отредактировать урок или создать новый не получится.</p>
21
<p>В операции чтения важно контролировать доступ к информации. Пользователь не должен видеть информацию, к которой у него нет доступа. Например, как владелец банковского счета вы можете увидеть только свой баланс, доступа к чужим счетам у вас нет.</p>
21
<p>В операции чтения важно контролировать доступ к информации. Пользователь не должен видеть информацию, к которой у него нет доступа. Например, как владелец банковского счета вы можете увидеть только свой баланс, доступа к чужим счетам у вас нет.</p>
22
<h3>Update</h3>
22
<h3>Update</h3>
23
<p>Операция обновления похожа на создание - с ее помощью мы вносим изменения в базу данных. В случае с обновлением важно корректно сохранять ранее внесенные данные. Например, если вы меняете свой логин на сайте, то при этом не должна затрагиваться информация о пароле и электронной почте.</p>
23
<p>Операция обновления похожа на создание - с ее помощью мы вносим изменения в базу данных. В случае с обновлением важно корректно сохранять ранее внесенные данные. Например, если вы меняете свой логин на сайте, то при этом не должна затрагиваться информация о пароле и электронной почте.</p>
24
<h3>Delete</h3>
24
<h3>Delete</h3>
25
<p>Удаление - последняя операция для CRUD. Она удаляет записи из базы данных, будь то информация о картине или метка на карте.</p>
25
<p>Удаление - последняя операция для CRUD. Она удаляет записи из базы данных, будь то информация о картине или метка на карте.</p>
26
<p>Обычно удаление выполняется после проверки прав доступа к данным. Например, если пользователь не имеет право удалять записи, запрос не сработает. Если право есть, система начинает удалять данные.</p>
26
<p>Обычно удаление выполняется после проверки прав доступа к данным. Например, если пользователь не имеет право удалять записи, запрос не сработает. Если право есть, система начинает удалять данные.</p>
27
<p>С точки зрения реализации удаление делится на два типа:</p>
27
<p>С точки зрения реализации удаление делится на два типа:</p>
28
<ul><li>Физическое - запись стирается из базы данных без возможности восстановления</li>
28
<ul><li>Физическое - запись стирается из базы данных без возможности восстановления</li>
29
<li>Логическое - к записи закрывается доступ на чтение, то есть она скрывается. Доступ всегда можно восстановить при необходимости. Логическое удаление больше похоже на обновление, потому что физически запись в базе данных остается</li>
29
<li>Логическое - к записи закрывается доступ на чтение, то есть она скрывается. Доступ всегда можно восстановить при необходимости. Логическое удаление больше похоже на обновление, потому что физически запись в базе данных остается</li>
30
</ul><h2>Как тестировать CRUD</h2>
30
</ul><h2>Как тестировать CRUD</h2>
31
<p>Попробуем протестировать CRUD-операции вручную. Для этого воспользуемся сервисом Яндекс.Карты, который позволяет создавать списки меток и добавлять интересные точки на карте. Этим сервисом часто пользуются путешественники, чтобы добавить все интересующие их места на карте:</p>
31
<p>Попробуем протестировать CRUD-операции вручную. Для этого воспользуемся сервисом Яндекс.Карты, который позволяет создавать списки меток и добавлять интересные точки на карте. Этим сервисом часто пользуются путешественники, чтобы добавить все интересующие их места на карте:</p>
32
<p>Представим, что нам нужно протестировать эту функциональность и проверить корректность создания списка, его обновления, чтения и удаления.</p>
32
<p>Представим, что нам нужно протестировать эту функциональность и проверить корректность создания списка, его обновления, чтения и удаления.</p>
33
<p>Тестировать будем по такому сценарию:</p>
33
<p>Тестировать будем по такому сценарию:</p>
34
<ol><li>Создать список</li>
34
<ol><li>Создать список</li>
35
<li>Добавить две точки на карте</li>
35
<li>Добавить две точки на карте</li>
36
<li>Проверить их отображение в списке</li>
36
<li>Проверить их отображение в списке</li>
37
<li>Удалить список</li>
37
<li>Удалить список</li>
38
</ol><h3>Cоздание списка</h3>
38
</ol><h3>Cоздание списка</h3>
39
<p>Создадим новый список и назовем его "Отпуск":</p>
39
<p>Создадим новый список и назовем его "Отпуск":</p>
40
<p>Здесь мы видим операцию создания - в нашей учетной записи появляется новый список. Этот список доступен только для нашей учетной записи.</p>
40
<p>Здесь мы видим операцию создания - в нашей учетной записи появляется новый список. Этот список доступен только для нашей учетной записи.</p>
41
<p>Он позволяет проводить остальные операции по CRUD:</p>
41
<p>Он позволяет проводить остальные операции по CRUD:</p>
42
<ul><li>Чтение списка</li>
42
<ul><li>Чтение списка</li>
43
<li>Обновление записей в списке - добавление или удаление точек на карте</li>
43
<li>Обновление записей в списке - добавление или удаление точек на карте</li>
44
<li>Удаление списка</li>
44
<li>Удаление списка</li>
45
</ul><h3>Добавление точек в список</h3>
45
</ul><h3>Добавление точек в список</h3>
46
<p>Теперь попробуем обновить список. Добавим две точки на карте:</p>
46
<p>Теперь попробуем обновить список. Добавим две точки на карте:</p>
47
<p>На этом шаге мы обновили список. Обратите внимание, что обновляется только список. Сами точки на карте - это лишь часть списка, они не изменяются. Филиал Третьяковской галереи и информация о нем никак не изменится от того, что мы добавили точку в наш список.</p>
47
<p>На этом шаге мы обновили список. Обратите внимание, что обновляется только список. Сами точки на карте - это лишь часть списка, они не изменяются. Филиал Третьяковской галереи и информация о нем никак не изменится от того, что мы добавили точку в наш список.</p>
48
<h3>Проверка точек в списке</h3>
48
<h3>Проверка точек в списке</h3>
49
<p>Проверим, что точки добавились корректно. Для этого перейдем в список "Отпуск":</p>
49
<p>Проверим, что точки добавились корректно. Для этого перейдем в список "Отпуск":</p>
50
<p>Здесь мы производим операцию чтения. Во время тестирования мы проверяем, точно ли все данные выведены на экране. Пользователь должен увидеть:</p>
50
<p>Здесь мы производим операцию чтения. Во время тестирования мы проверяем, точно ли все данные выведены на экране. Пользователь должен увидеть:</p>
51
<ul><li>Изображения точек</li>
51
<ul><li>Изображения точек</li>
52
<li>Количество точек</li>
52
<li>Количество точек</li>
53
<li>Каждая точка в отдельности</li>
53
<li>Каждая точка в отдельности</li>
54
</ul><p>Важно проверить, что чтение списка доступно только создателю или тем, кому открыт доступ на чтение списка.</p>
54
</ul><p>Важно проверить, что чтение списка доступно только создателю или тем, кому открыт доступ на чтение списка.</p>
55
<h3>Удаление категории</h3>
55
<h3>Удаление категории</h3>
56
<p>После проверки списка на чтения осталось его удалить:</p>
56
<p>После проверки списка на чтения осталось его удалить:</p>
57
<p>Удаление списка стирает не только список, но и все точки на карте, связанные с этим списком. Важно, чтобы точки на карте не были привязаны к несуществующему списку.</p>
57
<p>Удаление списка стирает не только список, но и все точки на карте, связанные с этим списком. Важно, чтобы точки на карте не были привязаны к несуществующему списку.</p>
58
<p>Еще одна особенность - подтверждение удаления. Это сделано, чтобы случайно не удалить категорию:</p>
58
<p>Еще одна особенность - подтверждение удаления. Это сделано, чтобы случайно не удалить категорию:</p>
59
<p>Такой подход часто критикуется, хотя этот вопрос лежит уже в области дизайна и взаимодействия с пользователем. Если кнопка подтверждения есть, то стоит проверить, что список не удаляется до подтверждения.</p>
59
<p>Такой подход часто критикуется, хотя этот вопрос лежит уже в области дизайна и взаимодействия с пользователем. Если кнопка подтверждения есть, то стоит проверить, что список не удаляется до подтверждения.</p>
60
<h2>Выводы</h2>
60
<h2>Выводы</h2>
61
<p>В этом уроке мы разобрали механизм, который называется CRUD. Он состоит из четырех базовых операций, которые происходят в базе данных:</p>
61
<p>В этом уроке мы разобрали механизм, который называется CRUD. Он состоит из четырех базовых операций, которые происходят в базе данных:</p>
62
<ul><li>Create - создание</li>
62
<ul><li>Create - создание</li>
63
<li>Read - чтение</li>
63
<li>Read - чтение</li>
64
<li>Update - обновление</li>
64
<li>Update - обновление</li>
65
<li>Delete - удаление</li>
65
<li>Delete - удаление</li>
66
</ul><p>Каждая из этих операций обладает своими особенностями и зачастую связана с проверкой прав доступа к той или иной операции. Например, студенты Хекслета могут только читать урок, тогда как сотрудники - обновлять уроки и удалять их.</p>
66
</ul><p>Каждая из этих операций обладает своими особенностями и зачастую связана с проверкой прав доступа к той или иной операции. Например, студенты Хекслета могут только читать урок, тогда как сотрудники - обновлять уроки и удалять их.</p>
67
<p>Во время ручного тестирования CRUD мы воссоздаем сценарий использования сайта и проверки всех операций. Этот сценарий называют<strong>"путь пользователя"</strong>.</p>
67
<p>Во время ручного тестирования CRUD мы воссоздаем сценарий использования сайта и проверки всех операций. Этот сценарий называют<strong>"путь пользователя"</strong>.</p>