2015-07-25 6 views
1

Привет всем в эти дни я готовлю экзамен ISTQB, и я застрял в одном из вопросов.заявление и ответвление филиала

mock exam QUESTION 16

Вопрос (первоначально копировать вставить) здесь:

Учитывая следующий код, который является истинным:

IF A > B THEN 
    C = A – B 
ELSE 
    C = A + B 
ENDIF 
Read D 
IF C = D 
    Then Print “Error” 
ENDIF 

а.1 тест для покрытия заявления, 3 для освещения филиала

b.2 испытания для покрытия заявлений, 2 для покрытия филиала

c.2 тесты для покрытия заявлений. 3 для освещения филиала

D.3 тесты для покрытия заявления, 3 для покрытия филиала

Я решил как 3 тестов для покрытия ветви (1. Если A> B верно 2.Если A> B ложно 3 если C = D истинно) и 3 для покрытия оператора (C = A + B, C = AB и Error).

Однако ответ говорит, что 2 теста для покрытия заявлений и 2 для покрытия филиалов. Может кто-нибудь, пожалуйста, объясните мне.

+0

Правильно отформатируйте код. – dramzy

+0

@RespectMyAuthoritah сделано! – limonik

ответ

2

Ветвь освещения ::

покрытия Отрасль является обязательным требованием, что для каждой ветви в программе (например, если заявления, петли), каждая ветвь была выполнена, по меньшей мере один раз во время тестирования , (Это иногда также описано, как говорят, что каждое условие перехода должно быть правдой, по крайней мере один раз, и ложна хотя бы один раз во время тестирования.)

Заявление Покрытие ::

Заявление покрытия представляет собой метод тестирования белого ящика, который включает в себя выполнение всех инструкций хотя бы один раз в исходном коде. Это метрика, которая используется для вычисления и измерения количества операторов в исходном коде, который был выполнен.

Итак, попробуйте сделать номера строк в коде ::

1. READ A --> Added just to make it more clear 
2. READ B --> Added just to make it more clear 
3. IF A > B 
4.  THEN C = A – B 
5. ELSE 
6.  C = A + B ENDIF 
7. Read D 
8. IF C = D 
9.  Then Print “Error” ENDIF 
10. END OF PROGRAM 

Таким образом, принимая во внимание вышеприведенные определения и принятия некоторых тестовых случаев ::

Test Case 1 :: A = 10 , B = 11, D = 21

отчетность Покрытие = 1, 2, 3, 5, 6, 7, 8, 9, 10.

Пример теста 2 :: А = 11, В = 10, D = 10

отчетность Покрытие = 1, 2, 3, 4, 7, 8, 10.

Таким образом, если вы посмотрите на приведенные заявления, вы поймете, что для охвата всех заявлений требуется всего 2 тестовых примера.

Теперь, приходя в Branch Покрытие

Если вы делаете блок-схему программы из кода выше, и происходит по приведенному выше определению, есть филиал в заявлении 3 и в заявлении 8, так как они if Условия поэтому, они могут быть true или false следовательно ветка есть. Таким образом, определение «Отраслевое покрытие» говорит о необходимости прохождения каждой ветви в программе.

Поскольку от 3 я могу пойти в любой 4 или 5 (на 2 ветви), скажем, филиал 3 к 4 является 3L и ветви 3 к 5 является 3R (L и R означают левый и правый). Аналогично для заявления 8, 2 ответвления могут быть 8 до 10 (если C != D) и 8 до 9, а затем 10. Пусть эти две ветви тогда называются 8L и 8R соответственно. (Просто именование для понимания)

Таким образом, из Test Case 2 вы можете понять, что вы покрыли вашу ветку 3L и 8R от Case Test 1, вы можете понять, что вы покрыли вашу ветку 3R и 8L

Итак, всего за 2 тестовых примера вы охватили все свои филиалы и заявления.

Надеюсь, это поможет вам очистить! Пытался изо всех сил. На всякий случай, когда вы не понимаете, попробуйте сделать график потока программ и перечитайте ответ.

EDIT :: В описании вопроса вы цитируете

Я решил как 3 ветви (1. Если A> B верно 2.Если A> B ложно 3.если C = D истинно) и 3 оператора (C = A + B, C = A-B и Error).

Каждая строка, которую я пронумеровала, является заявлением, а не только теми, что вы написали. Кроме того, для каждого if существует 4 филиала 2. Дело в том, чтобы охватить каждую ветвь и каждое утверждение тестовыми примерами. И вопрос также спрашивает, сколько тестовых случаев необходимо, а не количество ветвей и заявлений!

+0

Я понял это с вашим простым и полезным примером. Большое вам спасибо за вашу помощь. – limonik

1

Он запрашивает количество тестов, необходимых для покрытия филиалов и операторов, а не количество операторов и филиалов.

Для критериев покрытия заявлений каждое утверждение должно выполняться как минимум один раз, поэтому должны быть достигнуты все утверждения, относящиеся к условным и внешним условиям. Для этого нам нужно условие (A> B), чтобы однократно оценивать значение true, а другое - false и условие (C = D) для оценки true. Это можно сделать только с двумя тестами, поскольку два условия (A> B и C = D) не зависят друг от друга. Например, (A = 2, B = 1, C = 1, D = 1) и (A = 1, B = 2, C = 3, D = 3) являются двумя тестовыми примерами, которые удовлетворяли бы охвату заявления.

Для покрытия филиалов нам необходимо, чтобы каждое условие оценивалось как true и false. Опять же, это можно сделать с двумя тестами здесь, потому что условия независимы друг от друга, поэтому, например, эти два теста: (A = 2, B = 1, C = 1, D = 1) и (A = 1, B = 2, C = 3, D = 6) будут соответствовать критериям охвата ветви, поскольку как A> B, так и C = D оцениваются как истинные и ложные, по крайней мере, один раз в нашем тестовом наборе.