Jump to content

Параллельное тестирование

Исследовать [1] и литература [2] по параллельному тестированию и параллельному тестированию обычно основное внимание уделяется тестированию программного обеспечения и систем, использующих параллельные вычисления . Целью, как и в большинстве случаев тестирования программного обеспечения , является понимание поведения и производительности программной системы, использующей параллельные вычисления, в частности, оценка стабильности системы или приложения во время нормальной деятельности.

Исследования и изучение параллелизма программ начались в 1950-х годах. [3] с исследованиями и изучением параллелизма программ тестирования, появившимися в 1960-х годах. [4] Примерами проблем, которые может выявить параллельное тестирование, являются неправильный доступ к общей памяти и неожиданная последовательность выполнения сообщений или потоков. [5] : 2  [1] конфликтов за ресурсы разрешение , планирование , предотвращение взаимоблокировок , инверсия приоритетов и состояния гонки . Также рассматриваются [6] : 745 

Избранная история и подходы к тестированию параллелизма

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

Подходы к параллельному тестированию могут быть ограниченными на уровне модульного тестирования вплоть до уровня системного тестирования. [7]

Некоторые подходы к исследованию и применению параллельного тестирования программ/программного обеспечения:

  • Выполните тест один раз. [8] : 63 
Это считалось неэффективным для тестирования параллелизма в недетерминированной системе и было эквивалентно тестированию последовательной непараллельной программы в системе.
  • Выполнение одной и той же тестовой последовательности несколько раз. [8] : 63 
Считается вероятным возникновение некоторых проблем при недетерминированном выполнении программного обеспечения.
Позже это стало называться недетерминированным тестированием. [9]
  • Детерминированное тестирование. [8] : 63 
Это подход к переводу системы в определенное состояние, чтобы код мог выполняться в известном порядке.
  • Тестирование доступности [9] [10]
Попытка протестировать комбинации последовательностей синхронизации для указанного ввода (доступ к общей переменной не поврежден, эффективное тестирование переменных условий гонки). Последовательность обычно выводится для выполнения недетерминированного теста.
  • Структурные подходы / Статический анализ
Анализ структуры кода и инструменты статического анализа.
Примером был эвристический подход. [11]
Это привело к разработке средства проверки кода, например jlint. [12] Исследование и сравнение статического анализа и средств проверки кода на наличие ошибок параллелизма. [13]
См. также Список инструментов для статического анализа кода.
  • Многопользовательский подход
Это подход к тестированию параллельной работы программ путем рассмотрения доступа нескольких пользователей, одновременно обслуживающих разных пользователей или задачи. [2] [6] : 745 

Тестирование программного обеспечения и параллельной работы системы не следует путать со стресс-тестированием , которое обычно связано с загрузкой системы за установленными пределами. Тестирование параллельных программ может выявить проблемы, когда система работает в установленных пределах. Большинство описанных выше подходов не основаны на перегрузке системы. Немного литературы [6] : 745  утверждает, что тестирование параллелизма является обязательным условием стресс-тестирования.

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

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

Исследование 2008 года [11] проанализировал базы данных ошибок в выбранном программном обеспечении с открытым исходным кодом. Считалось, что это первое реальное исследование ошибок параллелизма. 105 ошибок были классифицированы как ошибки параллелизма и проанализированы, разделены на 31 ошибку, связанную с взаимоблокировкой, и 74 ошибки, не связанные с взаимоблокировкой. В исследовании было сделано несколько выводов для возможного последующего наблюдения и расследования:

  • Примерно треть ошибок параллелизма вызывают сбои или зависания программ.
  • Большинство ошибок параллелизма, не связанных с тупиком, связаны с атомарностью или нарушением порядка.
Т.е. сосредоточение внимания на атомарности (защищенное использование общих данных) или последовательности потенциально позволит обнаружить большинство ошибок, не связанных с взаимоблокировкой.
  • Большинство ошибок параллелизма связаны с 1 или 2 потоками.
Т.е. интенсивное одновременное использование/использование не является причиной этих ошибок. Есть предположение, что парное тестирование может быть эффективным для выявления ошибок такого типа.
  • Более 20% (7/31) ошибок тупиковой ситуации возникали в одном потоке.
  • Большинство ошибок взаимоблокировки параллелизма (30/31) затрагивали только один или два ресурса.
Подразумевается, что парное тестирование с точки зрения использования ресурсов может применяться для выявления взаимоблокировок.

См. также

[ редактировать ]
  1. ^ Jump up to: а б Ван, Чао; Саид, Махмуд; Гупта, Аарти (21–28 мая 2011 г.). Систематическое параллельное тестирование на основе покрытия . ICSE '11 Материалы 33-й Международной конференции по программной инженерии. Вайкики. стр. 221–230.
  2. ^ Jump up to: а б Дастин, Эльфрида (28 декабря 2002 г.). Эффективное тестирование программного обеспечения: 50 способов улучшить тестирование программного обеспечения . Эддисон-Уэсли Лонгман. п. 186. ИСБН  0201794292 .
  3. ^ Лейнер, Алабама; Нотц, Вашингтон; Смит, Дж. Л.; Вайнбергер, А. (июль 1959 г.). «ПИЛОТ — новая многокомпьютерная система» . Журнал АКМ . 6 (3): 313–335. дои : 10.1145/320986.320987 . S2CID   19867617 .
  4. ^ Дейкстра, Эдсгер В. (май 1968 г.). «Структура «ТО»-мультипрограммной системы» . Коммуникации АКМ . 11 (5): 341–346. дои : 10.1145/363095.363143 . S2CID   2021311 .
  5. ^ «Параллельное тестирование программного обеспечения: систематический обзор» (PDF) . Архивировано из оригинала 24 сентября 2015 года . Проверено 4 марта 2014 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  6. ^ Jump up to: а б с Биндер, Роберт В. (1999). Тестирование объектно-ориентированных систем: модели, шаблоны и инструменты . Эддисон-Уэсли Лонгман. ISBN  0-201-80938-9 .
  7. ^ Мело, Сильвана Морита; Соуза, Симоне ду Росио Сенгер де; Соуза, Пауло Сержиу Лопес де; Карвер, Джеффри С. (2017). Как тестировать параллельное ПО: подход к выбору методов тестирования . Конференция по системам, программированию, языкам и приложениям: Программное обеспечение для человечества — SPLASH.
  8. ^ Jump up to: а б с К.С., Тай (20–22 сентября 1989 г.). Тестирование параллельного программного обеспечения . Материалы тринадцатой ежегодной международной конференции по компьютерному программному обеспечению и приложениям. Орландо, Флорида, США, США. стр. 62–64.
  9. ^ Jump up to: а б Хван, Гван-Хван; Тай, Го-Чунг; Хуан, Тин-Лу (1995). «Тестирование достижимости: подход к тестированию параллельного программного обеспечения». Международный журнал программной инженерии и инженерии знаний . 5 (4): 493–510. дои : 10.1142/S0218194095000241 .
  10. ^ Ци, Сяофан; Ли, Юэрань (23–24 ноября 2018 г.). Параллельное тестирование достижимости на основе Hadoop MapReduce . Международная конференция SATE 2018. Шэньчжэнь, Гуандун, Китай. стр. 173–184. дои : 10.1007/978-3-030-04272-1_11 .
  11. ^ Jump up to: а б Лу, Шан; Пак, Соён; Со, Ынсу; Чжоу, Юаньюань (1–5 марта 2008 г.). Учимся на ошибках: комплексное исследование характеристик ошибок параллелизма в реальном мире . ASPLOS XIII Материалы 13-й международной конференции по архитектурной поддержке языков программирования и операционных систем. Сиэтл, Вашингтон, США. стр. 329–339.
  12. ^ Арто, Сирилл; Бьер, Армин (27–28 августа 2001 г.). Применение статического анализа к крупномасштабным многопоточным программам Java . Материалы Австралийской конференции по разработке программного обеспечения 2001 г. Канберра, АКТ, Австралия, Австралия. стр. 68–75.
  13. ^ Мансур, Нуман; Мунир, Хусан; Моайед, Мисах (27–30 ноября 2012 г.). Сравнение инструментов статического анализа для поиска ошибок параллелизма . 2012 23-й Международный симпозиум IEEE по инженерным семинарам по обеспечению надежности программного обеспечения. Даллас, Техас, США. стр. 129–133.

Общие ссылки

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fbe1bba8a5562143e022e1b02b239a85__1691906100
URL1:https://arc.ask3.ru/arc/aa/fb/85/fbe1bba8a5562143e022e1b02b239a85.html
Заголовок, (Title) документа по адресу, URL1:
Concurrent testing - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)