DP Delphi / Pascal  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

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

Тест собран как небольшая техническая ревизия: часть вопросов требует вычислить результат, часть — обнаружить дефект, предложить проверяемое исправление или уточнить контракт. В наборе 25 вопросов, 15 из них содержат код. Разделы: «Каркас DUnitX», «Подготовка окружения теста», «Подмены», «Проверка исключений» и «Выбор компромисса».

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 70 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 25
В `PriceTests` сначала встречается `TPriceTests = class`, а затем `Assert.AreEqual<Currency>(120, 100 * 1.2);`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Каркас DUnitX
// Отделите правило языка от удачного запуска PriceTests.
unit PriceTests;
interface
uses DUnitX.TestFramework;
type
  [TestFixture]
  TPriceTests = class
  public
    [Test]
    procedure TaxIsAdded;
  end;
implementation
procedure TPriceTests.TaxIsAdded;
begin
  Assert.AreEqual<Currency>(120, 100 * 1.2);
end;
initialization
  TDUnitX.RegisterTestFixture(TPriceTests);
end.
Вопрос 2 из 25
Какой сценарий по теме «Подготовка окружения теста» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 3 из 25
Правка по теме «Подмены» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 4 из 25
Модуль, использующий тему «Проверка исключений», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 5 из 25
В теме «Выбор компромисса» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 6 из 25
Какое свойство темы «Каркас DUnitX» становится решающим на граничном входе или при другом порядке действий?
Вопрос 7 из 25
Модуль, использующий тему «Подготовка окружения теста», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 8 из 25
Какое свойство темы «Подмены» становится решающим на граничном входе или при другом порядке действий?
Вопрос 9 из 25
В теме «Проверка исключений» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 10 из 25
В `TestPortfolio` сначала встречается `[TestCase('zero', '0,False')]`, а затем `Assert.AreEqual(Expected, Value > 0);`. Какое наблюдаемое следствие относится именно к сценарию TestPortfolio?
PascalDelphi / Pascal · Выбор компромисса
// Определите реальную гарантию в TestPortfolio.
unit TestPortfolio;
interface
uses DUnitX.TestFramework;
type
  [TestFixture]
  TOrderRules = class
    [TestCase('zero', '0,False')]
    [TestCase('positive', '10,True')]
    procedure AcceptsOnlyPositive(Value: Integer; Expected: Boolean);
  end;
implementation
procedure TOrderRules.AcceptsOnlyPositive(Value: Integer; Expected: Boolean);
begin
  Assert.AreEqual(Expected, Value > 0);
end;
end.
Вопрос 11 из 25
Две реализации темы «Каркас DUnitX» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 12 из 25
В практическом сценарии по теме «Подготовка окружения теста» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 13 из 25
Для темы «Подмены» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 14 из 25
Две версии `ExceptionTest` сохраняют порядок `TParserTests = class` → `Assert.WillRaise(`. Какое свойство останется общим для обеих?
PascalDelphi / Pascal · Проверка исключений
// Определите реальную гарантию в ExceptionTest.
unit ExceptionTest;
interface
uses DUnitX.TestFramework, System.SysUtils;
type
  [TestFixture]
  TParserTests = class
    [Test] procedure RejectsBrokenNumber;
  end;
implementation
procedure TParserTests.RejectsBrokenNumber;
begin
  Assert.WillRaise(
    procedure begin StrToInt('4x'); end,
    EConvertError);
end;
end.
Вопрос 15 из 25
Модуль, использующий тему «Выбор компромисса», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 16 из 25
Правка по теме «Каркас DUnitX» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 17 из 25
В теме «Подготовка окружения теста» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 18 из 25
Какой граничный результат следует ожидать в `ServiceTest`, когда после `TFakeClock = class(TInterfacedObject, IClock)` выполняется `begin Result := Value; end;`?
PascalDelphi / Pascal · Подмены
// Определите реальную гарантию в ServiceTest.
unit ServiceTest;
interface
type
  IClock = interface
    function NowValue: TDateTime;
  end;
  TFakeClock = class(TInterfacedObject, IClock)
    Value: TDateTime;
    function NowValue: TDateTime;
  end;
implementation
function TFakeClock.NowValue: TDateTime;
begin Result := Value; end;
end.
Вопрос 19 из 25
Две реализации темы «Проверка исключений» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 20 из 25
В практическом сценарии по теме «Выбор компромисса» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 21 из 25
Для темы «Каркас DUnitX» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 22 из 25
Какое наблюдение должен зафиксировать тест именно для последовательности `procedure TListTests.SetUp; begin FList := TStringList.Create; end;` → `procedure TListTests.StartsEmpty; begin Assert.AreEqual(0, FList.Count); end;` в `FixtureIsolation`?
PascalDelphi / Pascal · Подготовка окружения теста
// Проследите фактическое поведение FixtureIsolation.
unit FixtureIsolation;
interface
uses DUnitX.TestFramework, System.Classes;
type
  [TestFixture]
  TListTests = class
  private
    FList: TStringList;
  public
    [Setup] procedure SetUp;
    [TearDown] procedure TearDown;
    [Test] procedure StartsEmpty;
  end;
implementation
procedure TListTests.SetUp; begin FList := TStringList.Create; end;
procedure TListTests.TearDown; begin FList.Free; end;
procedure TListTests.StartsEmpty; begin Assert.AreEqual(0, FList.Count); end;
end.
Вопрос 23 из 25
Обычный пример по теме «Подмены» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 24 из 25
Реализацию темы «Проверка исключений» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 25 из 25
Обычный пример по теме «Выбор компромисса» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?

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

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

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

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