<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JSEA</journal-id><journal-title-group><journal-title>Journal of Software Engineering and Applications</journal-title></journal-title-group><issn pub-type="epub">1945-3116</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jsea.2012.57060</article-id><article-id pub-id-type="publisher-id">JSEA-19738</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Empirical Analysis of Object-Oriented Design Metrics for Predicting Unit Testing Effort of Classes
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>ourad</surname><given-names>Badri</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Fadel</surname><given-names>Toure</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Software Engineering Research Laboratory, Department of Mathematics and Computer Science, University of Quebec, Trois-Rivières, Canada</addr-line></aff><aff id="aff2"><addr-line>Software Engineering Research Laboratory, Department of Mathematics and Computer Science, University of Quebec, Trois- Rivières, Canada</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>Mourad.Badri@uqtr.ca(OB)</email>;<email>Fadel.Toure@uqtr.ca(FT)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>27</day><month>07</month><year>2012</year></pub-date><volume>05</volume><issue>07</issue><fpage>513</fpage><lpage>526</lpage><history><date date-type="received"><day>April</day>	<month>16th,</month>	<year>2012</year></date><date date-type="rev-recd"><day>May</day>	<month>29th,</month>	<year>2012</year>	</date><date date-type="accepted"><day>June</day>	<month>10th,</month>	<year>2012</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  In this paper, we investigate empirically the relationship between object-oriented design metrics and testability of classes. We address testability from the point of view of unit testing effort. We collected data from three open source Java software systems for which JUnit test cases exist. To capture the testing effort of classes, we used metrics to quantify the corresponding JUnit test cases. Classes were classified, according to the required unit testing effort, in two categories: high and low. In order to evaluate the relationship between object-oriented design metrics and unit testing effort of classes, we used logistic regression methods. We used the univariate logistic regression analysis to evaluate the individual effect of each metric on the unit testing effort of classes. The multivariate logistic regression analysis was used to explore the combined effect of the metrics. The performance of the prediction models was evaluated using Receiver Operating Characteristic analysis. The results indicate that: 1) complexity, size, cohesion and (to some extent) coupling were found significant predictors of the unit testing effort of classes and 2) multivariate regression models based on object-oriented design metrics are able to accurately predict the unit testing effort of classes.
 
</p></abstract><kwd-group><kwd>Software Testability; Unit Testing; Testing Effort; Metrics</kwd><kwd> Relationship; Prediction and Empirical Analysis</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Software testability is an important software quality attribute. IEEE [<xref ref-type="bibr" rid="scirp.19738-ref1">1</xref>] defines testability as the degree to which a system or component facilitates the establishment of test criteria and the performance of tests to determine whether those criteria have been met. ISO [<xref ref-type="bibr" rid="scirp.19738-ref2">2</xref>] defines testability (characteristic of maintainability) as attributes of software that bear on the effort needed to validate the software product.</p><p>Software testability is, in fact, a complex notion. Indeed, software testability is not an intrinsic property of a software artifact and cannot be measured simply such as size, complexity or coupling. According to Baudry et al. [3,4], software testability is influenced by many factors including controllability, observability and the global test cost. Yeh et al. [<xref ref-type="bibr" rid="scirp.19738-ref5">5</xref>] argue also that diverse factors such as control flow, data flow, complexity and size contribute to testability. Zhao [<xref ref-type="bibr" rid="scirp.19738-ref6">6</xref>] states that testability is an elusive concept, and it is difficult to get a clear view on all the potential factors that can affect it. Dealing with software testability raises several questions such as [7,8]: Why is one class easier to test than another? What makes a class hard to test? What contributes to the testability of a class? How can we quantify this notion? In addition, according to Baudry et al. testability becomes crucial in the case of object-oriented (OO) software systems where control flows are generally not hierarchical, but diffuse and distributed over whole architecture [3,4].</p><p>Software metrics can be useful in assessing software quality attributes and supporting various software engineering activities [9-12]. In particular, metrics can be used to assess (predict) software testability and better manage the testing effort. Having quantitative data on the testability of a software can, in fact, be used to guide the decision-making of software development managers seeking to produce high-quality software. Particularly, it can help software managers, developers and testers to [7, 8]: plan and monitor testing activities, determine the critical parts of the code on which they have to focus to ensure software quality, and in some cases use this data to review the code. One effective way to deal with this important issue is to develop prediction models based on metrics that can be used to identify critical parts of software requiring a (relative) high testing effort. There is a real need is this area.</p><p>A large number of OO metrics were proposed in literature [<xref ref-type="bibr" rid="scirp.19738-ref13">13</xref>]. Some of these metrics related to different OO software attributes (such as size, complexity, coupling, cohesion and inheritance) were already used in recent years to assess (predict) testability of OO software systems [7,8,14-20]. Software testability has been addressed from different point of views. According to Gupta et al. [<xref ref-type="bibr" rid="scirp.19738-ref8">8</xref>], none of the OO metrics is alone sufficient to give an overall reflection of software testability. Software testability is, indeed, affected by many different factors as pointed out by several researchers [3-6,21,22]. Moreover, even if there is a common belief (and empirical evidence) that several of these metrics (attributes) have an impact on testability of classes, few empirical studies have been conducted to examine their combined effect (impact), particularly when taking into account different levels of testing effort. As far as we know, this issue has not been empirically investigated.</p><p>The aim of this paper is to investigate empirically the relationship between OO design metrics, specifically, the Chidamber and Kemerer (CK) metrics suite [23,24] and testability of classes taking into account different levels of testing effort. We also include the well-known (size related) LOC (Lines of Code) metric as a “baseline”. The question we attempt to answer is how accurately do the OO metrics (separately and when used together) predict (high) testing effort. We addressed testability of classes from the perspective of unit testing effort. We performed an empirical analysis using data collected from three open source Java software systems for which JUnit test cases exist. To capture the testing effort of classes, we used the suite of test case metrics introduced by Bruntink et al. [7,17] to quantify the corresponding JUnit test cases. These metrics were used, in fact, to classify the classes (in terms of required testing effort) in two categories: high and low.</p><p>In order to evaluate the relationship between OO design metrics and unit testing effort of classes, we used logistic regression methods. We used the univariate logistic regression method to evaluate the individual effect of each metric on the unit testing effort of classes. The multivariate logistic regression method was used to investigate the potential of the combined effect of the metrics. The performance of the prediction models was evaluated using Receiver Operating Characteristic (ROC) analysis. In summary, the results indicate that complexity, size, cohesion and (to some extent) coupling were found significant predictors of the unit testing effort of classes. Moreover, the results show that multivariate regression models based on OO metrics are able to accurately predict the unit testing effort of classes. In addition, we explored the applicability of the prediction models by examining to what extent a prediction model built using data from one system can be used to predict the testing effort of classes of another system.</p><p>The rest of this paper is organized as follows: A brief summary of related work on software testability is given in Section 2. Section 3 introduces the OO design metrics investigated in the study. Section 4 presents the selected systems, describes the data collection, introduces the test case metrics we used to quantify the JUnit test cases and presents the empirical study we performed to investigate the relationship between OO design metrics and unit testing effort of classes. Finally, Section 5 concludes the paper and outlines directions for future work.</p></sec><sec id="s2"><title>2. Software Testability</title><p>Software testability has been addressed in literature from different point of views. Fenton et al. [<xref ref-type="bibr" rid="scirp.19738-ref10">10</xref>] define software testability as an external attribute. Freedman introduces testability measures for software components based on two factors: observability and controllability [<xref ref-type="bibr" rid="scirp.19738-ref25">25</xref>]. Voas defines testability as the probability that a test case will fail if a program has a fault [<xref ref-type="bibr" rid="scirp.19738-ref26">26</xref>]. Voas and Miller [<xref ref-type="bibr" rid="scirp.19738-ref27">27</xref>] propose a testability metric based on inputs and outputs domains of a software component, and the PIE (Propagation, Infection and Execution) technique to analyze software testability [<xref ref-type="bibr" rid="scirp.19738-ref28">28</xref>]. Binder [<xref ref-type="bibr" rid="scirp.19738-ref29">29</xref>] defines testability as the relative ease and expense of revealing software faults. He argues that software testability is based on six factors: representation, implementation, built-in text, test suite, test support environment and software process capability. Khoshgoftaar et al. investigate the relationship between static software product measures and testability [30,31]. Software testability is considered as a probability predicting whether tests will detect a fault. McGregor et al. [<xref ref-type="bibr" rid="scirp.19738-ref32">32</xref>] investigate testability of OO software systems and introduce the visibility component measure (VC). Bertolino et al. [<xref ref-type="bibr" rid="scirp.19738-ref33">33</xref>] investigate testability and its use in dependability assessment. They adopt a definition of testability as a conditional probability, different from the one proposed by Voas et al. [<xref ref-type="bibr" rid="scirp.19738-ref26">26</xref>], and derive the probability of program correctness using a Bayesian inference procedure. Le Traon et al. [34-36] propose testability measures for data flow designs. Petrenko et al. [<xref ref-type="bibr" rid="scirp.19738-ref37">37</xref>] and Karoui et al. [<xref ref-type="bibr" rid="scirp.19738-ref38">38</xref>] address testability in the context of communication software. Sheppard et al. [<xref ref-type="bibr" rid="scirp.19738-ref22">22</xref>] focus on formal foundation of testability metrics. Jungmayr [<xref ref-type="bibr" rid="scirp.19738-ref39">39</xref>] investigates testability measurement based on static dependencies within OO systems. He takes an integration testing point of view.</p><p>Gao et al. [40,41] consider testability from the perspective of component-based software construction. The definition of component testability is based on five factors: understandability, obervability, controllability, traceability and testing support capability. According to Gao et al. [<xref ref-type="bibr" rid="scirp.19738-ref41">41</xref>], software testability is related to testing effort reduction and software quality. Nguyen et al. [<xref ref-type="bibr" rid="scirp.19738-ref42">42</xref>] focus on testability analysis based on data flow designs in the context of embedded software. Baudry et al. [3,4,21] address testability measurement (and improvement) of OO designs. They focus on design patterns as coherent subsets in the architecture. Chowdhary [<xref ref-type="bibr" rid="scirp.19738-ref43">43</xref>] focuses on why it is so difficult to practice testability in the real world. He discusses the impact of testability on design and lay down guidelines to ensure testability consideration during software development. Khan et al. [<xref ref-type="bibr" rid="scirp.19738-ref44">44</xref>] focus on testability of classes at the design level. They developed a model to predict testability of classes from UML class diagrams. Kout et al. [<xref ref-type="bibr" rid="scirp.19738-ref45">45</xref>] adapted this model to the code level (Java programs) and evaluated it on two case studies. Briand et al. [<xref ref-type="bibr" rid="scirp.19738-ref46">46</xref>] propose an approach where instrumented contracts are used to increase testability. A case study showed that contract assertions detect a large percentage of failures depending on the level of precision of the contract definitions.</p><p>Bruntink et al. [7,17] investigate factors of testability of OO software systems. Testability is investigated from the perspective of unit testing. Gupta et al. [<xref ref-type="bibr" rid="scirp.19738-ref8">8</xref>] use fuzzy techniques to combine some OO metrics values into a single overall value called testability index. The proposed approach has been evaluated on simple examples of Java classes. Singh et al. [<xref ref-type="bibr" rid="scirp.19738-ref18">18</xref>] used OO metrics and neural networks to predict testing effort. The testing effort is measured in terms of lines of code added or changed during the life cycle of a defect. In [<xref ref-type="bibr" rid="scirp.19738-ref19">19</xref>], Singh et al. attempt to predict testability of Eclipse at the package level. Badri et al. [<xref ref-type="bibr" rid="scirp.19738-ref14">14</xref>] performed a similar study to that conducted by Bruntink et al. [<xref ref-type="bibr" rid="scirp.19738-ref7">7</xref>] using two open source Java software systems in order to explore the relationship between lack of cohesion metrics and testability of classes. In [<xref ref-type="bibr" rid="scirp.19738-ref15">15</xref>], Badri et al. investigated the capability of lack of cohesion metrics to predict testability using logistic regression methods. More recently, Badri et al. [16,47] investigate the effect of control flow of the unit testing effort of classes.</p></sec><sec id="s3"><title>3. Object-Oriented Design Metrics</title><p>We present, in this section, the summary of the OO design metrics we selected for the empirical study. These metrics have been selected for study because they have received considerable attention from researchers and are also being increasingly adopted by practitioners. Furthermore, these metrics have been incorporated into several development tools. We selected in total seven metrics. Six of these metrics (CBO, LCOM, DIT, NOC, WMC and RFC) were proposed by Chidamber and Kemerer in [23,24]. We also include in our study the well-known LOC metric. We give in what follows a brief definition of each metric.</p><p>Coupling between Objects: The CBO metric counts for a class the number of other classes to which it is coupled (and vice versa).</p><p>Lack of Cohesion in Methods: The LCOM metric measures the dissimilarity of methods in a class. It is defined as follows: LCOM = |P| − |Q|, if |P| &gt; |Q|, where P is the number of pairs of methods that do not share a common attribute and Q the number of pairs of methods sharing a common attribute. If the difference is negative, LCOM is set to 0.</p><p>Depth of Inheritance Tree: The DIT metric of a class is given by the length of the (longest) inheritance path from the root of the inheritance hierarchy to the class on which it is measured (number of ancestor classes).</p><p>Number of Children: The NOC metric measures the number of immediate subclasses of the class in a hierarchy.</p><p>Weighted Methods per Class: The WMC metric gives the sum of complexities of the methods of a given class, where each method is weighted by its cyclomatic complexity. Only methods specified in the class are considered.</p><p>Response for Class: The RFC metric for a class is defined as the set of methods that can be executed in response to a message received by an object of the class.</p><p>Lines of Code per class: The LOC metric counts for a class its number of lines of code.</p></sec><sec id="s4"><title>4. Empirical Analysis</title><p>This study aims at investigating empirically the relationship between OO design metrics and testability of classes in terms of required unit testing effort. We considered in each of the used systems only the classes for which JUnit test cases exist. We noticed that developers usually name the JUnit test case classes by adding the prefix (or suffix) “Test” or “TestCase” into the name of the classes (and in few cases interfaces) for which JUnit test cases were developed. Only classes that have such name matching mechanism with the test case class name are included in the analysis. This approach has already been adopted in other studies [<xref ref-type="bibr" rid="scirp.19738-ref48">48</xref>].</p><p>JUnit is a simple Framework for writing and running automated unit tests for Java classes. A typical usage of JUnit is to test each class C<sub>s</sub> of the program by means of a dedicated test case class C<sub>t</sub>. However, by analyzing the JUnit test case classes of the subject systems, we noticed that in some cases there is no one-to-one relationship between JUnit classes and tested classes. This has also been noted in other previous studies [49,50]. In these cases, several JUnit test cases correspond in fact to a same tested class.</p><p>For each selected software class C<sub>s</sub>, we calculated the values of OO metrics. We also used the suite of test case metrics (Section 4.3) to quantify the corresponding JUnit test case (cases) C<sub>t</sub>. The OO metrics and the test case metrics have been computed using the Borland Together tool<sup>1</sup>. The selected classes of the subject systems have been categorized according to the required testing effort. We used the test case metrics to quantify the JUnit test cases and identify the classes which required a (relative) high testing effort. In order to simplify the process of testing effort categorization, we provide only two categorizations: classes which required a high testing effort and classes which required a (relatively) low testing effort.</p><sec id="s4_1"><title>4.1. Selected Systems</title><p>Three open source Java software systems from different domains were selected for the study: ANT, JFREECHART (JFC) and POI. <xref ref-type="table" rid="table1">Table 1</xref> summarizes some of their characteristics. It gives, for each system, the total number of software classes, the total number of attributes, the total number of methods, the total number of lines of code, the number of selected software classes (for which JUnit test cases were developed), and the total number of lines of code of selected software classes (for which JUnit test cases were developed). ANT (www.apache.org) is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. This system consists of 713 classes that are comprised of 2491 attributes and 5365 methods, with a total of roughly 64,000 lines of code. JFC (http://www.jfree.org/jfreechart) is a free chart library for Java platform. This system consists of 496 classes that are comprised of 1550 attributes and 5763 methods, with a total of roughly 68,000 lines of code. The Apache POI (http://poi.apache. org/) project’s mission is to create and maintain Java APIs for manipulating various file formats based upon the Office Open XML standards (OOXML) and Microsoft’s OLE 2 Compound Document format (OLE2). This system consists of 1540 classes, that are comprised of 4463 attributes and 14,084 methods, with a total of roughly 136,000 lines of code. Moreover, we can also observe from <xref ref-type="table" rid="table1">Table 1</xref>, and this for each system, that JUnit test cases were not developed for all classes. The number of selected software classes for which JUnit test cases were developed varies from one system to another. In total, our experiments will be performed on 688 classes and corresponding JUnit test cases.</p></sec><sec id="s4_2"><title>4.2. Descriptive Statistics</title><p><xref ref-type="table" rid="table2">Table 2</xref> shows the descriptive statistics for all the OO metrics considered in the study. We give, for illustration, only the descriptive statistics corresponding to system ANT. We give in fact two tables of descriptive statistics (labeled I and II). The table labeled (I) indicates the descriptive statistics for OO metrics and this for all classes of the system. The table labeled (II) indicates the descriptive statistics for OO metrics only for selected classes for which JUnit test cases were developed. Moreover, the metric LCOM is not computed for classes having no attributes. This is why the number of observations (<xref ref-type="table" rid="table2">Table 2</xref>: ANT(I) and ANT(II)) corresponding to the</p></sec></sec></body><back><ref-list><title>References</title><ref id="scirp.19738-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">IEEE, “IEEE Standard Glossary of Software Engineering Terminology,” IEEE CSP, New York, 1990.</mixed-citation></ref><ref id="scirp.19738-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">ISO/IEC 9126, “Software Engineering Product Quality,” 1991.</mixed-citation></ref><ref id="scirp.19738-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">B. Baudry, B. Le Traon and G. Sunye, “Testability Analysis of a UML Class Diagram,” 9th International Software Metrics Symposium, Sydney, 3-5 September 2003.</mixed-citation></ref><ref id="scirp.19738-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">B. Baudry, Y. Le Traon, G. Sunyé and J. M. Jézéquel, “Measuring and Improving Design Patterns Testability,” 9th International Software Metrics Symposium, Sydney, 3-5 September 2003.</mixed-citation></ref><ref id="scirp.19738-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">P. L. Yeh and J. C. Lin, “Software Testability Measurement Derived From Data Flow Analysis,” 2nd Euromicro Conference on Software Maintenance and Reengineering, Florence, 8-11 March 1998. </mixed-citation></ref><ref id="scirp.19738-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">L. Zhao, “A New Approach for Software Testability Analysis,” 28th International Conference on Software Engineering, Shanghai, 20-28 May 2006.</mixed-citation></ref><ref id="scirp.19738-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">M. Bruntink and A. V. Deursen, “Predicting Class Testability Using Object-Oriented Metrics,” 4th International Workshop on Source Code Analysis and Manipulation, Chicago, 15-16 September 2004.  
doi:10.1109/SCAM.2004.16</mixed-citation></ref><ref id="scirp.19738-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">V. Gupta, K. K. Aggarwal and Y. Singh, “A Fuzzy Approach for Integrated Measure of Object-Oriented Software Testability,” Journal of Computer Science, Vol. 1, No. 2, 2005, pp. 276-282.  
doi:10.3844/jcssp.2005.276.282</mixed-citation></ref><ref id="scirp.19738-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">V. R. Basili, L. C. Briand and W. Melo, “A Validation of Object-Oriented Design Metrics as Quality Indicators,” IEEE Transactions on Software Engineering, Vol. 22, No. 10, 1996, pp. 751-761. doi:10.1109/32.544352</mixed-citation></ref><ref id="scirp.19738-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">N. Fenton and S. L. Pfleeger, “Software Metrics: A Rigorous and Practical Approach,” PWS Publishing Company, Boston, 1997.</mixed-citation></ref><ref id="scirp.19738-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">R. S. Pressman, “Software Engineering, A Practitioner’s Approach,” 6th Edition, McGraw Hill, New York, 2005.</mixed-citation></ref><ref id="scirp.19738-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">I. Sommervile, “Software Engineering,” 9th Edition, Addison Wesley, New York, 2011.</mixed-citation></ref><ref id="scirp.19738-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">B. Henderson-Sellers, “Object-Oriented Metrics Measures of Complexity,” Prentice-Hall, Upper Saddle River, 1996.</mixed-citation></ref><ref id="scirp.19738-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">L. Badri, M. Badri and F. Toure, “Exploring Empirically the Relationship between Lack of Cohesion and Testability in Object-Oriented Systems,” In: T.-H. Kim, et al., Eds., Advances in Software Engineering, Communications in Computer and Information Science, Vol. 117, Springer, Berlin, 2010.</mixed-citation></ref><ref id="scirp.19738-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">L. Badri, M. Badri and F. Toure, “An Empirical Analysis of Lack of Cohesion Metrics for Predicting Testability of Classes,” International Journal of Software Engineering and Its Applications, Vol. 5, No. 2, 2011, pp. 69-85.</mixed-citation></ref><ref id="scirp.19738-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">M. Badri and F. Toure, “Empirical Analysis for Investigating the Effect of Control Flow Dependencies on Testability of Classes,” 23rd International Conference on Software Engineering and Knowledge Engineering, Miami Beach, 7-9 July 2011.</mixed-citation></ref><ref id="scirp.19738-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">M. Bruntink and A. V. Deursen, “An Empirical Study into Class Testability,” Journal of Systems and Software, Vol. 79, No. 9, 2006, pp. 1219-1232. 
doi:10.1016/j.jss.2006.02.036</mixed-citation></ref><ref id="scirp.19738-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Y. Singh, A. Kaur and R. Malhota, “Predicting Testability Effort Using Artificial Neural Network,” Proceedings of the World Congress on Engineering and Computer Science, San Francisco, 22-24 October 2008.</mixed-citation></ref><ref id="scirp.19738-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Y. Singh and A. Saha, “Predicting Testability of Eclipse: A Case Study,” Journal of Software Engineering, Vol. 4, No. 2, 2010, pp. 122-136. doi:10.3923/jse.2010.122.136</mixed-citation></ref><ref id="scirp.19738-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Y. Singh, A. Kaur and R. Malhota, “Empirical Validation of Object-Oriented Metrics for Predicting Fault Proneness Models,” Software Quality Journal, Vol. 18, No. 1, 2010, pp. 3-35. doi:10.1007/s11219-009-9079-6</mixed-citation></ref><ref id="scirp.19738-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">B. Baudry, Y. Le Traon and G. Sunye, “Improving the Testability of UML Class Diagrams,” Proceedings of International Workshop on Testability Analysis, Rennes, 2 November 2004.</mixed-citation></ref><ref id="scirp.19738-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">J. W. Sheppard and M. Kaufman, “Formal Specification of Testability Metrics,” IEEE AUTOTESTCON, Philadelphia, 20-23 August 2001.</mixed-citation></ref><ref id="scirp.19738-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">S. R. Chidamber and C. F. Kemerer, “A Metrics Suite for OO Design,” IEEE Transactions on Software Engineering, Vol. 20, No. 6, 1994, pp. 476-493. 
doi:10.1109/32.295895</mixed-citation></ref><ref id="scirp.19738-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">S. R. Chidamber, D. P. Darcy and C. F. Kemerer, “Managerial Use of Metrics for Object-Oriented Software: An Exploratory Analysis,” IEEE Transactions on Software Engineering, Vol. 24, No. 8, 1998, pp. 629-637. 
doi:10.1109/32.707698</mixed-citation></ref><ref id="scirp.19738-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">R. S. Freedman, “Testability of Software Components,” IEEE Transactions on Software Engineering, Vol. 17, No. 6, 1991, pp. 553-564. doi:10.1109/32.87281</mixed-citation></ref><ref id="scirp.19738-ref26"><label>26</label><mixed-citation publication-type="other" xlink:type="simple">J. M. Voas, “PIE: A Dynamic Failure-Based Technique,” IEEE Transactions on Software Engineering, Vol. 18, No. 8, 1992, pp. 717-727. doi:10.1109/32.153381</mixed-citation></ref><ref id="scirp.19738-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">J. Voas and K. W. Miller, “Semantic Metrics for Software Testability,” Journal of Systems and Software, Vol. 20, No. 3, 1993, pp. 207-216.  
doi:10.1016/0164-1212(93)90064-5</mixed-citation></ref><ref id="scirp.19738-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">J. M. Voas and K. W. Miller, “Software Testability: The New Verification,” IEEE Software, Vol. 12, No. 3, 1995, pp. 17-28. doi:10.1109/52.382180</mixed-citation></ref><ref id="scirp.19738-ref29"><label>29</label><mixed-citation publication-type="other" xlink:type="simple">R. V. Binder, “Design for Testability in Object-Oriented Systems,” Communications of the ACM, Vol. 37, No. 9, 1994, pp. 87-101. doi:10.1145/182987.184077</mixed-citation></ref><ref id="scirp.19738-ref30"><label>30</label><mixed-citation publication-type="other" xlink:type="simple">T. M. Khoshgoftaar and R. M. Szabo, “Detecting Program Modules with Low Testability,” 11th International Conference on Software Maintenance, Nice, 16 October 1995.</mixed-citation></ref><ref id="scirp.19738-ref31"><label>31</label><mixed-citation publication-type="other" xlink:type="simple">T. M. Khoshgoftaar, E. B. Allen and Z. Xu, “Predicting Testability of Program Modules Using a Neural Network,” 3rd IEEE Symposium on Application-Specific Systems and SE Technology, Richardson, 24-25 March 2000, pp. 57-62. </mixed-citation></ref><ref id="scirp.19738-ref32"><label>32</label><mixed-citation publication-type="other" xlink:type="simple">J. McGregor and S. Srinivas, “A Measure of Testing Effort,” Proceedings of the Conference on OO Technologies, Toronto, 17-21 June 1996.</mixed-citation></ref><ref id="scirp.19738-ref33"><label>33</label><mixed-citation publication-type="other" xlink:type="simple">A. Bertolino and L. Strigini, “On the Use of Testability Measures for Dependability Assessment,” IEEE Transactions on Software Engineering, Vol. 22, No. 2, 1996, pp. 97-108. doi:10.1109/32.485220</mixed-citation></ref><ref id="scirp.19738-ref34"><label>34</label><mixed-citation publication-type="other" xlink:type="simple">Y. Le Traon and C. Robach, “Testability Analysis of Co-Designed Systems,” Proceedings of the 4th Asian Test Symposium, ATS. IEEE CS, Washington, 1995.</mixed-citation></ref><ref id="scirp.19738-ref35"><label>35</label><mixed-citation publication-type="other" xlink:type="simple">Y. Le Traon and C. Robach, “Testability Measurements for Data Flow Design,” Proceedings of the 4th International Software Metrics Symposium, New Mexico, 5-7 November 1997. doi:10.1109/METRIC.1997.637169</mixed-citation></ref><ref id="scirp.19738-ref36"><label>36</label><mixed-citation publication-type="other" xlink:type="simple">Y. Le Traon, F. Ouabdessalam and C. Robach, “Analyzing Testability on Data Flow Designs,” ISSRE’00, 2000.</mixed-citation></ref><ref id="scirp.19738-ref37"><label>37</label><mixed-citation publication-type="other" xlink:type="simple">A. Petrenko, R. Dssouli and H. Koenig, “On Evaluation of Testability of Protocol Structures,” IFIP, Rueil-Malmaison, 1993.</mixed-citation></ref><ref id="scirp.19738-ref38"><label>38</label><mixed-citation publication-type="other" xlink:type="simple">K. Karoui and R. Dssouli, “Specification Transformations and Design for Testability,” Proceedings of the IEEE Global Telecommunications Conference, London, 18-22 November 1996, pp. 680-685.</mixed-citation></ref><ref id="scirp.19738-ref39"><label>39</label><mixed-citation publication-type="other" xlink:type="simple">S. Jungmayr, “Testability Measurement and Software Dependencies,” Proceedings of the 12th International Workshop on Software Measurement, Magdeburg, 7-9 October 2002. </mixed-citation></ref><ref id="scirp.19738-ref40"><label>40</label><mixed-citation publication-type="other" xlink:type="simple">J. Gao, J. Tsao and Y. Wu, “Testing and Quality Assurance for Component-Based Software,” Artech House Publisher, London, 2003.</mixed-citation></ref><ref id="scirp.19738-ref41"><label>41</label><mixed-citation publication-type="other" xlink:type="simple">J. Gao and M. C. Shih, “A Component Testability Model for Verification and Measurement,” COMPSAC IEEE, 2005.</mixed-citation></ref><ref id="scirp.19738-ref42"><label>42</label><mixed-citation publication-type="other" xlink:type="simple">T. B. Nguyen, M. Delaunay and C. Robach, “Testability Analysis Applied to Embedded Data-Flow Software,” Proceedings of the 3rd International Conference on Quality Software, Dallas, 6-7 November 2003, pp. 4-11. 
doi:10.1109/QSIC.2003.1319121</mixed-citation></ref><ref id="scirp.19738-ref43"><label>43</label><mixed-citation publication-type="other" xlink:type="simple">V. Chowdhary, “Practicing Testability in the Real World,” International Conference on Software Testing, Verification and Validation, IEEE CSP, Washington, 21-25 March 2009, pp. 260-268.</mixed-citation></ref><ref id="scirp.19738-ref44"><label>44</label><mixed-citation publication-type="other" xlink:type="simple">R. A. Khan and K. Mustafa, “Metric Based Testability Model for Object-Oriented Design (MTMOOD),” ACM SIGSOFT Software Engineering Notes, Vol. 34, No. 2, 2009, pp. 1-6. doi:10.1145/1507195.1507204</mixed-citation></ref><ref id="scirp.19738-ref45"><label>45</label><mixed-citation publication-type="other" xlink:type="simple">A. Kout, F. Toure and M. Badri, “An Empirical Analysis of a Testability Model for Object-Oriented Programs,” ACM SIGSOFT Software Engineering Notes, Vol. 36, No. 4, 2011, pp. 1-5. doi:10.1145/1988997.1989020</mixed-citation></ref><ref id="scirp.19738-ref46"><label>46</label><mixed-citation publication-type="other" xlink:type="simple">L. C. Briand, Y. Labiche and H. Sun, “Investigating the Use of Analysis Contracts to Improve the Testability of Object-Oriented Code,” Software—Practice and Experience, Vol. 33, No. 7, 2003, pp. 637-672. 
doi:10.1002/spe.520</mixed-citation></ref><ref id="scirp.19738-ref47"><label>47</label><mixed-citation publication-type="other" xlink:type="simple">M. Badri and F. Toure, “Evaluating the Effect of Control Flow on the Unit Testing Effort of Classes: An Empirical Analysis,” Advances in Software Engineering, Vol. 2012, 2012, 13 p. doi:10.1155/2012/964064</mixed-citation></ref><ref id="scirp.19738-ref48"><label>48</label><mixed-citation publication-type="other" xlink:type="simple">A. Mockus, N. Nagappan and T. T. Dinh-Trong, “Test Coverage and Post-Verification Defects: A Multiple Case Study,” 3rd International Symposium on Empirical Software Engineering and Measurement, Lake Buena Vista, 15-16 October 2009. doi:10.1109/ESEM.2009.5315981</mixed-citation></ref><ref id="scirp.19738-ref49"><label>49</label><mixed-citation publication-type="other" xlink:type="simple">B. Van Rompaey and S. Demeyer, “Establishing Traceability Links between Unit Test Cases and Units under Test,” Proceedings of the European Conference on Software Maintenance and Reengineering, Kaiserslautern, 24-27 March 2009.</mixed-citation></ref><ref id="scirp.19738-ref50"><label>50</label><mixed-citation publication-type="other" xlink:type="simple">A. Qusef, G. Bavota, R. Oliveto, A. De Lucia and D. Binkley, “SCOTCH: Test-to-Code Traceability Using Slicing and Conceptual Coupling,” International Conference on Software Maintenance, Williamsburg, 29 March 2011. </mixed-citation></ref><ref id="scirp.19738-ref51"><label>51</label><mixed-citation publication-type="other" xlink:type="simple">K. K. Aggarwal, Y. Singh, K. Arvinder and M. Ruchika, “Empirical Analysis for Investigating the Effect of Object-Oriented Metrics on Fault Proneness: A Replicated Case Study,” Software Process: Improvement and Practice, Vol. 16, No. 1, 2009, pp. 39-62. 
doi:10.1002/spip.389</mixed-citation></ref><ref id="scirp.19738-ref52"><label>52</label><mixed-citation publication-type="other" xlink:type="simple">Y. Zhou and H. Leung, “Empirical Analysis of Object-Oriented Design Metrics for Predicting High and Low Severity Faults,” IEEE Transactions on Software Engineering, Vol. 32, No. 10, 2006, pp. 771-789.</mixed-citation></ref><ref id="scirp.19738-ref53"><label>53</label><mixed-citation publication-type="other" xlink:type="simple">L. C. Briand, J. Daly and J. Wuest, “A Unified Framework for Cohesion Measurement in Object-Oriented Systems,” Empirical Software Engineering—An International Journal, Vol. 3, No. 1, 1998, pp. 65-117. </mixed-citation></ref><ref id="scirp.19738-ref54"><label>54</label><mixed-citation publication-type="other" xlink:type="simple">L. C. Briand, J. Wust, J. Daly and V. Porter, “Exploring the Relationship between Design Measures and Software Quality in Object-Oriented Systems,” Journal of Systems and Software, Vol. 51, No. 3, 2000, pp. 245-273. 
doi:10.1016/S0164-1212(99)00102-8</mixed-citation></ref><ref id="scirp.19738-ref55"><label>55</label><mixed-citation publication-type="other" xlink:type="simple">T. Gyimothy, R. Ferenc and I. Siket, “Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction,” IEEE Transactions on Software engineering, Vol. 3, No. 10, 2005, pp. 897-910.</mixed-citation></ref><ref id="scirp.19738-ref56"><label>56</label><mixed-citation publication-type="other" xlink:type="simple">A. Marcus, D. Poshyvanyk and R. Ferenc, “Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems,” IEEE Transactions on Software Engineering, Vol. 34, No. 2, 2008, pp. 287-300. 
doi:10.1109/TSE.2007.70768</mixed-citation></ref><ref id="scirp.19738-ref57"><label>57</label><mixed-citation publication-type="other" xlink:type="simple">K. El Emam and W. Melo, “The Prediction of Faulty Classes Using Object-Oriented Design Metrics,” National Research Council of Canada NRC/ERB 1064, 1999.</mixed-citation></ref><ref id="scirp.19738-ref58"><label>58</label><mixed-citation publication-type="other" xlink:type="simple">D. W. Hosmer and S. Lemeshow, “Applied Logistic Regression,” Wiley, New York, 2000. 
doi:10.1002/0471722146</mixed-citation></ref><ref id="scirp.19738-ref59"><label>59</label><mixed-citation publication-type="other" xlink:type="simple">K. El Emam, “A Methodology for Validating Software Product Metrics,” National Research Council of Canada NRC/ERB 1076, 2000.</mixed-citation></ref></ref-list></back></article>