<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:contributor>Pezzè, Mauro</dc:contributor>
  <dc:creator>Mirzaaghaei, Mehdi</dc:creator>
  <dc:date>2012-11-09</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">Software testing is one of the most common approaches to verify software systems. Despite of many automated techniques proposed in the literature, test cases  are often generated manually. When a software system evolves during development and maintenance to accommodate requirement changes, bug fixes, or  functionality extensions, test cases may become obsolete, and software developers need to evolve them to verify the new version of the software system. Due to  time pressure and effort required to evolve test cases, software developers do not update test cases often and many test cases become quickly obsolete. As a  consequence, the effectiveness of the test suites drops over time. In this thesis, we propose a new technique for automating test suite evolution aiming to reduce  both the developers effort and the costs of software evolution. To understand the evolution of test cases, we conducted an empirical study on real-world software  systems to gain an insight on how software developers evolve the test cases. Our study shows that many test cases of software systems are similar. These  similarities lead developers to follow common activities for repairing and generating test cases by using some common processes. Based on this observation, we  identify some of Test Reuse Patterns that can be applied to fix many test cases and generate new test cases. In this thesis we define five Test Reuse Patterns:  change of method declaration, extension of class hierarchy, implementation of interface, introduction of overloaded methods, and introduction of overridden methods.  We propose a framework for generating and repairing test cases for evolving software by automating Test Reuse Patterns. The framework, called Test Care  Assistant (TCA), repairs test cases that do not compile after the code changes and generates test cases when new classes or methods are added to the software.  We evaluated TCA on several open-source projects, and the results suggest that TCA can be successfully adopted in software testing process to help software  developers evolve the test cases with less effort and time. The empirical evaluation of the framework shows that TCA can be successfully applied in many cases  and that the effectiveness of the test cases generated and repaired by TCA is comparable with the effectiveness of the test cases written manually by software  developers and generated automatically by existing techniques. This dissertation makes several contributes to the state of the art. First, it introduces Test Reuse  Patterns, Second, it proposes a framework, TCA, that exploits the Test Reuse Patterns to repair and evolve test cases in the software, Third, it performs an empirical  study of software evolution conducted on different test suite repositories, Fourth, it implements the TCA prototype, and Finally it performs an empirical evaluation of  the applicability and effectiveness of the approach on open-source projects.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/318339</dc:identifier>
  <dc:identifier>https://localhost:5000/ark:/12658/srd1318339</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/318339/files/2012INFO006.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-111471</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1318339</dc:relation>
  <dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
  <dc:rights>License undefined</dc:rights>
  <dc:subject xmlns:ns1="xml" ns1:lang="en">Software testing</dc:subject>
  <dc:subject xmlns:ns2="xml" ns2:lang="en">Test suite evolution</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Test case maintenance</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">Test suite repair</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Test case generation</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns6="xml" ns6:lang="en">Automatic test suite evolution</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
