LU Lua  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Тестирование Lua-кода

Тест по теме «Тестирование Lua-кода» проверяет чтение кода, поиск скрытых допущений и выбор решения для обычных и граничных сценариев. В нём 25 вопросов, из них 14 содержат фрагменты Lua. Условия отдельно отмечают случаи, зависящие от версии языка или внешней библиотеки.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
На каком правиле держится поведение этого кода? Ответ должен описывать основной механизм раздела «Набор примеров».
LuaLua · Набор примеров · разбор 1
describe("cart total", function()
  it("adds two priced items", function()
    local cart=Cart.new()
    cart:add({price=12}); cart:add({price=8})
    assert.are.equal(20, cart:total())
  end)
end)
Вопрос 2 из 25
Какой риск останется незамеченным, если выполнить код только один раз? Нужен отрицательный сценарий для раздела «Набор примеров».
LuaLua · Набор примеров · разбор 2
local function reproduce_case()
  describe("cart total", function()
    it("adds two priced items", function()
      local cart=Cart.new()
      cart:add({price=12}); cart:add({price=8})
      assert.are.equal(20, cart:total())
    end)
  end)
end
reproduce_case()
Вопрос 3 из 25
Какая гарантия важнее сохранения точной формы кода? Речь идёт о центральном правиле раздела «Набор примеров».
LuaLua · Набор примеров · разбор 3
do
  describe("cart total", function()
    it("adds two priced items", function()
      local cart=Cart.new()
      cart:add({price=12}); cart:add({price=8})
      assert.are.equal(20, cart:total())
    end)
  end)
end
Вопрос 4 из 25
В проекте пересматривают «Набор примеров». Какое правило лучше выразить в интерфейсе, а не оставлять устной договорённостью? Выберите практическое следствие раздела «Набор примеров».
Вопрос 5 из 25
Что должен помнить разработчик, впервые работающий с разделом «Набор примеров»? Выберите описание, объединяющее механизм и границу раздела «Набор примеров».
Вопрос 6 из 25
Какая семантическая деталь определяет поведение фрагмента? Ответ должен описывать основной механизм раздела «Проверочные утверждения».
LuaLua · Проверочные утверждения · разбор 1
local result = normalize({name="  Ana ", age="7"})
assert.same({name="Ana", age=7}, result)
assert.is_nil(result.password)
Вопрос 7 из 25
Какой риск останется незамеченным, если выполнить код только один раз? Ищется граничное следствие правила из раздела «Проверочные утверждения».
LuaLua · Проверочные утверждения · разбор 2
local function reproduce_case()
  local result = normalize({name="  Ana ", age="7"})
  assert.same({name="Ana", age=7}, result)
  assert.is_nil(result.password)
end
reproduce_case()
Вопрос 8 из 25
Какое требование стоит закрепить тестом до начала рефакторинга? Речь идёт о центральном правиле раздела «Проверочные утверждения».
LuaLua · Проверочные утверждения · разбор 3
do
  local result = normalize({name="  Ana ", age="7"})
  assert.same({name="Ana", age=7}, result)
  assert.is_nil(result.password)
end
Вопрос 9 из 25
Код по разделу «Проверочные утверждения» уходит в эксплуатацию. Какое ограничение нельзя прятать внутри реализации? Ответ должен выражать проверяемое следствие раздела «Проверочные утверждения».
Вопрос 10 из 25
Какой вариант точнее всего передаёт смысл раздела «Проверочные утверждения»? Нужна полная формулировка раздела «Проверочные утверждения».
Вопрос 11 из 25
Что нельзя заменить привычкой из другого языка при чтении этого кода? Ответ должен описывать основной механизм раздела «Подмены».
LuaLua · Подмены · разбор 1
local clock={now=function() return 100 end}
local token=Token.new({clock=clock,expires_at=110})
assert.is_false(token:expired())
clock.now=function() return 120 end
assert.is_true(token:expired())
Вопрос 12 из 25
Что следует изменить во входе, чтобы проверить скрытое ограничение? Нужен отрицательный сценарий для раздела «Подмены».
LuaLua · Подмены · разбор 2
local function reproduce_case()
  local clock={now=function() return 100 end}
  local token=Token.new({clock=clock,expires_at=110})
  assert.is_false(token:expired())
  clock.now=function() return 120 end
  assert.is_true(token:expired())
end
reproduce_case()
Вопрос 13 из 25
Что здесь является частью контракта, а не случайностью текущей записи? Выберите гарантию, определяющую раздел «Подмены».
LuaLua · Подмены · разбор 3
do
  local clock={now=function() return 100 end}
  local token=Token.new({clock=clock,expires_at=110})
  assert.is_false(token:expired())
  clock.now=function() return 120 end
  assert.is_true(token:expired())
end
Вопрос 14 из 25
В модуле меняют «Подмены» и хотят сохранить диагностируемость. Какой подход надёжнее? Ответ должен выражать проверяемое следствие раздела «Подмены».
Вопрос 15 из 25
Какой вывод о разделе «Подмены» останется верным после смены реализации? Ответ должен охватывать весь раздел «Подмены».
Вопрос 16 из 25
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Ответ должен описывать основной механизм раздела «Изоляция состояния».
LuaLua · Изоляция состояния · разбор 1
before_each(function()
  package.loaded.app_state=nil
  state=require("app_state")
end)
after_each(function() state:close() end)
Вопрос 17 из 25
Что здесь важнее проверить, чем само отсутствие ошибки? Выберите именно проверяемую границу раздела «Изоляция состояния».
LuaLua · Изоляция состояния · разбор 2
local function reproduce_case()
  before_each(function()
    package.loaded.app_state=nil
    state=require("app_state")
  end)
  after_each(function() state:close() end)
end
reproduce_case()
Вопрос 18 из 25
Что здесь является частью контракта, а не случайностью текущей записи? Речь идёт о центральном правиле раздела «Изоляция состояния».
LuaLua · Изоляция состояния · разбор 3
do
  before_each(function()
    package.loaded.app_state=nil
    state=require("app_state")
  end)
  after_each(function() state:close() end)
end
Вопрос 19 из 25
Какое решение по разделу «Изоляция состояния» упростит и проверку, и расследование сбоя? Ответ должен выражать проверяемое следствие раздела «Изоляция состояния».
Вопрос 20 из 25
Какое утверждение о разделе «Изоляция состояния» наиболее полное и точное? Нужна полная формулировка раздела «Изоляция состояния».
Вопрос 21 из 25
Почему этот фрагмент ведёт себя именно так? Нужна именно центральная гарантия раздела «Совместимость версий».
LuaLua · Совместимость версий · разбор 1
-- matrix: lua5.1, lua5.2, lua5.3, lua5.4, luajit
local fn = assert(load_compat("return 7"))
assert(fn() == 7)
Вопрос 22 из 25
Где этот код может повести себя иначе на границе? Ищется граничное следствие правила из раздела «Совместимость версий».
LuaLua · Совместимость версий · разбор 2
local function reproduce_case()
  -- matrix: lua5.1, lua5.2, lua5.3, lua5.4, luajit
  local fn = assert(load_compat("return 7"))
  assert(fn() == 7)
end
reproduce_case()
Вопрос 23 из 25
Какой инвариант нельзя потерять при упрощении этого фрагмента? Выберите гарантию, определяющую раздел «Совместимость версий».
Вопрос 24 из 25
Что стоит зафиксировать до расширения функциональности раздела «Совместимость версий»? Нужна эксплуатационная граница раздела «Совместимость версий».
Вопрос 25 из 25
Какой вариант точнее всего передаёт смысл раздела «Совместимость версий»? Нужна полная формулировка раздела «Совместимость версий».

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу