💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 22 из 25
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт. Какую правку стоит предложить на ревью, сохранив назначение кода?
Go Тестирование и наблюдаемость: фрагмент на ревью Копировать
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("os";"path/filepath";"testing")
func TestFile(t *testing.T){ p:=filepath.Join(t.TempDir(),"x.json"); if err:=os.WriteFile(p,[]byte(`{"n":1}`),0600);err!=nil{t.Fatal(err)} }
Запускать `-shuffle`, `-count`, `-race`, хранить медленные интеграционные тесты отдельно и анализировать пропуски покрытия по риску.
Выносить проверку паники в небольшую функцию и добавлять `debug.Stack()` в журнал на эксплуатационной границе.
Хранить репрезентативные старые документы в `testdata`, проверять ограничения размера и не журналировать полный чувствительный JSON.
Проверять заголовки, контекст, статус, паники и дополнительные интерфейсы ResponseWriter.
Хранить примеры компилируемыми, тестировать нулевое значение и конкурентный контракт, если они обещаны.
Вопрос 23 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки. На какой контракт языка или стандартной библиотеки здесь нужно опереться?
Go Тестирование и наблюдаемость: проверка контракта Копировать
// Определите правило Go, которое объясняет результат.
package sample
import("os";"path/filepath";"testing")
func TestFile(t *testing.T){ p:=filepath.Join(t.TempDir(),"x.json"); if err:=os.WriteFile(p,[]byte(`{"n":1}`),0600);err!=nil{t.Fatal(err)} }
Производительность проверяют устойчивым бенчмарком, базовой линией и эксплуатационными метриками, а не одним быстрым запуском.
Обобщённый алгоритм тестируют представителями разных ветвей ограничения и именованными типами, а не только `int`.
Синхронизацию проверяют под `-race`, повторными прогонами и инвариантами результата, а не только отсутствием паники.
Сериализацию проверяют золотыми примерами, круговым преобразованием и испорченным входом; файловые операции — временным каталогом теста.
Панику проверяют в той же горутине через отложенный `recover`, а в рабочем сервисе фиксируют значение и стек.