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