Jump to content

Линейная кодовая последовательность и переход

Линейная последовательность и переход кода ( LCSAJ ), в широком смысле, — метод программного анализа, используемый для идентификации структурных единиц в тестируемом коде. Его основное использование связано с динамическим анализом программного обеспечения, чтобы помочь ответить на вопрос «Какого объема тестирования достаточно?». [1] Динамический анализ программного обеспечения используется для измерения качества и эффективности данных тестирования программного обеспечения, при этом количественная оценка выполняется в единицах структурных единиц тестируемого кода. При использовании для количественной оценки структурных единиц, задействованных в заданном наборе тестовых данных, динамический анализ также называется анализом структурного покрытия .

В более узком смысле LCSAJ — это четко определенная линейная область программного кода. В этом смысле LCSAJ также называют JJ-path , что означает путь перехода.

Метод анализа LCSAJ был разработан профессором Майклом Хеннеллом для оценки качества математических библиотек, от которых зависели его области ядерной физики исследования в в Ливерпульском университете . [2] [3] Позже профессор Хеннелл основал компанию Liverpool Data Research Associates (LDRA) для коммерциализации испытательного стенда программного обеспечения, созданного для этой работы, в результате чего был создан продукт LDRA Testbed .

LCSAJ был представлен в 1976 году. [4] теперь также называется путем перехода к переходу (JJ-путь). [5] Его также назвали «Вкладом Ливерпуля в глупые аббревиатуры и шутки». [ нужна ссылка ]

Определение и характеристики LCSAJ как кодового региона

[ редактировать ]

LCSAJ — это фрагмент пути программного кода, состоящий из последовательности кода (линейной кодовой последовательности), за которой следует переход потока управления, и состоит из следующих трех элементов: [6]

  • начало линейной последовательности исполняемых операторов
  • конец линейной последовательности
  • целевая линия, на которую передается поток управления в конце линейной последовательности.

В отличие от (максимальных) базовых блоков , LCSAJ могут перекрываться друг с другом, поскольку переход (выход) может произойти в середине LCSAJ, хотя в середине базового блока он не допускается. В частности, условные переходы генерируют перекрывающиеся LCSAJ: один, который проходит до момента, когда условие оценивается как ложное, и другой, который заканчивается в переходе, когда условие оценивается как истинное (пример, приведенный ниже в этой статье, иллюстрирует такое возникновение). Согласно монографии 1986 года, LCSAJ обычно были в четыре раза больше базовых блоков. [7]

Формальное определение LCSAJ можно дать с точки зрения основных блоков следующим образом: [8]

последовательность из одного или нескольких последовательно пронумерованных базовых блоков p , ( p +1), ..., q кодовой единицы, за которой следует переход потока управления либо из кода [единицы], либо к базовому блоку с номером r , где r ≠( q +1), и либо p = 1, либо существует переход потока управления на блок p из какого-либо другого блока в модуле. (Базовый блок, к которому может быть выполнен такой переход потока управления, называется целью перехода [LCSAJ].)

Согласно учебнику Йоргенсена 2013 года, за пределами Великобритании и литературы ISTQB то же самое понятие называется DD-path . [9] [ сомнительно обсудить ]

Коэффициент эффективности теста

[ редактировать ]

Показатели анализа покрытия используются для оценки объема проведенного тестирования. Самый основной показатель — это доля выполненных операторов, Коэффициент эффективности тестирования 1 (TER1): [10]

Также могут быть сгенерированы показатели покрытия более высокого уровня, в частности: [11]

Эти показатели удовлетворяют чистой иерархии: при достижении TER3 = 100% следует, что TER2 = 100% и TER1 = 100% также были достигнуты.

Обе метрики TER1 и TER2 использовались в начале 1970-х годов, а третья датируется концом 1970-х годов. Требование достижения TER1 = 100% было уровнем, первоначально выбранным для стандарта авионики DO-178, пока в 1992 году он не был дополнен дополнительным требованием MCDC ( модифицированное покрытие условий/решений ). [12] Более высокие уровни TER3 = 100% были предусмотрены для многих других проектов, включая аэрокосмическую, телефонную и банковскую сферу. [ нужна ссылка ] Одна из практических проблем использования TER3 заключается в том, что многие LCSAJ никогда не могут быть выполнены из-за содержащихся в них конфликтующих условий.

Рассмотрим следующий код C:

#include    <stdlib.h>
#include    <string.h>
#include    <math.h>

#define MAXCOLUMNS  26
#define MAXROW      20
#define MAXCOUNT    90
#define ITERATIONS  750

int main (void)
{
    int count = 0, totals[MAXCOLUMNS], val = 0;

    memset (totals, 0, MAXCOLUMNS * sizeof(int));

    count = 0;
    while ( count < ITERATIONS )
    {
        val = abs(rand()) % MAXCOLUMNS;
        totals[val] += 1;
        if ( totals[val] > MAXCOUNT )
        {
            totals[val] = MAXCOUNT;
        }
        count++;
    }
    
    return (0);

}

Из этого примера видно, что базовый блок, идентифицируемый тройкой LCSAJ, может охватывать точку принятия решения, отражая условия, которые должны иметь место для выполнения LCSAJ. Например, LCSAJ 2 для приведенного выше примера включает в себя while заявление, в котором условие (count < ITERATIONS) оценивается как истина.

С каждой строкой кода связана «плотность» LCSAJ; строка 17, например, появляется в 6 уникальных LCSAJ, т.е. ее плотность LCSAJ равна 6. Это полезно при оценке удобства сопровождения кода; Если необходимо изменить строку кода, то плотность указывает на то, на сколько LCSAJ повлияет это изменение.

Уровень покрытия TER3 = 100% будет достигнут, если используемые тестовые данные вызовут выполнение каждого из этих LCSAJ хотя бы один раз.

  1. ^ М.А.Хеннелл, Д.Хедли и М.Р.Вудворд, «Количественная оценка эффективности тестов программ Algol 68», Материалы конференции Strathclyde ALGOL 68, 1977, стр. 36–41, ISSN 0362-1340
  2. ^ М. А. Хеннелл, Экспериментальный стенд для численного программного обеспечения. {Я}. {Фортран} , Компьютерный журнал 21 (4): 333–336, ноябрь 1978 г.
  3. ^ М. А. Хеннелл и Д. Хедли, Экспериментальный стенд для численного программного обеспечения. {II}. {АЛГОЛ 68} , Компьютерный журнал 22(1):53--56, февраль 1979 г.
  4. ^ М. А. Хеннелл, М. Р. Вудворд и Д. Хедли, «Об анализе программ», Information Processing Letters, 5 (5), стр. 136–140, 1976 г.
  5. ^ М. Р. Вудворд, М. А. Хеннелл, «О взаимосвязи между двумя критериями покрытия потока управления: всеми JJ-путями и MCDC», Information and Software Technology 48 (2006), стр. 433–440.
  6. ^ М.А.Хеннелл, Д.Хедли и И.Дж.Ридделл, «Оценка класса программных инструментов», Материалы 7-й Международной конференции по разработке программного обеспечения, март 1984 г., стр. 266–277. ISSN 0270-5257
  7. ^ Мартин А. Ульд и Чарльз Анвин, изд. (1986). Тестирование в разработке программного обеспечения . Издательство Кембриджского университета. п. 102. ИСБН  978-0-521-33786-1 .
  8. ^ Гроенда, Хеннинг (2013). Сертификация технических характеристик компонентов программного обеспечения . КИТ Научное издательство. стр. 198–200. ISBN  978-3-7315-0080-3 . цитирую из Йейтс, Д.Ф. (2009). «Включение, разделение, JJ-пути и тестирование структурированного пути: исправление». Тестирование, проверка и надежность программного обеспечения . 19 (3): 199–213. дои : 10.1002/stvr.400 .
  9. ^ Пол С. Йоргенсен (2013). Тестирование программного обеспечения: подход мастера, четвертое издание . ЦРК Пресс. п. 136. ИСБН  978-1-4665-6068-0 .
  10. ^ JRBrown, «Практическое применение автоматизированных программных средств», отчет TRW № TRW-SS-72-05, представленный на WESCON, 1972 г.
  11. ^ М.Р.Вудворд, Д.Хедли и М.А.Хеннелл, «Опыт анализа путей и тестирования программ», Транзакции IEEE по разработке программного обеспечения, Vol. 6, № 3, стр. 278–286, май 1980 г.
  12. ^ Вопросы программного обеспечения при сертификации бортовых систем и оборудования - RTCA/DO-178B, RTCA Inc., Вашингтон, округ Колумбия, декабрь 1992 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 23c6dc21c2d0644546507d9c771eecbb__1692757080
URL1:https://arc.ask3.ru/arc/aa/23/bb/23c6dc21c2d0644546507d9c771eecbb.html
Заголовок, (Title) документа по адресу, URL1:
Linear code sequence and jump - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)