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

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

В тесте «Тестирование Scala-кода» недостаточно узнать термин: потребуется проследить типы и выполнение, найти риск соседнего случая и выбрать проверяемую правку. Шкалы: Тестирование со ScalaTest, Свойства, Подмены, Асинхронные тесты, Контроль состояния.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 25
Во фрагменте проверяется тема «Тестирование со ScalaTest». Какое правило точнее всего объясняет поведение кода?
ScalaТестирование со ScalaTest: чтение фрагмента
class CalcSpec extends org.scalatest.funsuite.AnyFunSuite:
  test("sum keeps all values"):
    assert(List(1,2,3).sum == 6)
Вопрос 2 из 25
Для темы «Тестирование со ScalaTest» какой случай уже не покрывается показанной гарантией?
ScalaТестирование со ScalaTest: изменившийся контекст
// Дополнительный контекст: Подмена сохранила старый контракт после того, как реальная зависимость изменилась.
class CalcSpec extends org.scalatest.funsuite.AnyFunSuite:
  test("sum keeps all values"):
    assert(List(1,2,3).sum == 6)
Вопрос 3 из 25
При исправлении темы «Тестирование со ScalaTest» что следует изменить, чтобы следующий рефакторинг не вернул тот же риск?
ScalaТестирование со ScalaTest: решение на ревью
class CalcSpec extends org.scalatest.funsuite.AnyFunSuite:
  test("sum keeps all values"):
    assert(List(1,2,3).sum == 6)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 25
В контракте темы «Тестирование со ScalaTest» что следует оставить в проектном решении после этого изменения контекста?
P(P(x))=P(x)
Вопрос 5 из 25
При проверке темы «Тестирование со ScalaTest» какой итог можно проверить автоматически или воспроизводимым примером?
Вопрос 6 из 25
В теме «Свойства» что в этом примере определяется семантикой Scala, а не соглашением автора?
ScalaСвойства: чтение фрагмента
// Свойство: reverse.reverse возвращает исходный список.
val xs = List(1,2,3)
assert(xs.reverse.reverse == xs)
Вопрос 7 из 25
Для темы «Свойства» после переноса кода в общий модуль проявилось скрытое допущение. Какое?
ScalaСвойства: изменившийся контекст
// Дополнительный контекст: Подмена сохранила старый контракт после того, как реальная зависимость изменилась.
// Свойство: reverse.reverse возвращает исходный список.
val xs = List(1,2,3)
assert(xs.reverse.reverse == xs)
Вопрос 8 из 25
Какой шаг по теме «Свойства» снижает риск повторного дефекта?
ScalaСвойства: решение на ревью
// Свойство: reverse.reverse возвращает исходный список.
val xs = List(1,2,3)
assert(xs.reverse.reverse == xs)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 25
В контракте темы «Свойства» асинхронный тест завершился раньше проверяемого вычисления. Какой вывод одновременно сохраняет правило и учитывает его границу?
Вопрос 10 из 25
При проверке темы «Свойства» как сформулировать защиту от регрессии без расплывчатого «работает как раньше»?
Вопрос 11 из 25
Какой вывод о теме «Подмены» можно сделать без дополнительных допущений?
ScalaПодмены: чтение фрагмента
trait Repo: def find(id: Long): Option[String]
class Fake extends Repo:
  def find(id: Long) = Option.when(id == 1)("Ada")
Вопрос 12 из 25
Для темы «Подмены» какое последствие нельзя исключить одним успешным запуском?
ScalaПодмены: изменившийся контекст
// Дополнительный контекст: Тест запустили параллельно и добавили вход, которого не было в счастливом сценарии.
trait Repo: def find(id: Long): Option[String]
class Fake extends Repo:
  def find(id: Long) = Option.when(id == 1)("Ada")
Вопрос 13 из 25
При исправлении темы «Подмены» какая правка сохраняет полезную семантику и не расширяет обещания API?
ScalaПодмены: решение на ревью
trait Repo: def find(id: Long): Option[String]
class Fake extends Repo:
  def find(id: Long) = Option.when(id == 1)("Ada")
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 25
В контракте темы «Подмены» локальный пример стал частью более крупной системы. Какая трактовка контракта остаётся полной?
Вопрос 15 из 25
При проверке темы «Подмены» какой пункт следует добавить в критерии приёмки изменения?
Вопрос 16 из 25
В теме «Асинхронные тесты» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaАсинхронные тесты: чтение фрагмента
import scala.concurrent.Future
class AsyncSpec extends org.scalatest.funsuite.AsyncFunSuite:
  test("async value"):
    Future.successful(42).map { n => assert(n == 42) }
Вопрос 17 из 25
Для темы «Асинхронные тесты» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaАсинхронные тесты: изменившийся контекст
// Дополнительный контекст: Подмена сохранила старый контракт после того, как реальная зависимость изменилась.
import scala.concurrent.Future
class AsyncSpec extends org.scalatest.funsuite.AsyncFunSuite:
  test("async value"):
    Future.successful(42).map { n => assert(n == 42) }
Вопрос 18 из 25
При исправлении темы «Асинхронные тесты» что здесь лучше исправить до объединения изменений?
ScalaАсинхронные тесты: решение на ревью
import scala.concurrent.Future
class AsyncSpec extends org.scalatest.funsuite.AsyncFunSuite:
  test("async value"):
    Future.successful(42).map { n => assert(n == 42) }
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 25
В контракте темы «Асинхронные тесты» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Вопрос 20 из 25
При проверке темы «Асинхронные тесты» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 21 из 25
В теме «Контроль состояния» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaКонтроль состояния: чтение фрагмента
class Counter:
  private var n = 0
  def inc() = { n += 1; n }
val fresh = Counter()
assert(fresh.inc() == 1)
Вопрос 22 из 25
Для темы «Контроль состояния» тест запустили параллельно и добавили вход, которого не было в счастливом сценарии. Какой дефект остаётся возможным при корректном синтаксисе?
Вопрос 23 из 25
При исправлении темы «Контроль состояния» на ревью уже воспроизвели проблему: Общий изменяемый singleton делает результаты зависимыми от порядка и параллельного запуска. Какую правку стоит принять?
ScalaКонтроль состояния: решение на ревью
class Counter:
  private var n = 0
  def inc() = { n += 1; n }
val fresh = Counter()
assert(fresh.inc() == 1)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 25
В контракте темы «Контроль состояния» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 25 из 25
При проверке темы «Контроль состояния» какой контроль остаётся полезным после рефакторинга и переименования кода?

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

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

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

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