{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T12:31:52Z","timestamp":1787574712962,"version":"build-2736575974"},"reference-count":26,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T00:00:00Z","timestamp":1787529600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T00:00:00Z","timestamp":1787529600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100007374","name":"Universidade Federal De Minas Gerais","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100007374","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2027,2]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    Property-Based Testing (PBT) automatically generates test inputs to validate properties of programs, shifting developers\u2019 effort from writing examples to specifying invariants. While the technique has gained popularity in Python through the Hypothesis framework, little is known about how developers adopt and use it in practice. This paper reports on three empirical studies. First, we analyzed 367 PBTs from 244 Python projects, classifying them into nine property categories and quantifying their use of Hypothesis constructs. We found that\n                    <jats:italic>Test Oracle<\/jats:italic>\n                    properties dominate (29.97%), and that PBTs are generally concise (median 14 LOC), relying heavily on built-in strategies (75.20%), but also on external (22.62%) and internal (17.17%) ones. Second, we studied 213 Stack Overflow posts tagged with PBT, revealing that the main challenges developers face concern data generation strategies (36.62%), especially for composite and tabular data (24.36%). Finally, we evaluated Ghostwriter, Hypothesis\u2019s automated test generator, against 203 tests from our dataset; only 18.23% were fully automatable, while most required partial adaptation (30.05%) or were incompatible (51.72%). Together, our findings provide the largest empirical characterization of PBT in Python to date, highlight developers\u2019 difficulties in adopting the technique, and expose limitations of current tool support.\n                  <\/jats:p>","DOI":"10.1007\/s10664-026-10953-w","type":"journal-article","created":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T12:14:15Z","timestamp":1787573655000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Property-based testing in Python: empirical insights"],"prefix":"10.1007","volume":"32","author":[{"given":"Isadora","family":"de Oliveira","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Arthur Lisboa","family":"Corgozinho","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Henrique","family":"Rocha","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8180-7548","authenticated-orcid":false,"given":"Marco Tulio","family":"Valente","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2026,8,24]]},"reference":[{"key":"10953_CR1","doi-asserted-by":"crossref","unstructured":"Abdi M, Rocha H, Demeyer S (2022) Small-Amp: Test amplification in a dynamically typed language. Empirical Software Engineering (EMSE) 27(128)","DOI":"10.1007\/s10664-022-10169-8"},{"key":"10953_CR2","doi-asserted-by":"crossref","unstructured":"Aichernig BK, Havelund K (2023) AI-assisted programming with test-based refinement. In: International Conference on Bridging the Gap between AI and Reality (AISoLA), pp 385\u2013411","DOI":"10.1007\/978-3-031-73741-1_24"},{"key":"10953_CR3","doi-asserted-by":"crossref","unstructured":"Arts T, Hughes J, Johansson J, Wiger U (2006) Testing telecoms software with Quviq QuickCheck. In: ACM SIGPLAN Workshop on Erlang, pp 2\u201310","DOI":"10.1145\/1159789.1159792"},{"key":"10953_CR4","doi-asserted-by":"crossref","unstructured":"Bosu A, Corley CS, Heaton D, Chatterji D, Carver JC, Kraft NA (2013) Building reputation in StackOverflow: An empirical investigation. In: 10th Working Conference on Mining Software Repositories (MSR), pp 89\u201392","DOI":"10.1109\/MSR.2013.6624013"},{"key":"10953_CR5","doi-asserted-by":"crossref","unstructured":"Chen Z, Rizkallah C, O\u2019Connor L, Susarla P, Klein G, Heiser G, Keller G (2022) Property-based testing: Climbing the stairway to verification. In: 15th ACM SIGPLAN International Conference on Software Language Engineering (SLE), pp 84\u201397","DOI":"10.1145\/3567512.3567520"},{"key":"10953_CR6","doi-asserted-by":"crossref","unstructured":"Claessen K, Hughes J (2000) QuickCheck: a lightweight tool for random testing of Haskell programs. In: 5th ACM SIGPLAN International Conference on Functional Programming (ICFP), pp 268\u2013279","DOI":"10.1145\/351240.351266"},{"key":"10953_CR7","doi-asserted-by":"crossref","unstructured":"Corgozinho AL, Valente MT, Rocha H (2023) How developers implement property-based tests. In: IEEE International Conference on Software Maintenance and Evolution (ICSME), pp 380\u2013384","DOI":"10.1109\/ICSME58846.2023.00049"},{"key":"10953_CR8","doi-asserted-by":"crossref","unstructured":"Coutinho JCS, Andrade WL, Machado P (2023) Implementing exploratory testing in an agile context: a study based on design science research. In: 8th Brazilian Symposium on Systematic and Automated Software Testing (SAST), pp 67\u201376","DOI":"10.1145\/3624032.3624042"},{"key":"10953_CR9","doi-asserted-by":"crossref","unstructured":"Durelli VH, Monteiro R, Durelli RS, Endo AT, Ferrari FC, Souza SR (2024) Property-based testing for machine learning models. In: Symposium on Systematic and Automated Software Testing (SAST), pp 39\u201348","DOI":"10.5753\/sast.2024.3791"},{"key":"10953_CR10","doi-asserted-by":"crossref","unstructured":"Etemadi K, Sirjani M, Helali Moghadam M, Strandberg P, Pettersson P (2025) LLM-based property-based test generation for guardrailing cyber-physical systems. In: International Conference on Bridging the Gap between AI and Reality (AISoLA), pp 18\u201346","DOI":"10.1007\/978-3-032-07132-3_3"},{"issue":"4","key":"10953_CR11","doi-asserted-by":"publisher","first-page":"74","DOI":"10.1145\/263244.263267","volume":"22","author":"G Fink","year":"1997","unstructured":"Fink G, Bishop M (1997) Property-based testing: a new approach to testing for assurance. ACM SIGSOFT Software Engineering Notes (SEN) 22(4):74\u201380","journal-title":"ACM SIGSOFT Software Engineering Notes (SEN)"},{"issue":"3","key":"10953_CR12","doi-asserted-by":"publisher","first-page":"613","DOI":"10.1177\/001316447303300309","volume":"33","author":"JL Fleiss","year":"1973","unstructured":"Fleiss JL, Cohen J (1973) The Equivalence of Weighted Kappa and the Intraclass Correlation Coefficient as Measures of Reliability. Educational and Psychological Measurement (EPM) 33(3):613\u2013619","journal-title":"Educational and Psychological Measurement (EPM)"},{"key":"10953_CR13","doi-asserted-by":"crossref","unstructured":"Goldstein H, Cutler JW, Dickstein D, Pierce BC, Head A (2024) Property-based testing in practice. In: 46th International Conference on Software Engineering (ICSE), pp 1\u201313","DOI":"10.1145\/3597503.3639581"},{"key":"10953_CR14","doi-asserted-by":"crossref","unstructured":"Hatfield-Dodds Z (2020) Falsify your Software: validating scientific code with property-based testing. In: 19th python in science conference, pp 162\u2013165","DOI":"10.25080\/Majora-342d178e-016"},{"key":"10953_CR15","doi-asserted-by":"crossref","unstructured":"Kracht JS, Petrovic JZ, Walcott-Justice KR (2014) Empirically evaluating the quality of automatically generated and manually written test suites. In: 14th International Conference on Quality Software (SWQD), pp 256\u2013265","DOI":"10.1109\/QSIC.2014.33"},{"key":"10953_CR16","doi-asserted-by":"crossref","unstructured":"L\u00f6scher A, Sagonas K (2017) Targeted property-based testing. In: 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), pp 46\u201356","DOI":"10.1145\/3092703.3092711"},{"issue":"43","key":"10953_CR17","doi-asserted-by":"publisher","first-page":"1891","DOI":"10.21105\/joss.01891","volume":"4","author":"DR MacIver","year":"2019","unstructured":"MacIver DR, Hatfield-Dodds Z et al (2019) Hypothesis: A new approach to property-based testing. J Open Source Softw 4(43):1891","journal-title":"J Open Source Softw"},{"key":"10953_CR18","doi-asserted-by":"crossref","unstructured":"Ravi S, Coblenz M (2025) An empirical evaluation of property-based testing in python. In: Proceedings of the ACM on Programming Languages (PACMLP) 9(OOPSLA2):3897\u20133923","DOI":"10.1145\/3764068"},{"issue":"1","key":"10953_CR19","doi-asserted-by":"publisher","first-page":"85","DOI":"10.1109\/TSE.2023.3334955","volume":"50","author":"M Sch\u00e4fer","year":"2024","unstructured":"Sch\u00e4fer M, Nadi S, Eghbali A, Tip F (2024) An empirical evaluation of using large language models for automated unit test generation. IEEE Trans Software Eng 50(1):85\u2013105","journal-title":"IEEE Trans Software Eng"},{"key":"10953_CR20","doi-asserted-by":"crossref","unstructured":"Shamshiri S, Just R, Rojas JM, Fraser G, McMinn P, Arcuri A (2015) Do automatically generated unit tests find real faults? an empirical study of effectiveness and challenges (t). In: 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE), pp 201\u2013211","DOI":"10.1109\/ASE.2015.86"},{"key":"10953_CR21","doi-asserted-by":"crossref","unstructured":"Sun J, Su T, Sun J, Li J, Wang M, Pu G (2024) Property-based testing for validating user privacy-related functionalities in social media apps. In: 32nd ACM International Conference on the Foundations of Software Engineering (FSE), pp 440\u2013451","DOI":"10.1145\/3663529.3663863"},{"key":"10953_CR22","unstructured":"Valente MT (2024) Software Engineering: A Modern Approach. Self-published"},{"key":"10953_CR23","doi-asserted-by":"crossref","unstructured":"Vercacmmen S, Borg M, Demeyer S (2023) Validation of mutation testing in the safety critical industry through a pilot study. In: IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW), pp 334\u2013343","DOI":"10.1109\/ICSTW58534.2023.00064"},{"key":"10953_CR24","doi-asserted-by":"crossref","unstructured":"Wauters C, De Roover C (2024) Property-based testing within ML projects: an empirical study. In: IEEE International Conference on Software Maintenance and Evolution (ICSME), pp 648\u2013653","DOI":"10.1109\/ICSME58944.2024.00067"},{"key":"10953_CR25","unstructured":"Winters T, Manshreck T, Wright H (2020) Software engineering at Google: Lessons learned from programming over time. O\u2019Reilly Media, Inc"},{"key":"10953_CR26","doi-asserted-by":"crossref","unstructured":"Xiong Y, Su T, Wang J, Sun J, Pu G, Su Z (2024) general and practical property-based testing for android apps. In: 39th IEEE\/ACM International Conference on Automated Software Engineering (ASE), pp 53\u201364","DOI":"10.1145\/3691620.3694986"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-026-10953-w.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-026-10953-w","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-026-10953-w.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T12:14:18Z","timestamp":1787573658000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-026-10953-w"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,8,24]]},"references-count":26,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2027,2]]}},"alternative-id":["10953"],"URL":"https:\/\/doi.org\/10.1007\/s10664-026-10953-w","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2026,8,24]]},"assertion":[{"value":"18 September 2025","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"10 August 2026","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"24 August 2026","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"The authors declare that they have no conflict of interest. They also declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.","order":1,"name":"Ethics","label":"Conflict of Interest","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"Not applicable.","order":2,"name":"Ethics","label":"Ethical Approval","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors consent to the use of this work in the journal.","order":3,"name":"Ethics","label":"Informed Consent","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"Not applicable.","order":4,"name":"Ethics","label":"Clinical Trial Number","group":{"name":"EthicsHeading","label":"Declarations"}}],"article-number":"30"}}