{"id":{"repo_id":"carleton","oai_identifier":"oai:carleton.scholaris.ca:20.500.14718/43965"},"canonical_url":"https://search.dev.ndltd.org/etd/carleton/oai:carleton.scholaris.ca:20.500.14718/43965","repository":{"repo_id":"carleton","name":"Carleton University","base_url":"https://carleton.scholaris.ca/server/oai/request"},"display":{"title":"From Isolation to Integration: An empirical study on differences between unit and integration testing with applications to C programs","abstract":"Unit and integration testing are both well-established, yet their practical differences have received limited empirical attention. This work compares the two approaches to better understand how they differ when applied with the same test cases. Unit testing, based on isolating the unit thanks to the use of stubs, is contrasted with integration testing, where functions are tested together through real calls instead of stubs. The study focuses on structural coverage, fault detection, and the effort required to manually build test harnesses. We observe that unit testing offered greater control and reachability but required significant manual setup. Integration testing involved less infrastructure but limited observability, especially for functions that are not directly executed by the test harness. Fault detection varied depending on call structure, input flow, and oracle quality. Some faults were only exposed in integration, others only through unit testing.","abstract_html":"Unit and integration testing are both well-established, yet their practical differences have received limited empirical attention. This work compares the two approaches to better understand how they differ when applied with the same test cases. Unit testing, based on isolating the unit thanks to the use of stubs, is contrasted with integration testing, where functions are tested together through real calls instead of stubs. The study focuses on structural coverage, fault detection, and the effort required to manually build test harnesses. We observe that unit testing offered greater control and reachability but required significant manual setup. Integration testing involved less infrastructure but limited observability, especially for functions that are not directly executed by the test harness. Fault detection varied depending on call structure, input flow, and oracle quality. Some faults were only exposed in integration, others only through unit testing.","abstract_has_math":false,"creators":["Taheri Ghazvini, Ehsan"],"institution":"Carleton University","degree_name":"Master of Applied Science (M.App.Sc.)","degree_level":"Master&apos;s","degree_discipline":"Engineering, Electrical and Computer","degree_department":null,"school":null,"contributors":[],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2025,"date_issued":"2025","date_published":"2025","updated_at":"2026-07-24T01:34:25Z","subjects":[],"languages":["en"],"rights":["Copyright © 2025 the author(s). Theses may be used for non-commercial research, educational, or related academic purposes only. Such uses include personal study, distribution to students, research and scholarship. Theses may only be shared by linking to the Carleton University Institutional Repository and no part may be copied without proper attribution to the author; no part may be used for commercial purposes directly or indirectly via a for-profit platform; no adaptation or derivative works are permitted without consent from the copyright owner."],"rights_urls":[],"identifier_entries":[{"key":"dc:identifier.doi","label":"DOI","values":["10.22215/etd/2025-16598"],"render_values":[{"text":"10.22215/etd/2025-16598","href":"https://doi.org/10.22215/etd/2025-16598","code":true}]}]},"links":{"outbound_url":"https://hdl.handle.net/20.500.14718/43965","outbound_label":"Handle","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:creator","label":"Author","values":["Taheri Ghazvini, Ehsan"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2025-07-31T18:37:46Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2025-07-31T18:37:46Z"]},{"key":"dc:date.issued","label":"Date","values":["2025"]},{"key":"dc:publisher","label":"Institution","values":["Carleton University"]},{"key":"dc:type","label":"Dc Type","values":["thesis"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Engineering, Electrical and Computer"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Master&apos;s"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master of Applied Science (M.App.Sc.)"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["en"]},{"key":"dc:rights","label":"Dc Rights","values":["Copyright © 2025 the author(s). Theses may be used for non-commercial research, educational, or related academic purposes only. Such uses include personal study, distribution to students, research and scholarship. Theses may only be shared by linking to the Carleton University Institutional Repository and no part may be copied without proper attribution to the author; no part may be used for commercial purposes directly or indirectly via a for-profit platform; no adaptation or derivative works are permitted without consent from the copyright owner."]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.doi","label":"DOI","values":["10.22215/etd/2025-16598"]},{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://hdl.handle.net/20.500.14718/43965"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["Unit and integration testing are both well-established, yet their practical differences have received limited empirical attention. This work compares the two approaches to better understand how they differ when applied with the same test cases. Unit testing, based on isolating the unit thanks to the use of stubs, is contrasted with integration testing, where functions are tested together through real calls instead of stubs. The study focuses on structural coverage, fault detection, and the effort required to manually build test harnesses. We observe that unit testing offered greater control and reachability but required significant manual setup. Integration testing involved less infrastructure but limited observability, especially for functions that are not directly executed by the test harness. Fault detection varied depending on call structure, input flow, and oracle quality. Some faults were only exposed in integration, others only through unit testing."]},{"key":"dc:title","label":"Title","values":["From Isolation to Integration: An empirical study on differences between unit and integration testing with applications to C programs"]}]}],"canonical_facts":{"dc:creator":["Taheri Ghazvini, Ehsan"],"dc:date.accessioned":["2025-07-31T18:37:46Z"],"dc:date.available":["2025-07-31T18:37:46Z"],"dc:date.issued":["2025"],"dc:description.abstract":["Unit and integration testing are both well-established, yet their practical differences have received limited empirical attention. This work compares the two approaches to better understand how they differ when applied with the same test cases. Unit testing, based on isolating the unit thanks to the use of stubs, is contrasted with integration testing, where functions are tested together through real calls instead of stubs. The study focuses on structural coverage, fault detection, and the effort required to manually build test harnesses. We observe that unit testing offered greater control and reachability but required significant manual setup. Integration testing involved less infrastructure but limited observability, especially for functions that are not directly executed by the test harness. Fault detection varied depending on call structure, input flow, and oracle quality. Some faults were only exposed in integration, others only through unit testing."],"dc:identifier.doi":["10.22215/etd/2025-16598"],"dc:identifier.uri":["https://hdl.handle.net/20.500.14718/43965"],"dc:language.iso":["en"],"dc:publisher":["Carleton University"],"dc:rights":["Copyright © 2025 the author(s). Theses may be used for non-commercial research, educational, or related academic purposes only. Such uses include personal study, distribution to students, research and scholarship. Theses may only be shared by linking to the Carleton University Institutional Repository and no part may be copied without proper attribution to the author; no part may be used for commercial purposes directly or indirectly via a for-profit platform; no adaptation or derivative works are permitted without consent from the copyright owner."],"dc:title":["From Isolation to Integration: An empirical study on differences between unit and integration testing with applications to C programs"],"dc:type":["thesis"],"thesis:degree_discipline":["Engineering, Electrical and Computer"],"thesis:degree_level":["Master&apos;s"],"thesis:degree_name":["Master of Applied Science (M.App.Sc.)"]},"updated_at":"2026-07-24T01:34:25Z"}