💡 Инструкция: Выберите один ответ из пяти. На тест отведено 70 минут; после ответа можно открыть объяснение.
Вопрос 6 из 25
Раздел «Команды базы данных»: код использует Create. Какой вывод останется верным при других допустимых входных данных?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Imports System.Data.Common
Module Demo
Function Create(factory As DbProviderFactory, connection As DbConnection) As DbCommand
Dim command = factory.CreateCommand()
command.Connection = connection
command.CommandText = "select id from users where email = @email"
command.CommandTimeout = 15
Return command
End Function
End Module
Разбор фрагмента: dbCommand должен иметь неявный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Разбор фрагмента: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText не нарушает границу данных и кода.
Разбор фрагмента: dbCommand выводит CommandType, тайм-аут и подходящее соединение из текста SQL, поэтому эти свойства можно не задавать.
Разбор фрагмента: dbCommand не должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Разбор фрагмента: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Вопрос 7 из 25
Раздел «Команды базы данных»: что следует зафиксировать в ревью, чтобы ошибка не переехала из сборки в выполнение?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Option Strict On
Imports System.Data.Common
Namespace ReviewCase16_2
Module Demo
Function Create(reviewFactory As DbProviderFactory, reviewConnection As DbConnection) As DbCommand
Dim reviewCommand = reviewFactory.CreateCommand()
reviewCommand.Connection = reviewConnection
reviewCommand.CommandText = "select id from users where email = @email"
reviewCommand.CommandTimeout = 16
Return reviewCommand
End Function
End Module
End Namespace
Сохранить на ревью: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Сохранить на ревью: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText не нарушает границу данных и кода.
Сохранить на ревью: dbCommand не должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Сохранить на ревью: dbCommand должен иметь неявный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Сохранить на ревью: dbCommand выводит CommandType, тайм-аут и подходящее соединение из текста SQL, поэтому эти свойства можно не задавать.
Вопрос 8 из 25
Раздел «Команды базы данных»: какое правило нельзя считать проверенным одним обычным примером?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase16_2
Module Demo
Function Create(edgeFactory As DbProviderFactory, edgeConnection As DbConnection) As DbCommand
Dim edgeCommand = edgeFactory.CreateCommand()
edgeCommand.Connection = edgeConnection
edgeCommand.CommandText = "select id from users where email = @email"
edgeCommand.CommandTimeout = 14
Return edgeCommand
End Function
End Module
End Namespace
Зафиксировать ожидаемое поведение: dbCommand не должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Зафиксировать ожидаемое поведение: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText не нарушает границу данных и кода.
Зафиксировать ожидаемое поведение: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Зафиксировать ожидаемое поведение: dbCommand должен иметь неявный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Зафиксировать ожидаемое поведение: dbCommand выводит CommandType, тайм-аут и подходящее соединение из текста SQL, поэтому эти свойства можно не задавать.
Вопрос 9 из 25
Раздел «Команды базы данных»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Не скрывать за запасным сценарием: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Не скрывать за запасным сценарием: dbCommand должен иметь неявный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Не скрывать за запасным сценарием: dbCommand выводит CommandType, тайм-аут и подходящее соединение из текста SQL, поэтому эти свойства можно не задавать.
Не скрывать за запасным сценарием: dbCommand не должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Не скрывать за запасным сценарием: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText не нарушает границу данных и кода.
Вопрос 10 из 25
Что можно считать надёжным рабочим правилом для раздела «Команды базы данных»?
Технически точный принцип: dbCommand выводит CommandType, тайм-аут и подходящее соединение из текста SQL, поэтому эти свойства можно не задавать.
Технически точный принцип: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Технически точный принцип: dbCommand должен иметь неявный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Технически точный принцип: dbCommand не должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText нарушает границу данных и кода.
Технически точный принцип: dbCommand должен иметь явный текст, тип команды, соединение и разумный тайм-аут; конкатенация пользовательских значений в CommandText не нарушает границу данных и кода.
Вопрос 21 из 25
Какой вывод о фрагменте по теме «Совместимость версий» технически обоснован?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Imports System.Data.Common
Class UserRepository
Private ReadOnly factory As DbProviderFactory
Public Sub New(factory As DbProviderFactory)
Me.factory = factory
End Sub
Public Function CreateConnection(connectionString As String) As DbConnection
Dim connection = factory.CreateConnection()
If connection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a connection")
connection.ConnectionString = connectionString
Return connection
End Function
End Class
Поставщики и версии СУБД не различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
DbProviderFactory выравнивает синтаксис, типы и имена параметров между СУБД, поэтому интеграционный тест на каждой базе не нужен.
Поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на любой совместимой базе.
Поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость не проверяют интеграционным тестом на целевой базе.
Поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Вопрос 22 из 25
Раздел «Совместимость версий»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Option Strict On
Imports System.Data.Common
Namespace ReviewCase16_5
Class UserRepository
Private ReadOnly reviewFactory As DbProviderFactory
Public Sub New(reviewFactory As DbProviderFactory)
Me.reviewFactory = reviewFactory
End Sub
Public Function CreateConnection(reviewConnectionString As String) As DbConnection
Dim reviewConnection = reviewFactory.CreateConnection()
If reviewConnection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a reviewConnection")
reviewConnection.ConnectionString = reviewConnectionString
Return reviewConnection
End Function
End Class
End Namespace
Не менять условие: dbProviderFactory выравнивает синтаксис, типы и имена параметров между СУБД, поэтому интеграционный тест на каждой базе не нужен.
Не менять условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на любой совместимой базе.
Не менять условие: поставщики и версии СУБД не различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Не менять условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Не менять условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость не проверяют интеграционным тестом на целевой базе.
Вопрос 23 из 25
Раздел «Совместимость версий»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NET Visual Basic · ADO.NET и параметризованные запросы Копировать
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase16_5
Class UserRepository
Private ReadOnly edgeFactory As DbProviderFactory
Public Sub New(edgeFactory As DbProviderFactory)
Me.edgeFactory = edgeFactory
End Sub
Public Function CreateConnection(edgeConnectionString As String) As DbConnection
Dim edgeConnection = edgeFactory.CreateConnection()
If edgeConnection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a edgeConnection")
edgeConnection.ConnectionString = edgeConnectionString
Return edgeConnection
End Function
End Class
End Namespace
Зафиксировать ожидаемое поведение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость не проверяют интеграционным тестом на целевой базе.
Зафиксировать ожидаемое поведение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на любой совместимой базе.
Зафиксировать ожидаемое поведение: dbProviderFactory выравнивает синтаксис, типы и имена параметров между СУБД, поэтому интеграционный тест на каждой базе не нужен.
Зафиксировать ожидаемое поведение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Зафиксировать ожидаемое поведение: поставщики и версии СУБД не различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Вопрос 24 из 25
Раздел «Совместимость версий»: обычный сценарий в рабочем модуле проходит, но поведение ещё не закреплено проверкой. Какое решение не маскирует причину?
Оставить в коде и тестах условие: поставщики и версии СУБД не различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Оставить в коде и тестах условие: dbProviderFactory выравнивает синтаксис, типы и имена параметров между СУБД, поэтому интеграционный тест на каждой базе не нужен.
Оставить в коде и тестах условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Оставить в коде и тестах условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость не проверяют интеграционным тестом на целевой базе.
Оставить в коде и тестах условие: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на любой совместимой базе.
Вопрос 25 из 25
Какое правило по теме «Совместимость версий» можно безопасно перенести из примера в реальный проект?
Надёжное обобщение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость не проверяют интеграционным тестом на целевой базе.
Надёжное обобщение: dbProviderFactory выравнивает синтаксис, типы и имена параметров между СУБД, поэтому интеграционный тест на каждой базе не нужен.
Надёжное обобщение: поставщики и версии СУБД не различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.
Надёжное обобщение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на любой совместимой базе.
Надёжное обобщение: поставщики и версии СУБД различаются синтаксисом, типами, именованием параметров и возможностями; совместимость проверяют интеграционным тестом на целевой базе.