<?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.2015.87031</article-id><article-id pub-id-type="publisher-id">JSEA-57945</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>
 
 
  Test Suite Design Methodology Using Combinatorial Approach for Internet of Things Operating Systems
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>bhinandan</surname><given-names>H. Patil</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>Neena</surname><given-names>Goveas</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>Krishnan</surname><given-names>Rangarajan</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>Department of Computer Science and Information Systems, Birla Institute of Technology and 
Science, Goa, India</addr-line></aff><aff id="aff2"><addr-line>Department of Information Science, Dayanand Sagar College of Engineering, Bangalore, India</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>P2013408@goa.bits-pilani.ac.in(BHP)</email>;<email>Neena@goa.bits-pilani.ac.in(NG)</email>;<email>Krishnanr1234@gmail.com(KR)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>15</day><month>07</month><year>2015</year></pub-date><volume>08</volume><issue>07</issue><fpage>303</fpage><lpage>312</lpage><history><date date-type="received"><day>28</day>	<month>May</month>	<year>2015</year></date><date date-type="rev-recd"><day>accepted</day>	<month>12</month>	<year>July</year>	</date><date date-type="accepted"><day>15</day>	<month>July</month>	<year>2015</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 describe how the test design can be done by using the Combinatorial Testing approach for internet of things operating systems. Contiki operating system is taken as a case study but we discuss what can be the approach for RIOT and Tiny OS operating systems. We discuss how the combinatorial coverage measurement can be gathered in addition to the traditional metrics code coverage. The test design generated by using Advanced Combinatorial Testing for Software is analyzed for Contiki operating system. We elaborate the code coverage gathering technique for Contiki simulator which happens to be in Java. We explain the usage of Combinatorial Coverage Measurement tool. Although we have explained the test design methodology for internet of things operating systems, the approach explained can be followed for other open source software.
 
</p></abstract><kwd-group><kwd>CT</kwd><kwd> ACTS</kwd><kwd> CCM</kwd><kwd> Code Cover</kwd><kwd> Contiki</kwd><kwd> Cooja</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Our previously published paper touches upon the test design using combinatorial testing approach for Contiki operating system [<xref ref-type="bibr" rid="scirp.57945-ref1">1</xref>] . In this paper we intend to extend the concept and explain what can be done for the Internet of Things (IoT) operating systems which do not have standard regression test suites viz. RIOT and Tiny OS. We analyze the Advanced Combinatorial Testing for Software (ACTS) generated test suite design and explain how the traditional effective metrics, code coverage can be gathered in addition to more relevant combinatorial coverage measurements using combinatorial coverage measurement tool (CCM) .</p><p>While we want to have minimal overlap of this paper with the one published already [<xref ref-type="bibr" rid="scirp.57945-ref1">1</xref>] , we may re-visit few sections and elaborate more. At places, we get specific and explain implementation part of testing (such as what changes are done to the test setup for gathering the data).</p><p>National Institute for Standards and Technology (NIST) has been actively supported combinatorial testing. The research carried out by NIST has been well documented [<xref ref-type="bibr" rid="scirp.57945-ref2">2</xref>] [<xref ref-type="bibr" rid="scirp.57945-ref3">3</xref>] . NIST has made several tools which are available to public [<xref ref-type="bibr" rid="scirp.57945-ref4">4</xref>] . C Nie et al. conducts a survey of combinatorial testing and the same is available as part of survey report [<xref ref-type="bibr" rid="scirp.57945-ref5">5</xref>] . Software testing is inarguably essential part of all software development cycles and the same is discussed at high levels by several papers [<xref ref-type="bibr" rid="scirp.57945-ref6">6</xref>] . While few papers discuss software testing techniques at very high level [<xref ref-type="bibr" rid="scirp.57945-ref7">7</xref>] , we get specific and discuss combinatorial testing in this paper.</p><p>Combinatorial testing is not only adopted by researchers, and evidence shows the adoption by large organizations [<xref ref-type="bibr" rid="scirp.57945-ref8">8</xref>] . Few papers have different perspectives about testing at large [<xref ref-type="bibr" rid="scirp.57945-ref9">9</xref>] . Test suite and test oracles are integral part of testing these days [<xref ref-type="bibr" rid="scirp.57945-ref10">10</xref>] . NIST tools for combinatorial testing take these test suites and test oracles as input entities. NIST tools are an integral part of combinatorial testing and many users have been using them successfully in testing activities of research/industry. ACTs and CCM aid the combinatorial testing immensely. ACTs has been tested with self [<xref ref-type="bibr" rid="scirp.57945-ref11">11</xref>] . CCM’s success is documented [<xref ref-type="bibr" rid="scirp.57945-ref12">12</xref>] . While abstracting the formal specifications to generate software tests is an old concept [<xref ref-type="bibr" rid="scirp.57945-ref13">13</xref>] , it is being still researched. Few researchers are focusing on different fields of combinatorial testing [<xref ref-type="bibr" rid="scirp.57945-ref14">14</xref>] , we in this paper focus on classic approaches of combinatorial testing techniques. A general strategy for t-way software testing is documented in few papers [<xref ref-type="bibr" rid="scirp.57945-ref15">15</xref>] and their through put is documented in few papers [<xref ref-type="bibr" rid="scirp.57945-ref16">16</xref>] .</p><p>As mentioned earlier, this paper focuses on classic approaches of combinatorial testing and the same is being elaborated in the following sections.</p></sec><sec id="s2"><title>2. Typical Workflow for Base-Lining the Regression Test Suite</title><p><xref ref-type="fig" rid="fig1">Figure 1</xref> depicts the typical flow of work when we want to ascertain the effectiveness of the test suite using combinatorial approach. First step is choosing the operating system for Internet of Things. Then traverse through the source code of the open source code base folders to see if the test suite exists. If it exists gather the coverage data using the code coverage tools.</p><p>If the gathered data indicates inadequate test suite, redesign the test suite using the combinatorial approach and gather the data. If the coverage data is less, it calls for re-visiting the test design. Base line the test suite once the adequate test criterion is met.</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Typical work flow for base lining the test suite</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-9302075x5.png"/></fig><p>As can be seen from the diagram it can be iterative process. We document the process that was used for case study operating system in further sections. We describe the approach to be followed when the test suite already exists and when it does not. Section 3 is for the case when the base test suite already exists and Section 4 is for the case when the test suite does not exist.</p></sec><sec id="s3"><title>3. Process of Redesigning the Regression Test Suite If It Already Exists</title><p><xref ref-type="fig" rid="fig2">Figure 2</xref> depicts the process in the case when test suite already exists. This section is for the case when the base lined test suite already exists as in the case of Contiki operating system version 2.7. We can use the either parameter based re-design or configuration based re-design as explained in the book and manual [<xref ref-type="bibr" rid="scirp.57945-ref1">1</xref>] [<xref ref-type="bibr" rid="scirp.57945-ref2">2</xref>] or combination of both. The coverage can be gathered using CCM and traditional coverage tools such as CodeCover. We did preliminary investigation using freely available tool CodeCover for the existing test suite. The coverage was less than 20%. Appendix B gives the data gathered using the CodeCover.</p><p>Then we visited the existing test suite to know the reason for low coverage. Few areas of improvements were observed in the existing test suite.</p><p>・ No formal test design document existed.</p><p>・ It appears that the test cases were concentrated around few mote types (hardware or configurations in the context of combinatorial testing).</p><p>We went through the whole regression test suite to extract the configurations supported and input parameters being used. We came up with <xref ref-type="table" rid="table1">Table 1</xref> to be populated in the ACTS test model. When the ACTS was populated using these set of values, the generated test design document is as shown in Appendix A.</p>Contiki Specific Details<p>Contiki is open source operating system widely used and accepted for Internet of Things. It has base-lined regression test suite for version 2.7. Contiki gives the user friendly operating system in the form of instant Contiki which has Ubuntu like the feel with the tool chains to make the iterative development easy. The developers can use the instant Contiki to test the patches and testers can use the same environment for ascertaining the reliability of the operating system without procuring the hardware for all the mote types.</p><p>Contiki gives the simulator which is called Cooja. The Cooja simulator talks to the Contiki using Java Native Interface (JNI). The test cases are called csc files which are understandable by Cooja. We found Eighty three test cases of this type in the regression folder. However, these test cases were concentrated around few mote types.</p><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Process of base lining the test suite if it already exists</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-9302075x6.png"/></fig><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Acts input parameters</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Parameters</th><th align="center" valign="middle" >Parameter Values</th></tr></thead><tr><td align="center" valign="middle" >Platform</td><td align="center" valign="middle" >Exp5438, z1, wismote, micaz, sky, jcreate, sentilla-usb, esb, native, cooja</td></tr><tr><td align="center" valign="middle" >base</td><td align="center" valign="middle" >Multithreading, coffee, check pointing</td></tr><tr><td align="center" valign="middle" >Rime</td><td align="center" valign="middle" >collect, rucb, deluge, runicast, trickle, mesh</td></tr><tr><td align="center" valign="middle" >Net Performance</td><td align="center" valign="middle" >Net Perf, Net Perf-lpp, Net Perf-cxmac</td></tr><tr><td align="center" valign="middle" >collect</td><td align="center" valign="middle" >shell-collect, shell-collect-lossy</td></tr><tr><td align="center" valign="middle" >ipv4</td><td align="center" valign="middle" >telnet-ping, webserver</td></tr><tr><td align="center" valign="middle" >ipv6</td><td align="center" valign="middle" >ipv6-udp, udp-fragmentation, unicast-fragmentation, ipv6-rpl-collect</td></tr><tr><td align="center" valign="middle" >RPL</td><td align="center" valign="middle" >up-root, root-reboot, large-network, up and down routes, temporary rootloss, random rearrngement, rpl-dao</td></tr><tr><td align="center" valign="middle" >ipv6apps</td><td align="center" valign="middle" >servreg-hack, coap</td></tr></tbody></table></table-wrap><p>As already mentioned, Appendix A gives the test design generated using ACTS for <xref ref-type="table" rid="table1">Table 1</xref> input. Let us visit the column 2 of the design. We can see that the generated test cases are spread across the mote (hardware) types. Further, the generated test design takes care of the input parameters as well for the test cases.</p><p>Now the task at hand is mapping these generated test cases to functional test cases (xml files called csc) which are understandable by Cooja and gathering the coverage data again. The coverage data should improve in principle. We are working on this.</p></sec><sec id="s4"><title>4. Process of Designing the Regression Test Suite If It Does Not Exist</title><p><xref ref-type="fig" rid="fig3">Figure 3</xref> depicts the case when test suite does not exist. This process is more suited for operating systems which do not have standard regression test suite viz. RIOT and TinyOS. Since the functional specification and test design are both missing in case of these operating systems, we will have to come up with the functional specification document first. This will be our understanding of the functionality that these operating systems support. Once the functionality of these operating systems is understood we will have to come up with the test design. Configuration to be supported and input parameters to be supplied for each test case will act as starting point for populating the ACTS test model. Once test design is generated, we will have to understand the test environment for these operating systems and the test design need to be mapped to functional test cases to be executed for gathering the coverage data. The CCM coverage will not be appropriate as the test cases generated using ACTS tool will always give 100% combinatorial coverage. Traditional coverage such as code coverage may be handy.</p></sec><sec id="s5"><title>5. Contiki Environment Specific Changes to Be Done</title><p>In this section we document the changes that we did in the Contiki environment for the tasks at hand. Since we get implementation specific for case study operating system, this section can be conveniently skipped by the readers who are not interested in specific details for given operating system.</p><p>1. Log in as user in the instant Contiki environment.</p><p>2. Search for the .travis. yml</p><p>3. Add the build type you are interested in:</p><p>- BUILD_TYPE = “ipv6-apps”</p><p>- BUILD_TYPE = “CT”</p><p>-BUILD_TYPE = “compile-8051-ports”</p><p>4. Under the directory../contiki-2.7/regression-tests create a folder 02-CT</p><p>5. Under contiki-2.7/regression-tests/02-CT directory create *.csc files you are interested in viz. 01-custom.csc 02-custom.csc</p><p>6. The Make file should look like include../Makefile. simulation-test</p><p>7. Create a 01-custom.csc file in the Cooja tool. Use the test script editor to create a java script which will be essential while running the test case from command line using the makefile.</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Process of base-lining the test suite if it does not exist</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-9302075x7.png"/></fig><p>8. Modify the build.xml suitably as explained in Appendix C.</p><p>9. Run the regression test suite as usual.</p><p>10. Test run will create many *.clf files.</p><p>11. Create a script for analyze, merge and generate report.</p></sec><sec id="s6"><title>6. Conclusion</title><p>In this paper we presented the approaches that could be employed for designing the regression test suite using combinatorial approach. We explained how the bench marking of the regression test suite could be done using the traditional approaches such as code coverage in addition to coverage gathered using combinatorial coverage measurement tools.</p></sec><sec id="s7"><title>7. Future Work</title><p>In this paper we investigated how the combinatorial approach could be applied for the cases when the regression test suite already existed viz. Contiki case. We were working on ascertaining the gain due to Combinatorial testing.</p><p>We were planning to explore the Combinatorial testing for the cases when the regression test suite did not exist viz. RIOT and TinyOS.</p><p>Further we were planning to model the System Under Test (SUT) and use New Symbolic Model Verifier (NuSMV) in conjunction with ACTs.</p></sec><sec id="s8"><title>Cite this paper</title><p>AbhinandanH. Patil,NeenaGoveas,KrishnanRangarajan, (2015) Test Suite Design Methodology Using Combinatorial Approach for Internet of Things Operating Systems. Journal of Software Engineering and Applications,08,303-312. doi: 10.4236/jsea.2015.87031</p></sec><sec id="s9"><title>Appendix A: ACTS generated test design for Contiki Operating System</title><disp-formula id="scirp.57945-formula133"><graphic  xlink:href="http://html.scirp.org/file/1-9302075x8.png"  xlink:type="simple"/></disp-formula></sec><sec id="s10"><title>Appendix B: Code Coverage data gathered for existing test suite of Contiki and Cooja using CodeCover</title><disp-formula id="scirp.57945-formula134"><graphic  xlink:href="http://html.scirp.org/file/1-9302075x9.png"  xlink:type="simple"/></disp-formula></sec><sec id="s11"><title>Appendix C: Tweaking of Ant Build.xml for Gathering the Coverage Data</title><p>&lt;!--?xml version=“1.0”?--&gt;</p><p>&lt;project name=&quot;“COOJA simulator” default=&quot;run&quot; basedir=&quot;.&quot;&gt;</p><p>&lt;property name=&quot;java&quot; location=&quot;java/&quot;&gt;</p><p>.</p><p>.</p><p>&lt;property name=“args” value=”/&gt;</p><p>&lt;property name=“codecoverDir” value=“/home/user/Desktop/CodeCover/codecover-batch-1.0/lib”/ &gt;</p><p>&lt;property name=“sourceDir” value=“/home/user/contiki-2.7/tools/cooja/java”/&gt;</p><p>&lt;property name=“instrumentedSourceDir” value=“instrumented”/&gt;</p><p>&lt;property name=“mainClassName” value=“se.sics.cooja.GUI”/&gt;</p><p>&lt;taskdef name=“codecover” classname=“org.codecover.ant.CodecoverTask” classpath=“${codecoverDir}/codecover-ant.jar”/ &gt;</p><p>&lt;target name=“clean”&gt;</p><p>&lt;delete&gt;</p><p>&lt;fileset dir=“.” includes=“*.clf”/&gt;</p><p>&lt;/delete&gt;</p><p>&lt;delete file=“codecover.xml”/&gt;</p><p>&lt;delete file=“report.html”/&gt;</p><p>&lt;delete dir=“report.html-files”/&gt;</p><p>&lt;/target&gt;</p><p>&lt;instrument containerId=“c” language=“java” destination=“${instrumentedSourceDir}” charset=“utf-8” copyUninstrumented=“yes” &gt;</p><p>&lt;source dir=“${sourceDir}”&gt;</p><p>&lt;include name=“**/*.java”/&gt;</p><p>&lt;/source&gt;</p><p>&lt;/instrument&gt;</p><p>&lt;save containerId=“c” filename=“codecover.xml”/&gt;</p><p>&lt;/codecover&gt;</p><p>&lt;/target&gt;</p><p>&lt;javac srcdir=“${instrumentedSourceDir}” destdir=“${instrumentedSourceDir}” encoding=“utf-8” target=“1.7” debug=“true” classpath=“${codecoverDir}/lib/codecover-instrumentationjava. jar:/home/user/contiki-2.7/tools/cooja/lib/log4j.jar:/home/user/contiki- 2.7/tools/cooja/lib/jdom.jar:/home/user/contiki-2.7/tools/cooja/lib/jsyntaxpane.jar” includeAntRuntime=“false” &gt;</p><p>&lt;/target&gt;</p><p>&lt;java classpath=“${instrumentedSourceDir}:${codecoverDir}/lib/codecoverinstrumentation- java.jar:/home/user/contiki- 2.7/tools/cooja/lib/log4j.jar:/home/user/contiki- 2.7/tools/cooja/lib/jdom.jar:/home/user/contiki-2.7/tools/cooja/lib/jsyntaxpane.jar” fork=“true” failonerror=“true” classname=“${mainClassName}” &gt;</p><p>&lt;jvmarg value=“-Dorg.codecover.coverage-log-file=test.clf”/&gt;</p><p>&lt;/java&gt;</p><p>&lt;/target&gt;</p><p>&lt;target name=“create-report”&gt;</p><p>&lt;codecover&gt;</p><p>&lt;load containerId=“c” filename=“codecover.xml”/&gt;</p><p>&lt;analyze containerId=“c” coverageLog=“*.clf” name=“Test Session”/&gt;</p><p>&lt;save containerId=“c” filename=“codecover.xml”/&gt;</p><p>&lt;report containerId=“c” destination=“report.html” template=“/home/user/Desktop/CodeCover/codecover-batch-1.0/reporttemplates/ HTML_Report_hierarchic.xml” &gt;</p><p>&lt;testCases&gt;</p><p>&lt;testSession pattern=“.*”&gt;</p><p>&lt;testCase pattern=“.*”/&gt;</p><p>&lt;/testSession&gt;</p><p>&lt;/testCases&gt;</p><p>&lt;/report&gt;</p><p>&lt;/codecover&gt;</p><p>&lt;/target&gt;</p><p>&lt;target name=“help”&gt;</p><p>&lt;echo&gt;</p><p>.</p><p>.</p><p>&lt;target name=“copy configs” depends=“init”&gt;</p><p>&lt;mkdir dir=“${build}”/&gt;</p><p>&lt;copy todir=“/home/user/contiki-2.7/tools/cooja/instrumented”&gt;</p><p>&lt;fileset dir=“${config}”/&gt;</p><p>&lt;/copy&gt;</p><p>.</p><p>.</p><p>.</p><p>&lt;target name=“jar_cooja” depends=“init, compile, copy configs, compile instrumented “ &gt;</p><p>&lt;mkdir dir=“${dist}”/&gt;</p><p>&lt;jar destfile=“${dist}/cooja.jar” base dir=“/home/user/contiki- 2.7/tools/cooja/instrumented” &gt;</p><p>&lt;manifest&gt;</p><p>&lt;attribute name=“Main-Class” value=“se.sics.cooja.GUI”/&gt;</p><p>&lt;attribute name=“Class-Path” value=“. lib/log4j.jar lib/jdom.jar lib/jsyntaxpane.jar”/ &gt;</p><p>&lt;/manifest&gt;</p><p>&lt;/jar&gt;</p><p>&lt;mkdir dir=“${dist}/lib”/&gt;</p><p>&lt;copy todir=“${dist}/lib”&gt;</p><p>&lt;fileset dir=“${lib}”/&gt;</p><p>&lt;/copy&gt;</p><p>&lt;/target&gt;</p><p>&lt;/project&gt;</p></sec></body><back><ref-list><title>References</title><ref id="scirp.57945-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Patil, A.H., Goveas, N. and Rangarajan, K. (2015) Re-architecture of Contiki and Cooja Regression Test Suite Using Combinatorial Testing Approach. ACM SIGSOFT Software Engineering Notes, 40, 1-3.</mixed-citation></ref><ref id="scirp.57945-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Richard Kuhn, D., Kacker, R.N. and Lei, Y. (2013) Introduction to Combinatorial Testing. Text Book.</mixed-citation></ref><ref id="scirp.57945-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Richard Kuhn, D., Kacker, R.N. and Lei. Y. (2013) Practical Combinatorial Testing Manual. NIST Special Publications 800-142.</mixed-citation></ref><ref id="scirp.57945-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">NIST. http://csrc.nist.gov/groups/SNS/acts/index.html</mixed-citation></ref><ref id="scirp.57945-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Nie, C., et al. (2011) A Survey of Combinatorial Testing. ACM Computing Surveys, Vol. 43, No. 2, Article 11.</mixed-citation></ref><ref id="scirp.57945-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Ammann, P. and Offutt, J. (2008) Introduction to Software Testing. Cambridge University Press, New York.http://dx.doi.org/10.1017/CBO9780511809163</mixed-citation></ref><ref id="scirp.57945-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Beizer, B. (1990) Software Testing Techniques. 2nd Edition, Van Nostrand Reinhold, New York.</mixed-citation></ref><ref id="scirp.57945-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">ASTQB (2014) Introducing Combinatorial Testing in Large Organizations.</mixed-citation></ref><ref id="scirp.57945-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Bach, J. and Shroeder, P. (2004) Pairwise Testing—A Best Practice That Isn’t. Proceedings of 22nd Pacific Northwest Software Quality Conference, Portland, 180-196.</mixed-citation></ref><ref id="scirp.57945-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Baresi, L. and Young, M. (2001) Test Oracles. Department of Computer and Information Science, University of Oregon, Eugene. http://www.cs.uoregon.edu/michal/pubs/oracles.html</mixed-citation></ref><ref id="scirp.57945-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">NourozBorazjany, M., Yu, L., Lei, Y., Kacker, R.N. and Kuhn, D.R. (2012) Combinatorial Testing of ACTS: A Case Study. 2012 IEEE 5th International Conference on Software Testing, Verification and Validation, 17-21 April 2012, Montreal, 971.</mixed-citation></ref><ref id="scirp.57945-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Combinatorial Coverage Measurement NASA IV&amp;V Workshop, 11-13 September 2012.</mixed-citation></ref><ref id="scirp.57945-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Ammann, P. and Black, P.E. (1999) Abstracting Formal Specifications to Generate Software Tests via Model Checking. Proceedings of 18th Digital Avionics Systems Conference, 2, 10.A.6.1-10.A.6.10.http://dx.doi.org/10.1109/dasc.1999.822091</mixed-citation></ref><ref id="scirp.57945-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Kuhn, D.R., Higdon, J.M., Lawrence, J.F., Kacker, R.N. and Lei, Y. (2012) Combinatorial Methods for Event Sequence Testing. 5th International Workshop on Combinatorial Testing, Montreal, 17-21 April 2012, 601-609.</mixed-citation></ref><ref id="scirp.57945-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Lei, Y. (2007) IPOG—A General Strategy for t-Way Software Testing. 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems, Tucson, 26-29 March 2007, 549-556.</mixed-citation></ref><ref id="scirp.57945-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Price, C., Kuhn, R., et al. (2013) Evaluating the t-Way Technique for Determining the Thoroughness of a Test Suite. NASA IV&amp;V Workshop, Fairmont, September 2013.</mixed-citation></ref></ref-list></back></article>