Published January 1, 2021 | Version v1
Publication Open

Probabilistic and Systematic Coverage of Consecutive Test-Method Pairs for Detecting Order-Dependent Flaky Tests

  • 1. Peking University
  • 2. University of Illinois Urbana-Champaign

Description

Abstract Software developers frequently check their code changes by running a set of tests against their code. Tests that can nondeterministically pass or fail when run on the same code version are called flaky tests . These tests are a major problem because they can mislead developers to debug their recent code changes when the failures are unrelated to these changes. One prominent category of flaky tests is order-dependent (OD) tests, which can deterministically pass or fail depending on the order in which the set of tests are run. By detecting OD tests in advance, developers can fix these tests before they change their code. Due to the high cost required to explore all possible orders ( n ! permutations for n tests), prior work has developed tools that randomize orders to detect OD tests. Experiments have shown that randomization can detect many OD tests, and that most OD tests depend on just one other test to fail. However, there was no analysis of the probability that randomized orders detect OD tests. In this paper, we present the first such analysis and also present a simple change for sampling random test orders to increase the probability. We finally present a novel algorithm to systematically explore all consecutive pairs of tests, guaranteeing to detect all OD tests that depend on one other test, while running substantially fewer orders and tests than simply running all test pairs.

⚠️ This is an automatic machine translation with an accuracy of 90-95%

Translated Description (Arabic)

يقوم مطورو البرامج التجريدية في كثير من الأحيان بالتحقق من تغييرات التعليمات البرمجية الخاصة بهم عن طريق إجراء مجموعة من الاختبارات مقابل التعليمات البرمجية الخاصة بهم. الاختبارات التي يمكن أن تنجح أو تفشل بشكل غير محدد عند تشغيلها على نفس إصدار الكود تسمى الاختبارات القشرية. تمثل هذه الاختبارات مشكلة كبيرة لأنها يمكن أن تضلل المطورين لتصحيح تغييرات التعليمات البرمجية الأخيرة عندما تكون الإخفاقات غير مرتبطة بهذه التغييرات. إحدى الفئات البارزة للاختبارات المتقشرة هي الاختبارات المعتمدة على الترتيب (OD)، والتي يمكن أن تنجح أو تفشل بشكل حتمي اعتمادًا على الترتيب الذي يتم به تشغيل مجموعة الاختبارات. من خلال اكتشاف اختبارات التطوير التنظيمي مسبقًا، يمكن للمطورين إصلاح هذه الاختبارات قبل تغيير التعليمات البرمجية الخاصة بهم. نظرًا لارتفاع التكلفة المطلوبة لاستكشاف جميع الطلبات المحتملة ( ن ! التباديل للاختبارات ن)، فقد طور العمل السابق أدوات تقوم بترتيب الطلبات عشوائيًا للكشف عن اختبارات OD. أظهرت التجارب أن التوزيع العشوائي يمكن أن يكتشف العديد من اختبارات الجرعة الزائدة، وأن معظم اختبارات الجرعة الزائدة تعتمد على اختبار آخر واحد فقط للفشل. ومع ذلك، لم يكن هناك تحليل لاحتمال أن تكشف الطلبات العشوائية عن اختبارات الجرعة الزائدة. في هذه الورقة، نقدم أول تحليل من هذا القبيل ونقدم أيضًا تغييرًا بسيطًا لأخذ عينات من أوامر الاختبار العشوائية لزيادة الاحتمال. نقدم أخيرًا خوارزمية جديدة لاستكشاف جميع أزواج الاختبارات المتتالية بشكل منهجي، مما يضمن اكتشاف جميع اختبارات التطوير التنظيمي التي تعتمد على اختبار واحد آخر، مع تشغيل أوامر واختبارات أقل بكثير من مجرد تشغيل جميع أزواج الاختبارات.

Translated Description (French)

Les développeurs de logiciels abstraits vérifient fréquemment leurs modifications de code en exécutant un ensemble de tests par rapport à leur code. Les tests qui peuvent passer ou échouer de manière non déterministe lorsqu'ils sont exécutés sur la même version de code sont appelés tests floconneux. Ces tests sont un problème majeur car ils peuvent induire les développeurs en erreur pour déboguer leurs modifications de code récentes lorsque les échecs ne sont pas liés à ces modifications. Une catégorie importante de tests floconneux est les tests dépendants de l'ordre (DO), qui peuvent de manière déterministe réussir ou échouer en fonction de l'ordre dans lequel l'ensemble de tests est exécuté. En détectant les tests OD à l'avance, les développeurs peuvent corriger ces tests avant de modifier leur code. En raison du coût élevé requis pour explorer toutes les commandes possibles ( n ! permutations pour n tests), des travaux antérieurs ont développé des outils qui randomisent les commandes pour détecter les tests de DO. Des expériences ont montré que la randomisation peut détecter de nombreux tests de DO, et que la plupart des tests de DO dépendent d'un seul autre test pour échouer. Cependant, il n'y avait pas d'analyse de la probabilité que les commandes randomisées détectent les tests de DO. Dans cet article, nous présentons la première analyse de ce type et présentons également un changement simple pour l'échantillonnage des ordres de test aléatoires afin d'augmenter la probabilité. Nous présentons enfin un nouvel algorithme pour explorer systématiquement toutes les paires de tests consécutives, garantissant de détecter tous les tests de DO qui dépendent d'un autre test, tout en exécutant sensiblement moins de commandes et de tests que de simplement exécuter toutes les paires de tests.

Translated Description (Spanish)

Resumen Los desarrolladores de software comprueban con frecuencia sus cambios de código ejecutando un conjunto de pruebas contra su código. Las pruebas que pueden pasar o fallar de manera no determinista cuando se ejecutan en la misma versión de código se denominan pruebas escamosas. Estas pruebas son un problema importante porque pueden engañar a los desarrolladores para que depuren sus cambios de código recientes cuando los fallos no están relacionados con estos cambios. Una categoría prominente de pruebas escamosas son las pruebas dependientes del orden (DO), que pueden pasar o fallar de manera determinista dependiendo del orden en que se ejecute el conjunto de pruebas. Al detectar las pruebas de OD por adelantado, los desarrolladores pueden corregir estas pruebas antes de que cambien su código. Debido al alto costo requerido para explorar todos los pedidos posibles ( n ! permutaciones para n pruebas), el trabajo previo ha desarrollado herramientas que aleatorizan los pedidos para detectar pruebas de OD. Los experimentos han demostrado que la aleatorización puede detectar muchas pruebas de DO, y que la mayoría de las pruebas de DO dependen de solo otra prueba para fallar. Sin embargo, no hubo análisis de la probabilidad de que las órdenes aleatorizadas detecten pruebas de DO. En este artículo, presentamos el primer análisis de este tipo y también presentamos un cambio simple para muestrear órdenes de pruebas aleatorias para aumentar la probabilidad. Finalmente, presentamos un algoritmo novedoso para explorar sistemáticamente todos los pares consecutivos de pruebas, garantizando la detección de todas las pruebas de DO que dependen de otra prueba, mientras se ejecutan sustancialmente menos órdenes y pruebas que simplemente ejecutar todos los pares de pruebas.

Files

978-3-030-72016-2_15.pdf.pdf

Files (681.6 kB)

⚠️ Please wait a few minutes before your translated files are ready ⚠️ Note: Some files might be protected thus translations might not work.
Name Size Download all
md5:8116581716ad41df44c0128260087327
681.6 kB
Preview Download

Additional details

Additional titles

Translated title (Arabic)
التغطية الاحتمالية والمنهجية لأزواج طريقة الاختبار المتتالية للكشف عن الاختبارات المتقشرة المعتمدة على النظام
Translated title (French)
Couverture probabiliste et systématique des paires consécutives de méthodes de test pour la détection des tests floconneux dépendants de l'ordre
Translated title (Spanish)
Cobertura probabilística y sistemática de pares de métodos de prueba consecutivos para detectar pruebas escamosas dependientes de órdenes

Identifiers

Other
https://openalex.org/W3136563894
DOI
10.1007/978-3-030-72016-2_15

GreSIS Basics Section

Is Global South Knowledge
Yes
Country
China

References

  • https://openalex.org/W1976954202
  • https://openalex.org/W2014515160
  • https://openalex.org/W2026926213
  • https://openalex.org/W2040923543
  • https://openalex.org/W2051742761
  • https://openalex.org/W2073655054
  • https://openalex.org/W2075699551
  • https://openalex.org/W2079811826
  • https://openalex.org/W2107500604
  • https://openalex.org/W2117487010
  • https://openalex.org/W2170224888
  • https://openalex.org/W2589663975
  • https://openalex.org/W2591823109
  • https://openalex.org/W2594511738
  • https://openalex.org/W2786619380
  • https://openalex.org/W2901387825
  • https://openalex.org/W2951170114
  • https://openalex.org/W2957454295
  • https://openalex.org/W2968086426
  • https://openalex.org/W3040168066
  • https://openalex.org/W3042770293
  • https://openalex.org/W3090144865
  • https://openalex.org/W3102799430
  • https://openalex.org/W3110368543
  • https://openalex.org/W4233654496
  • https://openalex.org/W4245116308