View on GitHub

ITMO-PE

My study notes about Program Engineering at University ITMO

MainPage/Rubiesh/Rubiesh

Rubiesh

Вопрос 1 (20 мин)

С помощью ИС «Колобок» принимается заказы на распространение хлебобулочных изделий
通过ИС«Колобок»系统接受面包制品的分发订单

Решение

Пользовательские сценарии 用户场景

  1. Пользователь хочет заказать товар одного вида для определенного ребенка
    用户希望为某个特定孩子订购一种商品
    • Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
      用户填写儿童的信息(名字,姓氏,性别,行为)
    • Пользователь указывает один товар и его количество
      用户指定一件商品及其数量
    • Пользователь заполняет информацию о доставке (имя, email, адрес)
      用户填写配送信息(名字,电子邮件,地址)
    • Пользователь отправляет запрос
      用户提交请求
  2. Пользователь хочет заказать товары разного вида для определенного ребенка
    用户希望为某个特定孩子订购不同类型的商品
    • Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
      用户填写儿童的信息(名字,姓氏,性别,行为)
    • Пользователь указывает несколько товаров и их количество
      用户指定几件商品及其数量
    • Пользователь заполняет информацию о доставке (имя, email, адрес)
      用户填写配送信息(名字,电子邮件,地址)
    • Пользователь отправляет запрос
      用户提交请求

Анализ эквивалентности 等价性分析

  1. Поля имени, фамилии: только буквы латиницы или кириллицы, от 3 до 15 символов - корректное, иначе - нет
    名字和姓氏字段:只允许使用拉丁字母或西里尔字母,3到15个字符——有效,否则无效
  2. Поле адреса: указан реальный город, улица и дом, иначе - некорректно
    地址字段:必须填写真实的城市、街道和房号,否则无效
  3. Email: соответствует паттерну (есть @ и домен) - корректный, иначе - нет
    电子邮件:符合格式(含有@符号和域名)——有效,否则无效
  4. Товар: есть данные в БД о наличии на складе товара с заданным артикулом - есть на складе, иначе - нет
    商品:数据库中有商品编号的库存记录——有库存,否则无效
  5. Артикул: положительное 7-значное число - корректно, иначе - нет
    商品编号:正数7位数字——有效,否则无效
  6. Количество товара: неотрицательное число, иначе - некорректно
    商品数量:非负数,否则无效

Тестовые сценарии 测试场景

  1. Использование системы со всеми корректными данными
    使用系统时所有数据都正确
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“儿童名字”字段输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“儿童姓氏”字段输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346并选择数量2
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“提交”按钮
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单已被处理的通知
  2. Использование системы с некорректными именем/фамилией (содержащими цифры)
    使用系统时名字/姓氏不正确(含有数字)
    • Пользователь вводит в поле Имя ребенка “Ег14ор88”
      用户在“儿童名字”字段输入“Ег14ор88”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“儿童姓氏”字段输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346并选择数量2
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“提交”按钮
    • Пользователь видит сообщение о неправильно заполненной форме
      用户看到表单填写错误的通知
  3. Использование системы с невалидным email
    • Пользователь вводит в поле Имя ребенка “Ег14ор88”
      用户在“儿童名字”字段输入“Ег14ор88”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“儿童姓氏”字段输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346并选择数量2
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“提交”按钮
    • Пользователь видит сообщение о неправильно заполненной форме
      用户看到表单填写错误的通知
  4. Использование системы с невалидным адресом
    • Пользователь вводит в поле Имя ребенка “Ег14ор88”
      用户在“儿童名字”字段输入“Ег14ор88”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“儿童姓氏”字段输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346并选择数量2
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“提交”按钮
    • Пользователь видит сообщение о неправильно заполненной форме
      用户看到表单填写错误的通知
  5. Использование системы с изменением поведения из выпадающего списка
    使用系统时从下拉菜单修改行为
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“儿童名字”字段输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“儿童姓氏”字段输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346并选择数量2
    • Пользователь нажимает на поведение Отличное и выбирает “Удовлетворительное”
      用户点击“优秀”的行为选项并选择“良好”
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“提交”按钮
    • Пользователь видит сообщение о принятии заказа в обработку Поведение изменилось на “Удовлетворительное”
      用户看到一条关于接受处理订单的消息 行为已更改为“满意”
  6. Использование системы с добавлением нового товара
    使用系统添加新商品
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“孩子的名字”字段中输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“孩子的姓氏”字段中输入“Остряков”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346,并选择数量为2
    • Пользователь нажимает на кнопку “Добавить новый подарок”
      用户点击“添加新礼物”按钮
    • Пользователь вводит артикул 1873672 и изменяет количество до 4
      用户输入商品编号1873672,并将数量修改为4
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49”
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单已被处理的消息
  7. Использование системы с удалением товара
    使用系统删除商品
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“孩子的名字”字段中输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“孩子的姓氏”字段中输入“Остряков”
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号”
    • Пользователь вводит артикул 1272346 и выбирает количество 2
      用户输入商品编号1272346,并选择数量为2
    • Пользователь нажимает на кнопку “Добавить новый подарок”
      用户点击“添加新礼物”按钮
    • Пользователь вводит артикул 18736723 и изменяет количество до 4
      用户输入商品编号18736723,并将数量修改为4
    • Пользователь нажимает на значок удаления около второго товара
      用户点击第二个商品旁边的删除图标
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单已被处理的消息
  8. Использование системы с недоступным(отсутствующим) товаром
    使用系统处理不可用(缺货)的商品
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“孩子的名字”字段中输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“孩子的姓氏”字段中输入“Остряков”
    • Пользователь вводит артикул 1000000 и выбирает количество 2
      用户输入商品编号1000000,并选择数量为2
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号”
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение об отсутствии товара
      用户看到商品缺货的消息
  9. Отправка не заполненной формы v1
    发送未填写的表单v1
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение о незаполненных данных
      用户看到未填写数据的消息
  10. Отправка не заполненной формы v2
    发送未填写的表单v2
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“孩子的名字”字段中输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“孩子的姓氏”字段中输入“Остряков”
    • Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
      用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号”
    • Пользователь нажимает на кнопку Очистить
      用户点击“清除”按钮
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение о незаполненных данных
      用户看到未填写数据的消息
  11. Отправка частично заполненной формы
    发送部分填写的表单
    • Пользователь вводит в поле Имя ребенка “Егор”
      用户在“孩子的名字”字段中输入“Егор”
    • Пользователь вводит в поле Фамилия ребенка “Остряков”
      用户在“孩子的姓氏”字段中输入“Остряков”
    • Пользователь нажимает на кнопку Отправить
      用户点击“发送”按钮
    • Пользователь видит сообщение о незаполненных данных
      用户看到未填写数据的消息

*Еще можно протестить radio button, то тут по дефолту стоит значение, а так должен быть выбран только один из вариантов
*还可以测试单选按钮,这里默认有一个值,但应该只选择其中一个选项

Вопрос 1* (20 мин)

С помощью ИС «Колобок» принимаются заказы на распространение хлебобулочных изделий
通过 “Колобок” 信息系统接受面包和糕点的分发订单。

Решение

Пользовательские сценарии: 用户场景:

  1. Пользователь хочет заказать товары одного вида
    用户想要订购一种类型的商品
    • Пользователь заполняет поля, выбирает товар и его кол-во, нажимает ОК
      用户填写字段,选择商品及其数量,然后点击确认
  2. Пользователь хочет заказать товары нескольких видов
    用户想要订购多种类型的商品
    • Пользователь заполняет поля, выбирает товар и его кол-во, добавляет новый товар, выбирает его тип и кол-во (может повторяться несколько раз), нажимает кнопку ОК.
      用户填写字段,选择商品及其数量,添加新商品,选择其类型和数量(可以重复几次),然后点击确认按钮。
  3. Пользователь хочет автомат по тпо
    用户想要 ТПО 免考
    • А вот хуй
      想屁吃

      Анализ эквивалентности 等效性分析

  4. Поле имени: только буквы латинского или кириллического алфавита, от 3 до 15 символов - корректное, иначе - нет
    姓名字段:只接受拉丁字母或西里尔字母,长度为 3 到 15 个字符 - 合格,否则不合格。
  5. Поле адреса: адрес соответствующий реальному - корректный, иначе - нет
    地址字段:真实地址 - 合格,否则不合格。
  6. Телефон: соответствует паттерну - корректный, иначе - нет
    电话号码:符合格式 - 合格,否则不合格。
  7. Товар: есть данные в БД о наличии на складе - есть на складе, иначе - нет
    商品:数据库中有库存信息 - 合格,否则不合格。

Тестовые сценарии: 测试用例:

  1. Типичное использование системы с выбором одного товара
    典型的单个商品订购使用场景
    • Пользователь верно заполняет поля Имя, Адрес, Телефон
      用户正确填写姓名、地址和电话号码字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单处理中的提示信息。
  2. Типичное использование системы с выбором нескольких товаров
    典型的多种商品订购使用场景
    • Пользователь верно заполняет поля Имя, Адрес, Телефон
      用户正确填写姓名、地址和电话号码字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку “Добавить новый товар”
      用户点击 “添加新商品” 按钮。
    • Пользователь заполняет ещё один вид товара, в количестве имеющемся на складе
      用户填写另一种在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单处理中的提示信息。
  3. Использование системы с выбором товаров не имеющихся на складе
    选择库存中没有的商品的使用场景
    • Пользователь верно заполняет поля Имя, Адрес, Телефон
      用户正确填写姓名、地址和电话号码字段。
    • Пользователь выбирает один вид товара, в количестве НЕ имеющемся на складе
      用户选择一种不在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение об отсутствии товара
      用户看到缺货的提示信息。
  4. Использование системы с выбором товаров не имеющихся на складе (товаров несколько)
    多种商品不在库存中的使用场景
    • Пользователь верно заполняет поля Имя, Адрес, Телефон
      用户正确填写姓名、地址和电话号码字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку “Добавить новый товар”
      用户点击 “添加新商品” 按钮。
    • Пользователь заполняет ещё один вид товара, в количестве НЕ имеющемся на складе
      用户填写另一种不在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение об отсутствии товара
      用户看到缺货的提示信息。
  5. Использование системы с некорректным Адресом
    使用不正确地址的场景
    • Пользователь верно заполняет поля Имя, Телефон
      用户正确填写姓名和电话号码字段。
    • Пользователь неверно заполняет поле Адрес
      用户错误填写地址字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение о невозможности отправки товара по указанному адресу
      用户看到无法发货至指定地址的提示信息。
  6. Использование системы с некорректным Телефоном
    使用不正确电话号码的场景
    • Пользователь верно заполняет поля Имя, Адрес
      用户正确填写姓名和地址字段。
    • Пользователь неверно заполняет поле Телефон
      用户错误填写电话号码字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение о неверном формате телефона
      用户看到电话号码格式错误的提示信息。
  7. Использование системы мусульманами*
    穆斯林用户的使用场景*
    • Пользователь верно заполняет поля Телефон, Адрес
      用户正确填写电话号码和地址字段。
    • Пользователь заполняет поле Имя именем арабского происхождения
      用户以阿拉伯名字填写姓名字段。
    • Пользователь выбирает один вид товара, в количестве имеющемся на складе
      用户选择一种在库存中的商品。
    • Пользователь нажимает кнопку ОК
      用户点击确认按钮。
    • Пользователь видит сообщение о принятии заказа в обработку
      用户看到订单处理中的提示信息。
    • Все начинки заказанных пользователем пирожков заменяются на свинину
      用户订购的所有馅料都会被替换为猪肉。

Вопрос №2 (15 мин)

Инспекторы проверяют программный артефакт. Разработайте роли инспекторов и их конкретные задания для проверки соответствия кода на
检查员正在检查软件工件。设计检查员的角色及其具体任务,以检查代码的符合性:

Решение

Роль “Инспектор архитектуры кода”
角色:“代码架构检查员”

Роль “Инспектор производительности”
角色:“性能检查员”

Роль “Инспектор-ревьювер” (ведущий)
角色:“主检查员-审核员”

Вопрос №3 (5 мин)

В программе описана структура Circle, Приведите код тестов на java, который проверяет эту окружность на нахождение в определенной позиции в системе координат и на заданный радиус.
该程序描述了 Circle 的结构。提供 java 测试代码,检查该圆是否处于坐标系中的特定位置以及给定的半径。

public static class Circle {

    double x, y, radius;

    public Circle(double x, double y, double radius) { 
        this.x = x;
        this.у = у;
        this.radius = radius;
    }

    public double getX() { 
        return x;
    }

    public double getY() { 
        return y;
    }

    public double getRadiusO {
        return radius;
    }
}

Решение

void checkCoordinatesAndRadius() {
    Circle c = new Circlet(x:1, y:1, radius: 5);
    assertAll ( 
        () -> assertEquals(c.getX(), actual: 1), 
        () -> assertEquals(c.getY(), actual: 1), 
        () -> assertEquals(c.getRadius(), actual: 5)
    );
}
import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CircleTest {

    @Test
    public void testCirclePosition() {
        // 创建一个半径为5,坐标为(10, 20)的Circle对象
        Circle circle = new Circle(10, 20, 5);

        // 验证x坐标是否正确
        assertEquals("X position is incorrect", 10, circle.getX());

        // 验证y坐标是否正确
        assertEquals("Y position is incorrect", 20, circle.getY());
    }

    @Test
    public void testCircleRadius() {
        // 创建一个半径为7,坐标为(15, 25)的Circle对象
        Circle circle = new Circle(15, 25, 7);

        // 验证半径是否正确
        assertEquals("Radius is incorrect", 7, circle.getRadius());
    }
}

Задание 4 (21.01.2022)

Решение

Первый - Проверка выбора пола мужского
第一 - 检查选择男性 1) Ввести Фамилию: Кривоносов
输入姓:Кривоносов 2) Ввести Имя: Егор
输入名:Егор 3) Ввести Отчество: Дмитриевич
输入父名:Дмитриевич 4) Ввести дату рождения: 17.10.2001 (валидная)
输入出生日期:17.10.2001(有效) 5) Выбрать мужской пол
选择男性 6) Отправка формы успешна.
表单提交成功。

Второй - Проверка выбора пола женского
第二 - 检查选择女性 1) Ввести Фамилию: Нечкасова
输入姓:Нечкасова 2) Ввести Имя: Олеся
输入名:Олеся 3) Ввести Отчество: Алексеевна
输入父名:Алексеевна 4) Ввести дату рождения: 26.09.2001 (валидная)
输入出生日期:26.09.2001(有效) 5) Выбрать женский пол
选择女性 6) Отправка формы успешна.
表单提交成功。

Второй с половиной - Проверка не выбора пола
第二个半 - 检查未选择性别

1) Ввести Фамилию: Нечкасова
输入姓:Нечкасова 2) Ввести Имя: Олеся
输入名:Олеся 3) Ввести Отчество: Алексеевна
输入父名:Алексеевна 4) Ввести дату рождения: 26.09.2001 (валидная)
输入出生日期:26.09.2001(有效) 5) Не выбирать пол
不选择性别 6) Отправка формы не успешна. Вывод ошибки, что не выбрали пол.
表单提交不成功。输出错误信息,说明未选择性别。

Третий - Проверка (Фамилии / Имени / Отчества на некорректные символы) маленькие буквы
第三 - 检查(姓/名/父名中的不正确字符)小写字母 1) Ввести Фамилию: кривоносов
输入姓:кривоносов 2) Ввести Имя: егор
输入名:егор 3) Ввести Отчество: дмитриевич
输入父名:дмитриевич 4) Ввести дату рождения: 17.10.2001 (валидная)
输入出生日期:17.10.2001(有效) 5) Выбрать мужской пол
选择男性 6) Отправка формы не успешна. Вывод ошибки на маленькие буквы в ФИО вначале.
表单提交不成功。输出错误信息,说明姓和名的首字母为小写字母。

Четвертый - Проверка (Фамилии / Имени / Отчества на некорректные символы)
第四 - 检查(姓/名/父名中的不正确字符) 1) Ввести Фамилию: Кривоносов1488
输入姓:Кривоносов1488 2) Ввести Имя: Е-гор18
输入名:Е-гор18 3) Ввести Отчество: Дмитриевич???
输入父名:Дмитриевич??? 4) Ввести дату рождения: 17.10.2001 (валидная)
输入出生日期:17.10.2001(有效) 5) Выбрать мужской пол
选择男性 6) Отправка формы не успешна. Вывод ошибки запретные символы в ФИО.
表单提交不成功。输出错误信息,说明在姓和名中包含禁止字符。

Пятый - Проверка на пустое Отчество
第五 - 检查父名是否为空 1) Ввести Фамилию: Кривоносов
输入姓:Кривоносов 2) Ввести Имя: Егор
输入名:Егор 3) Ввести Отчество:
输入父名: 4) Ввести дату рождения: 17.10.2001 (валидная)
输入出生日期:17.10.2001(有效) 5) Выбрать мужской пол
选择男性 6) Отправка формы успешна.
表单提交成功。

Шестой - Проверка даты рождения (неправильный формат)
第六 - 检查出生日期(格式不正确) 1) Ввести Фамилию: Кривоносов
输入姓:Кривоносов 2) Ввести Имя: Егор
输入名:Егор 3) Ввести Отчество: Дмитриевич
输入父名:Дмитриевич 4) Ввести дату рождения: 17.10.80 (невалидная)
输入出生日期:17.10.80(无效) 5) Выбрать мужской пол
选择男性 6) Отправка формы не успешна. Ошибка о неправильном формате даты рождения.
表单提交不成功。输出错误信息,说明出生日期格式不正确。

Седьмой - Проверка даты рождения (неправильная дата)
第七 - 检查出生日期(日期不正确) 1) Ввести Фамилию: Кривоносов
输入姓:Кривоносов 2) Ввести Имя: Егор
输入名:Егор 3) Ввести Отчество: Дмитриевич
输入父名:Дмитриевич 4) Ввести дату рождения: 17.10.1979 (невалидная)
输入出生日期:17.10.1979(无效) 5) Выбрать мужской пол
选择男性 6) Отправка формы не успешна. Ошибка о неправильной дате.
表单提交不成功。输出错误信息,说明日期不正确。

Вопрос 5 (21.01.2022)

Решение

title X Y Result
Проверка границы 0 0 true
边界检查 1.5 0 true
  3 0 true
  3 1.5 true
  3 -3 true
  1.5 -3 true
  0 -3 true
  1.5 -3 true
  -1.5 -1.5 true
  -3 0 true
  -1.8 2.4 true
  0 3 true
Проверка внутри нужной области -1 1 true
检查所需区域内 -1 -1 true
  1 -1 true
Проверка рядом с областью (выходящие за неё точки) -1.9 2.5 false
检查该区域附近(超出该区域的点) 0.1 3 false
  3 0.1 false
  3.1 -2.9 false
Проверка “больших” точек 10 10 false
检查“大”点 10 -10 false
  -10 10 false
  -10 -10 false
@Test
void checkBorder() {
    assertAll(
        () -> assertTrue(isField( х: а, у: 0)), 
        () -> assertTrue(isField( х: 1.5, у: 0)), 
        () -> assertTrue(isField( х: 3, у: 0)),
        () -> assertTrue(isField( х: 3, у 1.5)),
        () -> assertTrue(isField( х: 3, у: -3)),
        () -> assertTrue(isField( х: 1.5, у: -3)), 
        () -> assertTrue(isField( х: 0, у: -3)), 
        () -> assertTrue(isField( х: 1.5, у. -3)), 
        () -> assertTrue(isField( х: -1.5, у: -1.5)), 
        () -> assertTrue(isField( х: -3, у: 0)), 
        () -> assertTrue(isField( х: -1.8, у; 2.4)), 
        () -> assertTrue(isField( х: 0, у: 3))
    );
}

@Test
void checkInArea() {
    assertAll(
        () -> assertTrue(isField( x: -1, y: 1)),
        () -> assertTrue(isField( x: -1, y: -1)),
        () -> assertTrue(isField( x: 1, y: -1))
    )
}

@Test
void checkCloseOutToArea() {
    assertAll(
        () -> assertTrue(isField( x: -1.9, y: 2.5)),
        () -> assertTrue(isField( x: 0.1, y: 3)),
        () -> assertTrue(isField( x: 3, y: 0.1)),
        () -> assertTrue(isField( x: 3, y: -2.9))
    )
}

@Test
void checkExtraPointsNotInArea() {
    assertAll(
        () -> assertTrue(isField( x: 10, y: 10)),
        () -> assertTrue(isField( x: 10, y: -10)),
        () -> assertTrue(isField( x: -10, y: 10)),
        () -> assertTrue(isField( x: -10, y: -10))
    )
}
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

public class ShapeTest {

    // 假设的验证方法,实际应根据您的图形验证逻辑来实现
    public boolean isPointValid(int x, int y) {
        // 这里可以放置验证逻辑,示例逻辑如下
        switch (x) {
            case 10:
                return y == 20; // 点 A
            case 30:
                return y == 40; // 点 B
            case 50:
                return y == 60; // 点 C(预期失败)
            case 70:
                return y == 80; // 点 D
            default:
                return false; // 其他点无效
        }
    }

    @Test
    public void testPoints() {
        assertTrue(isPointValid(10, 20), "点 A 测试失败");
        assertTrue(isPointValid(30, 40), "点 B 测试失败");
        assertFalse(isPointValid(50, 60), "点 C 测试成功(预期失败)");
        assertTrue(isPointValid(70, 80), "点 D 测试失败");
    }
}

Вопрос 6 (21.01.2022)

Решение

1) Провести электричество
布线电力 2) Проверить электричество
检查电力 3) Провести водопровод
布置管道 4) Проверить водопровод
检查管道 5) Закупить обои и пол (плитку / паркет)
采购壁纸和地板(瓷砖/木地板) 6) Установить пол
安装地板 7) Поклеить обои
粘贴壁纸 8) Закупить технику, ванную и раковины для санузла
采购卫浴设备、浴缸和洗手盆 9) Установить технику, ванную и раковину для санузла
安装卫浴设备、浴缸和洗手盆 10) Проверить работу техники и раковины для санузла
检查卫浴设备和洗手盆的工作情况 11) Закупить технику для кухни
采购厨房设备 12) Установить технику для кухни
安装厨房设备 13) Проверить работу техники для кухни
检查厨房设备的工作情况 14) Заказать мебель
订购家具 15) Собрать мебель
组装家具 16) Установить мебель по своим местам
将家具放置到指定位置

Question

Вопрос 1

Статические анализаторы кода и какие 10 основных правил (подходы), как писать безопасный код
静态代码分析器和编写安全代码的10个基本规则(方法)

Ответ

Статическое тестирование 静态测试

Средства статического анализа кода

Находят: 1) Неопределенное поведение (переменная не инициализирована)
不确定的行为(变量未初始化) 2) Нарушение алгоритмов использования библиотеки (fopen без fclose)
违反库使用算法(fopen未配对fclose) 3) Сценарии некорректного поведения
不当行为的场景 4) Переполнение буфера
缓冲区溢出 5) Разрушение кроссплатформенности
破坏跨平台性 6) Дефекты копи-пейста
复制粘贴缺陷

CERT Top 10 Secure Coding Practices:

Находят:

  1. Проверяйте все входные значения
    检查所有输入值
  2. Следуйте всем предупреждениям компилятора
    遵循编译器的所有警告
  3. Проектируйте и устанавливайте политики безопасности
    设计并实施安全策略
  4. Keep it simple! (Чем программа проще, тем меньше шанс, что она будет взломана)
    保持简单!(程序越简单,被破解的机会越小)
  5. Запрещайте доступ если явно не разрешено
    明确禁止未授权访问
  6. Реализуйте принцип минимальных доступных привилегий
    实施最小权限原则
  7. Очищайте данные отправленные к другим системам/модулям
    清理发送到其他系统/模块的数据
  8. Практикуйте многоуровневую защиту
    实施多层防护
  9. Проверяйте качество при помощи тестирования
    通过测试检查质量
  10. Реализуйте стандарты безопасного кодирования
    实施安全编码标准

Вопрос 2

Фаззинг (Fuzzy testing)
模糊测试

Ответ

Нечеткое тестирование. Формируем тестовое покрытие и нагрузим какими то случайными данными, которые не предполагаются.
模糊测试。我们形成测试覆盖率,并用一些不预期的随机数据进行负载测试。

Типы: