MainPage/Rubiesh/Rubiesh
Rubiesh
Вопрос 1 (20 мин)
С помощью ИС «Колобок» принимается заказы на распространение хлебобулочных изделий
通过ИС«Колобок»系统接受面包制品的分发订单
- Разработать графическую форму ввода информации о ребенке включающую оценку его поведения, персональную информацию и информацию о доставке подарка.
开发一个输入儿童信息的图形表单,包括其行为的评估、个人信息以及礼物配送信息。 - Разработать пользовательские сценарии, провести анализ эквивалентности данных и используя пользовательские сценарии разработать тестовые сценарии, включая положительные, отрицательные и ошибочные. 开发用户场景,进行数据等价性分析,并使用这些场景开发测试方案,包括正面、负面和错误测试。
Решение
Пользовательские сценарии 用户场景
- Пользователь хочет заказать товар одного вида для определенного ребенка
用户希望为某个特定孩子订购一种商品- Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
用户填写儿童的信息(名字,姓氏,性别,行为) - Пользователь указывает один товар и его количество
用户指定一件商品及其数量 - Пользователь заполняет информацию о доставке (имя, email, адрес)
用户填写配送信息(名字,电子邮件,地址) - Пользователь отправляет запрос
用户提交请求
- Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
- Пользователь хочет заказать товары разного вида для определенного ребенка
用户希望为某个特定孩子订购不同类型的商品- Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
用户填写儿童的信息(名字,姓氏,性别,行为) - Пользователь указывает несколько товаров и их количество
用户指定几件商品及其数量 - Пользователь заполняет информацию о доставке (имя, email, адрес)
用户填写配送信息(名字,电子邮件,地址) - Пользователь отправляет запрос
用户提交请求
- Пользователь заполняет информацию о ребенке (имя, фамилия, пол, поведение)
Анализ эквивалентности 等价性分析
- Поля имени, фамилии: только буквы латиницы или кириллицы, от 3 до 15 символов - корректное, иначе - нет
名字和姓氏字段:只允许使用拉丁字母或西里尔字母,3到15个字符——有效,否则无效 - Поле адреса: указан реальный город, улица и дом, иначе - некорректно
地址字段:必须填写真实的城市、街道和房号,否则无效 - Email: соответствует паттерну (есть @ и домен) - корректный, иначе - нет
电子邮件:符合格式(含有@符号和域名)——有效,否则无效 - Товар: есть данные в БД о наличии на складе товара с заданным артикулом - есть на складе, иначе - нет
商品:数据库中有商品编号的库存记录——有库存,否则无效 - Артикул: положительное 7-значное число - корректно, иначе - нет
商品编号:正数7位数字——有效,否则无效 - Количество товара: неотрицательное число, иначе - некорректно
商品数量:非负数,否则无效
Тестовые сценарии 测试场景
- Использование системы со всеми корректными данными
使用系统时所有数据都正确- Пользователь вводит в поле Имя ребенка “Егор”
用户在“儿童名字”字段输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“儿童姓氏”字段输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346并选择数量2 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“提交”按钮 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单已被处理的通知
- Пользователь вводит в поле Имя ребенка “Егор”
- Использование системы с некорректными именем/фамилией (содержащими цифры)
使用系统时名字/姓氏不正确(含有数字)- Пользователь вводит в поле Имя ребенка “Ег14ор88”
用户在“儿童名字”字段输入“Ег14ор88” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“儿童姓氏”字段输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346并选择数量2 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“提交”按钮 - Пользователь видит сообщение о неправильно заполненной форме
用户看到表单填写错误的通知
- Пользователь вводит в поле Имя ребенка “Ег14ор88”
- Использование системы с невалидным email
- Пользователь вводит в поле Имя ребенка “Ег14ор88”
用户在“儿童名字”字段输入“Ег14ор88” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“儿童姓氏”字段输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346并选择数量2 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“提交”按钮 - Пользователь видит сообщение о неправильно заполненной форме
用户看到表单填写错误的通知
- Пользователь вводит в поле Имя ребенка “Ег14ор88”
- Использование системы с невалидным адресом
- Пользователь вводит в поле Имя ребенка “Ег14ор88”
用户在“儿童名字”字段输入“Ег14ор88” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“儿童姓氏”字段输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346并选择数量2 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“提交”按钮 - Пользователь видит сообщение о неправильно заполненной форме
用户看到表单填写错误的通知
- Пользователь вводит в поле Имя ребенка “Ег14ор88”
- Использование системы с изменением поведения из выпадающего списка
使用系统时从下拉菜单修改行为- Пользователь вводит в поле Имя ребенка “Егор”
用户在“儿童名字”字段输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“儿童姓氏”字段输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346并选择数量2 - Пользователь нажимает на поведение Отличное и выбирает “Удовлетворительное”
用户点击“优秀”的行为选项并选择“良好” - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“提交”按钮 - Пользователь видит сообщение о принятии заказа в обработку Поведение изменилось на “Удовлетворительное”
用户看到一条关于接受处理订单的消息 行为已更改为“满意”
- Пользователь вводит в поле Имя ребенка “Егор”
- Использование системы с добавлением нового товара
使用系统添加新商品- Пользователь вводит в поле Имя ребенка “Егор”
用户在“孩子的名字”字段中输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“孩子的姓氏”字段中输入“Остряков” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346,并选择数量为2 - Пользователь нажимает на кнопку “Добавить новый подарок”
用户点击“添加新礼物”按钮 - Пользователь вводит артикул 1873672 и изменяет количество до 4
用户输入商品编号1873672,并将数量修改为4 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段输入:名字“Петр”,电子邮件“pdf_markof@gmail.com”,地址“г. Санкт-Петербург, Кронверкский, 49” - Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单已被处理的消息
- Пользователь вводит в поле Имя ребенка “Егор”
- Использование системы с удалением товара
使用系统删除商品- Пользователь вводит в поле Имя ребенка “Егор”
用户在“孩子的名字”字段中输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“孩子的姓氏”字段中输入“Остряков” - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号” - Пользователь вводит артикул 1272346 и выбирает количество 2
用户输入商品编号1272346,并选择数量为2 - Пользователь нажимает на кнопку “Добавить новый подарок”
用户点击“添加新礼物”按钮 - Пользователь вводит артикул 18736723 и изменяет количество до 4
用户输入商品编号18736723,并将数量修改为4 - Пользователь нажимает на значок удаления около второго товара
用户点击第二个商品旁边的删除图标 - Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单已被处理的消息
- Пользователь вводит в поле Имя ребенка “Егор”
- Использование системы с недоступным(отсутствующим) товаром
使用系统处理不可用(缺货)的商品- Пользователь вводит в поле Имя ребенка “Егор”
用户在“孩子的名字”字段中输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“孩子的姓氏”字段中输入“Остряков” - Пользователь вводит артикул 1000000 и выбирает количество 2
用户输入商品编号1000000,并选择数量为2 - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号” - Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение об отсутствии товара
用户看到商品缺货的消息
- Пользователь вводит в поле Имя ребенка “Егор”
- Отправка не заполненной формы v1
发送未填写的表单v1- Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение о незаполненных данных
用户看到未填写数据的消息
- Пользователь нажимает на кнопку Отправить
- Отправка не заполненной формы v2
发送未填写的表单v2- Пользователь вводит в поле Имя ребенка “Егор”
用户在“孩子的名字”字段中输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“孩子的姓氏”字段中输入“Остряков” - Пользователь вводит имя, email, адрес в поля о доставке: “Петр”, “pdf_markof@gmail.com”, “г. Санкт-Петербург, Кронверкский, 49”
用户在配送信息字段中输入名字、电子邮件和地址:“Петр”,“pdf_markof@gmail.com”,“圣彼得堡市克隆韦尔克大街49号” - Пользователь нажимает на кнопку Очистить
用户点击“清除”按钮 - Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение о незаполненных данных
用户看到未填写数据的消息
- Пользователь вводит в поле Имя ребенка “Егор”
- Отправка частично заполненной формы
发送部分填写的表单- Пользователь вводит в поле Имя ребенка “Егор”
用户在“孩子的名字”字段中输入“Егор” - Пользователь вводит в поле Фамилия ребенка “Остряков”
用户在“孩子的姓氏”字段中输入“Остряков” - Пользователь нажимает на кнопку Отправить
用户点击“发送”按钮 - Пользователь видит сообщение о незаполненных данных
用户看到未填写数据的消息
- Пользователь вводит в поле Имя ребенка “Егор”
*Еще можно протестить radio button, то тут по дефолту стоит значение, а так должен быть выбран только один из вариантов
*还可以测试单选按钮,这里默认有一个值,但应该只选择其中一个选项
Вопрос 1* (20 мин)
С помощью ИС «Колобок» принимаются заказы на распространение хлебобулочных изделий
通过 “Колобок” 信息系统接受面包和糕点的分发订单。
- Разработать графическую форму ввода информации персональную информацию о клиенте и информацию о доставке товара.
开发一个用于输入客户个人信息和商品配送信息的图形表单。 - Разработать пользовательские сценарии, провести анализ эквивалентности данных и используя пользовательские сценарии разработать тестовые сценарии, включая положительные, отрицательные и ошибочные.
开发用户场景,进行数据等效性分析,并使用这些场景编写测试用例,包括正面、反面和错误的测试情况。
Решение
Пользовательские сценарии: 用户场景:
- Пользователь хочет заказать товары одного вида
用户想要订购一种类型的商品- Пользователь заполняет поля, выбирает товар и его кол-во, нажимает ОК
用户填写字段,选择商品及其数量,然后点击确认
- Пользователь заполняет поля, выбирает товар и его кол-во, нажимает ОК
- Пользователь хочет заказать товары нескольких видов
用户想要订购多种类型的商品- Пользователь заполняет поля, выбирает товар и его кол-во, добавляет новый товар, выбирает его тип и кол-во (может повторяться несколько раз), нажимает кнопку ОК.
用户填写字段,选择商品及其数量,添加新商品,选择其类型和数量(可以重复几次),然后点击确认按钮。
- Пользователь заполняет поля, выбирает товар и его кол-во, добавляет новый товар, выбирает его тип и кол-во (может повторяться несколько раз), нажимает кнопку ОК.
- Пользователь хочет автомат по тпо
用户想要 ТПО 免考- А вот хуй
想屁吃Анализ эквивалентности 等效性分析
- А вот хуй
- Поле имени: только буквы латинского или кириллического алфавита, от 3 до 15 символов - корректное, иначе - нет
姓名字段:只接受拉丁字母或西里尔字母,长度为 3 到 15 个字符 - 合格,否则不合格。 - Поле адреса: адрес соответствующий реальному - корректный, иначе - нет
地址字段:真实地址 - 合格,否则不合格。 - Телефон: соответствует паттерну - корректный, иначе - нет
电话号码:符合格式 - 合格,否则不合格。 - Товар: есть данные в БД о наличии на складе - есть на складе, иначе - нет
商品:数据库中有库存信息 - 合格,否则不合格。
Тестовые сценарии: 测试用例:
- Типичное использование системы с выбором одного товара
典型的单个商品订购使用场景- Пользователь верно заполняет поля Имя, Адрес, Телефон
用户正确填写姓名、地址和电话号码字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单处理中的提示信息。
- Пользователь верно заполняет поля Имя, Адрес, Телефон
- Типичное использование системы с выбором нескольких товаров
典型的多种商品订购使用场景- Пользователь верно заполняет поля Имя, Адрес, Телефон
用户正确填写姓名、地址和电话号码字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку “Добавить новый товар”
用户点击 “添加新商品” 按钮。 - Пользователь заполняет ещё один вид товара, в количестве имеющемся на складе
用户填写另一种在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单处理中的提示信息。
- Пользователь верно заполняет поля Имя, Адрес, Телефон
- Использование системы с выбором товаров не имеющихся на складе
选择库存中没有的商品的使用场景- Пользователь верно заполняет поля Имя, Адрес, Телефон
用户正确填写姓名、地址和电话号码字段。 - Пользователь выбирает один вид товара, в количестве НЕ имеющемся на складе
用户选择一种不在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение об отсутствии товара
用户看到缺货的提示信息。
- Пользователь верно заполняет поля Имя, Адрес, Телефон
- Использование системы с выбором товаров не имеющихся на складе (товаров несколько)
多种商品不在库存中的使用场景- Пользователь верно заполняет поля Имя, Адрес, Телефон
用户正确填写姓名、地址和电话号码字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку “Добавить новый товар”
用户点击 “添加新商品” 按钮。 - Пользователь заполняет ещё один вид товара, в количестве НЕ имеющемся на складе
用户填写另一种不在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение об отсутствии товара
用户看到缺货的提示信息。
- Пользователь верно заполняет поля Имя, Адрес, Телефон
- Использование системы с некорректным Адресом
使用不正确地址的场景- Пользователь верно заполняет поля Имя, Телефон
用户正确填写姓名和电话号码字段。 - Пользователь неверно заполняет поле Адрес
用户错误填写地址字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение о невозможности отправки товара по указанному адресу
用户看到无法发货至指定地址的提示信息。
- Пользователь верно заполняет поля Имя, Телефон
- Использование системы с некорректным Телефоном
使用不正确电话号码的场景- Пользователь верно заполняет поля Имя, Адрес
用户正确填写姓名和地址字段。 - Пользователь неверно заполняет поле Телефон
用户错误填写电话号码字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение о неверном формате телефона
用户看到电话号码格式错误的提示信息。
- Пользователь верно заполняет поля Имя, Адрес
- Использование системы мусульманами*
穆斯林用户的使用场景*- Пользователь верно заполняет поля Телефон, Адрес
用户正确填写电话号码和地址字段。 - Пользователь заполняет поле Имя именем арабского происхождения
用户以阿拉伯名字填写姓名字段。 - Пользователь выбирает один вид товара, в количестве имеющемся на складе
用户选择一种在库存中的商品。 - Пользователь нажимает кнопку ОК
用户点击确认按钮。 - Пользователь видит сообщение о принятии заказа в обработку
用户看到订单处理中的提示信息。 - Все начинки заказанных пользователем пирожков заменяются на свинину
用户订购的所有馅料都会被替换为猪肉。
- Пользователь верно заполняет поля Телефон, Адрес
Вопрос №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)
- Develop test scenarios, select test coverage equivalency partitionings analysis for given UI form.
开发测试场景,为给定的用户界面表单选择测试覆盖等价划分分析。- Name, Family name, Middle name - must be letters, starting with capital.
姓名、姓、父名 - 必须是字母,并以大写字母开头。 - Birthday date - valid date in form DD.MM.YYYY, and year must be after 1980.
出生日期 - 必须是有效日期,格式为DD.MM.YYYY,年份必须在1980年之后。 - Either M or F selected in the gender field.
性别字段必须选择M或F。
- Name, Family name, Middle name - must be letters, starting with capital.
Решение
Первый - Проверка выбора пола мужского
第一 - 检查选择男性
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)
- Develop test coverage to be sure taht the given figure is like shown on the picture. Mark points to test on the picture and write test cases in table with fileds X,Y and test result. Write JUnit tests.
开发测试覆盖范围以确保给定的数字如图所示。在图片上标记要测试的点,并将测试用例写在表格中,并填写 X、Y 字段和测试结果。编写 JUnit 测试。 - Results should be:
结果应该是:- Points on picture
图片上的点 - Table X,Y, result
表 X、Y、结果 - JUnit tests.
JUnit 测试。
- Points on picture
Решение
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)
- You have just bought a new flat (a house if you prefer prefer). It will be the home of you. There is nothing in it, just walls without furniture, wallpaper, etc. Please describe your “Core” integration strategy to make the home suitable for living as quickly as possible.
你刚买了一套新公寓(如果你喜欢的话,也可以是房子)。这将是你的家。里面什么都没有,只有没有家具的墙壁、壁纸等。请描述你的“核心”整合策略,以尽快使这个家适合居住。
Решение
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:
Находят:
- Проверяйте все входные значения
检查所有输入值 - Следуйте всем предупреждениям компилятора
遵循编译器的所有警告 - Проектируйте и устанавливайте политики безопасности
设计并实施安全策略 - Keep it simple! (Чем программа проще, тем меньше шанс, что она будет взломана)
保持简单!(程序越简单,被破解的机会越小) - Запрещайте доступ если явно не разрешено
明确禁止未授权访问 - Реализуйте принцип минимальных доступных привилегий
实施最小权限原则 - Очищайте данные отправленные к другим системам/модулям
清理发送到其他系统/模块的数据 - Практикуйте многоуровневую защиту
实施多层防护 - Проверяйте качество при помощи тестирования
通过测试检查质量 - Реализуйте стандарты безопасного кодирования
实施安全编码标准
Вопрос 2
Фаззинг (Fuzzy testing)
模糊测试
Ответ
Нечеткое тестирование. Формируем тестовое покрытие и нагрузим какими то случайными данными, которые не предполагаются.
模糊测试。我们形成测试覆盖率,并用一些不预期的随机数据进行负载测试。
- Одна из форм анализа уязвимостей
一种漏洞分析形式 - Запускает программу на множестве аномальных (зачастую случайных) входных данных
在大量异常(通常是随机)输入数据上运行程序 - Цель — не дать атакующему воспользоваться эксплойтом в результате сбоя
目标是防止攻击者利用故障中的漏洞 - Автоматически сгенерировать случайные тестовые случаи
自动生成随机测试用例 - Мониторинг приложение для поиска ошибок
监控应用程序以寻找错误
Типы:
- Dumb Fuzzing — изменение (mutating) существующих тестов или данных для создания новых тестовых данных
笨拙模糊测试——修改现有测试或数据以创建新的测试数据- Taof, GPF, ProxyFuzz, Peach Fuzzer
- Smart Fuzzing — определение новых тестов на основе моделей входных данных
智能模糊测试——基于输入数据模型确定新测试- SPIKE, Sulley, Mu 4000, Codenomicon, Peach Fuzzer
- Evolutionary — генерирование тестов на основе ответов от программ
进化模糊测试——基于程序的响应生成测试- Autodafe, EFS, AFL