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

Тестирование научного кода

Практические задания по теме «Тестирование научного кода» требуют сопоставить несколько решений, найти источник ошибки и оценить последствия выбранного подхода. Вопросы требуют читать код, находить границу применимости, выбирать проверяемую правку и отличать свойства Julia от поведения конкретного пакета. В тесте 25 вопросов: 15 заданий с кодом и 10 заданий с математической записью. Все формулировки рассчитаны на Julia 1.12.6; для сторонних библиотек используется явно названный API.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 25
Какой механизм Julia определяет поведение строки `@testset "normalize rows" begin`?
\bigwedge_i test_i
JuliaJulia · Наборы тестов
using Test
function normalize_rows(A)
    sums = sum(A; dims=2)
    any(iszero, sums) && throw(ArgumentError("zero row"))
    return A ./ sums
end
@testset "normalize rows" begin
    @test sum(normalize_rows([1.0 1; 2 2]); dims=2) ≈ ones(2,1)
    @test_throws ArgumentError normalize_rows([0.0 0; 1 2])
end
Вопрос 2 из 25
Какую проверку стоит добавить для участка с `@testset "normalize rows" begin`?
JuliaJulia · Наборы тестов
using Test
function normalize_rows(A)
    sums = sum(A; dims=2)
    any(iszero, sums) && throw(ArgumentError("zero row"))
    return A ./ sums
end
@testset "normalize rows" begin
    @test sum(normalize_rows([1.0 1; 2 2]); dims=2) ≈ ones(2,1)
    @test_throws ArgumentError normalize_rows([0.0 0; 1 2])
end
Вопрос 3 из 25
Какое требование к `@testset "normalize rows" begin` важнее удобной детали текущей реализации?
JuliaJulia · Наборы тестов
using Test
function normalize_rows(A)
    sums = sum(A; dims=2)
    any(iszero, sums) && throw(ArgumentError("zero row"))
    return A ./ sums
end
@testset "normalize rows" begin
    @test sum(normalize_rows([1.0 1; 2 2]); dims=2) ≈ ones(2,1)
    @test_throws ArgumentError normalize_rows([0.0 0; 1 2])
end
Вопрос 4 из 25
При переносе кода с `@testset "normalize rows" begin` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
\bigwedge_i test_i
Вопрос 5 из 25
Что следует сообщить пользователю библиотеки о поведении `@testset "normalize rows" begin`?
Вопрос 6 из 25
Какой механизм Julia определяет поведение строки `@test isapprox(x, y; rtol=2e-9, atol=0.0)`?
|x-y|\le atol+rtol\,|y|
JuliaJulia · Приближённое равенство
using Test
x = 1e8 + 0.1
y = 1e8
@test isapprox(x, y; rtol=2e-9, atol=0.0)
@test !isapprox(1e-10, 0.0; rtol=1e-6, atol=0.0)
Вопрос 7 из 25
Что нужно подтвердить отдельным примером для `@test isapprox(x, y; rtol=2e-9, atol=0.0)`?
JuliaJulia · Приближённое равенство
using Test
x = 1e8 + 0.1
y = 1e8
@test isapprox(x, y; rtol=2e-9, atol=0.0)
@test !isapprox(1e-10, 0.0; rtol=1e-6, atol=0.0)
Вопрос 8 из 25
Какую гарантию должна сохранить правка участка с `@test isapprox(x, y; rtol=2e-9, atol=0.0)`?
JuliaJulia · Приближённое равенство
using Test
x = 1e8 + 0.1
y = 1e8
@test isapprox(x, y; rtol=2e-9, atol=0.0)
@test !isapprox(1e-10, 0.0; rtol=1e-6, atol=0.0)
Вопрос 9 из 25
Две реализации участка с `@test isapprox(x, y; rtol=2e-9, atol=0.0)` совпадают на обычных данных. Что необходимо проверить перед выпуском?
|x-y|\le atol+rtol\,|y|
Вопрос 10 из 25
Какой тезис о `@test isapprox(x, y; rtol=2e-9, atol=0.0)` можно честно закрепить в справке?
Вопрос 11 из 25
Что именно следует из фрагмента с `@testset "sorted invariant" begin`?
x_i\sim RNG(s)
JuliaJulia · Случайные данные
using Test, Random
rng = Xoshiro(42)
@testset "sorted invariant" begin
    for n in (0, 1, 2, 10, 100)
        x = rand(rng, -20:20, n)
        y = sort(x)
        @test issorted(y)
        @test sort(y) == y
    end
end
Вопрос 12 из 25
Что нужно подтвердить отдельным примером для `@testset "sorted invariant" begin`?
JuliaJulia · Случайные данные
using Test, Random
rng = Xoshiro(42)
@testset "sorted invariant" begin
    for n in (0, 1, 2, 10, 100)
        x = rand(rng, -20:20, n)
        y = sort(x)
        @test issorted(y)
        @test sort(y) == y
    end
end
Вопрос 13 из 25
Какое решение устраняет риск вокруг `@testset "sorted invariant" begin`, не меняя поведение на допустимых данных?
JuliaJulia · Случайные данные
using Test, Random
rng = Xoshiro(42)
@testset "sorted invariant" begin
    for n in (0, 1, 2, 10, 100)
        x = rand(rng, -20:20, n)
        y = sort(x)
        @test issorted(y)
        @test sort(y) == y
    end
end
Вопрос 14 из 25
При переносе кода с `@testset "sorted invariant" begin` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
x_i\sim RNG(s)
Вопрос 15 из 25
Какое утверждение о `@testset "sorted invariant" begin` является переносимым правилом, а не особенностью одного запуска?
Вопрос 16 из 25
Что именно следует из фрагмента с `@test result ≈ reference rtol=1e-12 atol=0`?
\lVert y-y_{ref}\rVert\le\tau
JuliaJulia · Регрессия результата
using Test, SHA
reference = [0.0, 0.5, 0.75, 0.875]
result = 1 .- 0.5 .^ (0:3)
@test result ≈ reference rtol=1e-12 atol=0
@test bytes2hex(sha256(reinterpret(UInt8, result))) != ""
Вопрос 17 из 25
Какой тест точнее всего зафиксирует границу поведения `@test result ≈ reference rtol=1e-12 atol=0`?
JuliaJulia · Регрессия результата
using Test, SHA
reference = [0.0, 0.5, 0.75, 0.875]
result = 1 .- 0.5 .^ (0:3)
@test result ≈ reference rtol=1e-12 atol=0
@test bytes2hex(sha256(reinterpret(UInt8, result))) != ""
Вопрос 18 из 25
Какое решение устраняет риск вокруг `@test result ≈ reference rtol=1e-12 atol=0`, не меняя поведение на допустимых данных?
JuliaJulia · Регрессия результата
using Test, SHA
reference = [0.0, 0.5, 0.75, 0.875]
result = 1 .- 0.5 .^ (0:3)
@test result ≈ reference rtol=1e-12 atol=0
@test bytes2hex(sha256(reinterpret(UInt8, result))) != ""
Вопрос 19 из 25
Как проверить, что новая реализация `@test result ≈ reference rtol=1e-12 atol=0` не изменила обещанное пользователю поведение?
\lVert y-y_{ref}\rVert\le\tau
Вопрос 20 из 25
Какое ограничение стоит прямо указать в документации к участку с `@test result ≈ reference rtol=1e-12 atol=0`?
Вопрос 21 из 25
Как нужно интерпретировать `@test f(x) >= 0`, не добавляя к коду лишних гарантий?
Q=Q_{unit}\cup Q_{property}\cup Q_{integration}
JuliaJulia · Выбор компромисса
using Test, BenchmarkTools
f(x) = sum(abs2, x)
x = rand(10_000)
@test f(x) >= 0
trial = @benchmark f($x) samples=20 evals=1
@test median(trial).time < 2_000_000
@show median(trial).memory
Вопрос 22 из 25
Какой тест точнее всего зафиксирует границу поведения `@test f(x) >= 0`?
JuliaJulia · Выбор компромисса
using Test, BenchmarkTools
f(x) = sum(abs2, x)
x = rand(10_000)
@test f(x) >= 0
trial = @benchmark f($x) samples=20 evals=1
@test median(trial).time < 2_000_000
@show median(trial).memory
Вопрос 23 из 25
Что должно остаться истинным после рефакторинга участка с `@test f(x) >= 0`?
JuliaJulia · Выбор компромисса
using Test, BenchmarkTools
f(x) = sum(abs2, x)
x = rand(10_000)
@test f(x) >= 0
trial = @benchmark f($x) samples=20 evals=1
@test median(trial).time < 2_000_000
@show median(trial).memory
Вопрос 24 из 25
Какой результат приёмочного теста подтвердит корректность участка с `@test f(x) >= 0`?
Q=Q_{unit}\cup Q_{property}\cup Q_{integration}
Вопрос 25 из 25
Какое ограничение стоит прямо указать в документации к участку с `@test f(x) >= 0`?

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

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

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

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