<?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.2023.165007</article-id><article-id pub-id-type="publisher-id">JSEA-125420</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>
 
 
  Guideline of Test Suite Construction for GUI Software Centered on Grey-Box Approach
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Mengqing</surname><given-names>TanLi</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Jiyi</surname><given-names>Xiao</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Ying</surname><given-names>Zhang</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib></contrib-group><aff id="aff2"><addr-line>School of Mechanical Engineering, University of South China, Hengyang, China</addr-line></aff><aff id="aff1"><addr-line>School of Software, University of South China, Hengyang, China</addr-line></aff><pub-date pub-type="epub"><day>31</day><month>05</month><year>2023</year></pub-date><volume>16</volume><issue>05</issue><fpage>113</fpage><lpage>143</lpage><history><date date-type="received"><day>30,</day>	<month>March</month>	<year>2023</year></date><date date-type="rev-recd"><day>28,</day>	<month>May</month>	<year>2023</year>	</date><date date-type="accepted"><day>31,</day>	<month>May</month>	<year>2023</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, the test suite construction for GUI (Graphical User Interface) software may be executed centered on grey-box approach with the prior test design of window access controls for unit testing, including front-end method of white box and follow-up black box method for integration testing. Moreover, two key opinions are proposed for the test suite construction for GUI software, the first one is that the “Triple-step method” should be used for unit testing with the prior disposing of data boundary value testing of input controls, and another one is that the “Grey-box approach” should be applied in integration testing for GUI software with necessary testing preparation in the precondition. At the same time, the testing of baseline version and the incremental testing should be considered for the test case construction to coordinate with the whole evolution of software product today. Additionally, all our opinion and thought are verified and tested with a typical case of GUI software
  &amp;#8212;PQMS (Product Quality Monitoring Software/System), and results indicate that these methods and specific disposing are practical and effective.
 
</p></abstract><kwd-group><kwd>Test Suite Construction</kwd><kwd> GUI Software</kwd><kwd> Triple-Step Method</kwd><kwd> Grey-Box Approach</kwd><kwd> Guideline</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>GUI (Graphical User Interface) software has become the majority of current software and played a dominant role for mobile and desktop software in update engineering system [<xref ref-type="bibr" rid="scirp.125420-ref1">1</xref>] , and the GUI software has covered a wide area for engineering application as shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>. Further, we believe that this trend will be sustainable for a long period in the future. However, the testing of GUI</p><p>software has also faced some difficulties especially for the large scale software system with many communication interfaces and data scenarios. Of course, the difficulty of test suite construction for GUI software is the main aspect including the problem of how to improve the testing efficiency and how to assure testing quality. Generally, for the former, test engineer must consider how to do software testing with less time, which the grey-box approach has been proposed for GUI software testing in our study and testing practice [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] , and for another problem, it will refer to accurately testing and BUG location for GUI software, which FTA (Fault Tree Analysis) has used in regression testing to deal with the software change [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] . However, concerning the core problem with test suite construction, this study will mainly focus on the grey-box approach which applied in GUI software testing.</p><p>This guideline is prepared for software companies and relative application areas, and it is a technical guidance which its thought and essence is scientifically summarized from testing practice and it also is derived from software programming technique in fact [<xref ref-type="bibr" rid="scirp.125420-ref4">4</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref5">5</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref6">6</xref>] , in which there is not a bit of practical joke and baloney. As a result, this guideline will be illustrated and verified by a set of factual software testing examples [<xref ref-type="bibr" rid="scirp.125420-ref7">7</xref>] . However, this guideline must be fine-tuned in terms of the actual situation of software companies and relative application areas to assure the effectiveness of method application [<xref ref-type="bibr" rid="scirp.125420-ref8">8</xref>] .</p></sec><sec id="s2"><title>2. Related Literature and Work</title><p>Emil Alegroth, Robert Feldt [<xref ref-type="bibr" rid="scirp.125420-ref8">8</xref>] imply that test suite construction is done all through the process of software testing in the case company—Spotfy, but the importance of testing data is ignored or omitted in their observation. Ron Patton in his writings “Software Testing” discussed the specific testing of GUI by using one chapter [<xref ref-type="bibr" rid="scirp.125420-ref5">5</xref>] , and proposed seven aspects about it including 1) directly perceiving through the senses, 2) consistency, 3) nimbleness, 4) comfort, 5) correctness, and 6) usefulness, however the systemic approach for GUI software testing is lack especially for specific testing phase e.g. unit testing and integration testing. Fu Bing [<xref ref-type="bibr" rid="scirp.125420-ref6">6</xref>] puts forward that the test case constructing is the core matter of software testing as an effective measure for improving controllability and software should be checked and tested with test case according to the requirement from user. At the same time, the difficulty of software testing for GUI was conscious in the writings of Fu Bing, and Fu Bing et al. thought that the study of GUI testing is in the initial phase at present and existed technology cannot assure the quality of factual GUI software. Additionally, the magnitude of test data is ignored too. Li Fan [<xref ref-type="bibr" rid="scirp.125420-ref7">7</xref>] proposed the main content of test design for test suite construction, and has considered the magnitude of testing sequence in software testing activity.</p><p>As a consequence, our study and testing practice [<xref ref-type="bibr" rid="scirp.125420-ref9">9</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref11">11</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref12">12</xref>] has demonstrated the magnificence of data-driven in engineering application software, and the grey-box approach is proposed for dealing with the difficulty of software testing for GUI based on window frame in our recent research [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] .</p><p>Further, the test suite construction, as the key aspect of software testing activity, should be paid more attention, so previous work [<xref ref-type="bibr" rid="scirp.125420-ref12">12</xref>] has investigated the test suite construction of smoke test. Moreover, the recent study [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] has proposed the grey-box technique of integration testing for GUI software, and more recent research [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] has provided the constructing method of test suite, including the testing method of data boundary value of input controls and the typical disposing method of function and state testing using the improved STD (State Transform Diagram).</p><p>Consequently, this study gives the guideline of test suite construction for GUI software centered on grey-box approach, and deeply discusses the constructing method and process including unit testing and integration testing by a typical case of GUI software—PQMS (Product Quality Monitoring Software/System).</p></sec><sec id="s3"><title>3. Background and Definition of Terminology</title><p>When we start a task of software testing, regardless of any testing type, the first matter must be the construction of test case or test suite. In fact, test suite construction has become the key and most important work in software testing. However, how to construct test case or test suite for GUI software with engineering method? It probably is not a very easy-to-answer problem. As such, we would build some references in the following.</p><sec id="s3_1"><title>3.1. Research Methodology</title><p>Generally, software testing can be divided into four testing phases including unit testing, integration testing, system testing and validity testing. Furthermore, white box method and black box method are usual testing methods in software testing. And white box method is the traditional method previously in unit testing especially for logic testing, but black box method is more usually used in function testing [<xref ref-type="bibr" rid="scirp.125420-ref5">5</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref6">6</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref7">7</xref>] .</p><p>For the view of testing phase, test suite construction should generally include test suite construction of unit testing and test suite construction of integration testing. However, in some situations, test suite construction of system testing and test suite construction of validation testing must be considered too [<xref ref-type="bibr" rid="scirp.125420-ref6">6</xref>] .</p><p>For the view of software production, test suite construction generally has two aspects, i.e. test suite construction of baseline version and test suite construction of incremental change [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] .</p><p>In actual software testing, all above objects should be considered in terms of factual requirement. In order to deeply investigate the test suite construction, we firstly outlined a whole view of test suite construction centered on grey-box approach as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref> [<xref ref-type="bibr" rid="scirp.125420-ref9">9</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref11">11</xref>] .</p></sec><sec id="s3_2"><title>3.2. Software Testing for GUI Software</title><p>For GUI software, the GUI testing is a very important context and should be taken as a high-level testing, especially in large scale GUI software system. Consequently, we gave a general overview about the level of GUI testing in software testing as shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>.</p><p>In contrast to previous DOS software, such as the runtime software of industrial control device, the GUI testing in large scale software system faced some challenges [<xref ref-type="bibr" rid="scirp.125420-ref13">13</xref>] as follows:</p><p>&#183; Functionalities of software system are much more.</p><p>&#183; States of software system are much more and transformed with more branch and loop.</p><p>&#183; Data organizing type and saving mode are more complex.</p><p>&#183; Information interchanging is done by more widely and rapidly mode such as internet.</p><p>&#183; Application scenarios will be happened with more layers and more entities.</p><p>Facing to these challenges, the test suite construction of GUI software should consider more concerns from more requirements [<xref ref-type="bibr" rid="scirp.125420-ref14">14</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref15">15</xref>] especially to strengthen the usability of user. Firstly, the GUI testing is taken as a more important part in GUI software testing including the testing of GUI controls and components and the general testing of function and state, besides the traditional logic testing.</p></sec><sec id="s3_3"><title>3.3. Construction Process of Software Test Suite</title><p>The workload of test suite construction almost has the ratio of 60% in software testing. The testing organizing of test suite construction will determine the quality and efficiency of software testing. Some basic and preparing work must be done before starting the test suite construction, such as familiarizing the code submitted from programmer, analyzing the requirement of testing environment and the dependency of units, and determining the general testing strategy and method, etc. If it is necessary, all preparing work should be organized by skilled tester or manager. In general, the procedure of test suite construction should be executed according to <xref ref-type="fig" rid="fig4">Figure 4</xref>.</p></sec><sec id="s3_4"><title>3.4. Definition of Terminology</title><p>In this paper, the following terminology is used to understand the accurate meaning of our study. For our study opinion, new software testing method should be explored because of some old traditional methods are not fitted for the GUI software testing, which mainly includes the “Triple-step method” in unit testing and “Grey-box approach” in integration testing.</p><p>In order to deeply discuss the problem of the GUI software testing, the GUI testing is defined that is taken as a high-level testing and usually implies the software testing from GUI aspect for general GUI software. The GUI testing based on “Sheet/Form” is factually adopted as a strategy of software testing, which the “Sheet/Form” is taken as a single unified entity with all controls/components and internal function disposing. Test suite construction of GUI software implies the constructing processing of test suite for GUI software, and it should include the dependency analysis with FTA, the writing and assigning of test case, and</p><p>the modifying and updating of test suite, etc.</p><p>In the procedure of test suite construction for GUI software, “Triple-step method” should be adopted for unit testing in terms of the testing sequence of “data testing → function testing → state testing”, and data boundary value testing of GUI input controls must be done firstly to assure the correctness and accuracy of data input, and process boundary value testing must be executed to avoid various leaks e.g. the leakage in the “getting the best deal”, and the data interface and format testing must be strengthened to get the good usability. Function testing is the core task in the unit testing, and the limitation testing is generally done in the process of function testing, which limitation testing include all obliged limitation e.g. limitation of data input, limitation of function running, etc. At the same time, the state testing should be finished in unit testing to improve the software quality really, and “0-switch state testing” may be executed for general GUI software which every effective single-step transformation must be completely tested [<xref ref-type="bibr" rid="scirp.125420-ref7">7</xref>] . Consequently, the “Grey-box approach” should be adopted for integration testing. In general, integration testing has distinguished requirement with the unit testing, data boundary value testing of GUI input controls should not be repeated, and function testing only occurred among units regardless of internal function disposing for GUI software, and state testing should be executed in terms of factual situation of software/system.</p></sec></sec><sec id="s4"><title>4. Grey-Box Approach [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>]</title><p>For GUI software, the grey-box approach can be mainly used for constructing the test suite of baseline version in integration testing and it will achieve minimum of testing time for dealing with combinatory explosion of GUI testing. The principle of grey-box approach is shown in <xref ref-type="fig" rid="fig5">Figure 5</xref>.</p><p>In <xref ref-type="fig" rid="fig5">Figure 5</xref>, the front part is interface controls of Windows GUI, i.e. “Windows control 1”, “Windows control 2”, &#183;&#183;&#183;, “Windows control m”. And in the center part of <xref ref-type="fig" rid="fig5">Figure 5</xref>, “Message handling” and “ Map function” are the core part of message disposing based on event from C<sub>1</sub>, C<sub>2</sub>, &#183;&#183;&#183;, C<sub>m</sub>. As a consequence, the function disposing unit, i.e. “Handling unit 1”, “Handling unit 2”, &#183;&#183;&#183;, “Handling unit n”, is the actual function handling part by message map route, i.e. H<sub>1</sub>,</p><p>H<sub>2</sub>, &#183;&#183;&#183;, H<sub>n</sub>. We insert a pole in the beginning of mapping function which it marked with the point illustrated in <xref ref-type="fig" rid="fig5">Figure 5</xref>, for the section in the front of the pole, the white-box method is used to test, and for the section behind the pole, the black-box method is applied for actual function testing. Using this approach, we can only test the message path {C<sub>1</sub>→H<sub>1</sub>}, {C<sub>1</sub>→H<sub>2</sub>}, {C<sub>1</sub>→……}, {C<sub>1</sub>→H<sub>n</sub>}, it will cover all message path {{C<sub>1</sub>→H<sub>1</sub>}, {C<sub>1</sub>→H<sub>2</sub>}, {C<sub>1</sub>→……}, {C<sub>1</sub>→H<sub>n</sub>}}, {{C<sub>2</sub>→H<sub>1</sub>}, {C<sub>2</sub>→H<sub>2</sub>}, {C<sub>2</sub>→……}, {C<sub>2</sub>→H<sub>n</sub>}}, {{……→H<sub>1</sub>}, {……→H<sub>2</sub>}, {……→……}, {……→H<sub>n</sub>}}, {{C<sub>m</sub>→H<sub>1</sub>}, {C<sub>m</sub>→H<sub>2</sub>}, {C<sub>m</sub>→……}, {C<sub>m</sub>→H<sub>n</sub>}}.</p><p>Generally, the selection of the pole position has several methods, details are specified as follows: 1) The path aggregation point by white-box analysis. 2) The point that message route must go through. 3) The entrance point of map function. 4) The entrance point of the initial member function.</p><p>By analysis and computation with factual example [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] , we conclude that, in integration testing for GUI Software, the application of grey-box technique will greatly improve the testing efficiency with about four times according to testing executed time.</p></sec><sec id="s5"><title>5. Software Test Suite Construction of Unit Testing</title><p>In a large sense, the majority of application software at present is GUI software, and the unit testing of GUI software is the indispensible phase. Thus, test suite construction of unit testing is an impassible and basic work.</p><p>Generally, the unit testing of GUI software should execute “Triple-step method” as shown in <xref ref-type="fig" rid="fig6">Figure 6</xref>, including 1) step 1—data testing, 2) step 2—function testing, and 3) step 3—state testing. For data testing, there are boundary value testing, data format and interface testing, and data safety testing, in which boundary value testing should include data boundary value testing and process boundary value testing. For function testing, it not only includes function-self run testing but also may have the limitation testing, such as the limitation of unpermitted empty, the input format limitation, the comparing and computing limitation, etc. In some cases, the limitation testing can be incorporated into</p><p>data testing, e.g. the testing for the control limitation is given independently. For state testing, the improved STD should be applied with “0-switch” requirement for general situation.</p><p>In the test suite construction of data testing, some matters should be considered as follows: 1) Sampling testing method in data boundary value testing may be adopted in terms of the situation of factual software. 2) Data format and interface testing has several types including text file, database, etc. 3) Data safety testing is generally delayed to integration testing and system testing. 4) Usual items of test case include “ID”, “Input”, and “Expected output”, etc., and test environment may be given if necessary.</p><p>In the test suite construction of function and state testing, some matters should be also noticed as follows: 1) Function-self run testing should be constructed firstly, particularly noticing the construction for the window access controls and white-box testing in grey-box approach. 2) Limitation testing must be completely conducted as careful as possible. 3) Before state test suite constructing, all states and state-transform should be depicted correctly and completely in the improved STD. 4) Items in the table of test cases should contain “ID”, “Start state”, “End state”, ”Input”, “Expected output” etc., and precondition should be given if necessary. 5) The ID must be unified by specification. 6) The description of “Input” and “Expected output” must be clear and easy-to-understand.</p><sec id="s5_1"><title>5.1. Test Suite Construction of Baseline Version</title><sec id="s5_1_1"><title>5.1.1. Window Access Controls or Window Controls of Function Access</title><p>Window access controls or window controls of function access is one kind of GUI controls, which the interface control locates and is contained in the window interface and user can access the software function by this control. For Windows system, usual controls have the menu item of main menu, the menu item of popup menu, shortcut key, toolbar, hotkey, etc.</p><p>The test suite construction of window access controls should be prior to do in unit testing especially in preparation of integration testing for grey-box approach [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] , and it must be considered in specific terms including testing organizing e.g. “cross-testing” [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] [<xref ref-type="bibr" rid="scirp.125420-ref11">11</xref>] . The specific format of the writing of test case and test suite may be executed according to the actual situation of software companies, and we give a basic reference format for guidance in this paper. Consequently, a typical example of test case of the menu item testing is given in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>, which is a “Basic Setting” menu of PQMS2 (Product Quality Monitoring Software 2.0) [<xref ref-type="bibr" rid="scirp.125420-ref16">16</xref>] .</p><p>Matters needed attention in writing test case of window access controls are: 1) all test cases for a main menu should be together, 2) only highlighting the menu item is required rather calling the function, 3) including the content checking of window access controls e.g. the spelling of words.</p></sec><sec id="s5_1_2"><title>5.1.2. Basic Setting Unit</title><p>For a software system, the basic setting is generally needed for the change of user status and application status. Being different from the window access control, the basic setting unit has the interaction of data, and its test suite construction should include data testing and function and state testing.</p><p>1) Data testing</p><p>In general, test suite construction of the basic setting unit may be similar to general basic “Sheet/Form” [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] including the testing of data boundary value, process boundary value, and data format and interface etc. Here, the data boundary value testing is a new testing project and testing method possibly applying sampling testing, details may be referred to [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] . For the “Basic Setting” sheet of PQMS2, as a typical small “Sheet/Form”, the testing of data boundary value should be prior to be conducted for GUI software, and the specific format of test cases is given in <xref ref-type="table" rid="table2"><xref ref-type="table" rid="table">Table </xref>2</xref>.</p><p>2) Function and state testing [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>]</p><p>The function and state testing of the “Basic Setting” sheet is relatively simple because less type and quantity of controls are used, and the specific format of test cases of function testing is given as shown in <xref ref-type="table" rid="table3"><xref ref-type="table" rid="table">Table </xref>3</xref>.</p><p>For the state testing of this basic setting unit, the improved STD should be applied, and details are shown in <xref ref-type="fig" rid="fig7">Figure 7</xref>, which the event e<sub>i</sub> and action a<sub>i</sub> are given with an attached list and all of symbol description are omitted here. Consequently, the construction of test cases can be done according to this diagram,</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref></label><caption><title> Test cases of the window access controls for baseline version</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC010</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Basic Setting - System User - Set Authority”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated for highlighting.</td></tr><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC011</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Basic Setting - System User - Modify Password”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated for highlighting.</td></tr><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC017</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Basic Setting - Basic setting of monitoring”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated for highlighting.</td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2"><xref ref-type="table" rid="table">Table </xref>2</xref></label><caption><title> Test cases of the window access controls for baseline version</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-MBB-UNI-TC010</td><td align="center" valign="middle" >Starting the basic setting sheet of monitoring from menu item “Basic Setting - Basic setting of monitoring”, and in the ComBoBox of “Accuracy of inspection data” input character “T…” by keyboard with limited seven times, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only six characters are permitted for input in the ComBoBox of data accuracy.</td></tr><tr><td align="center" valign="middle" >PQMS2-MBB-UNI-TC011</td><td align="center" valign="middle" >In the ComBoBox of “Moving mode”, input continuously character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of moving mode.</td></tr><tr><td align="center" valign="middle" >PQMS2-MBB-UNI-TC012</td><td align="center" valign="middle" >In the ComBoBox of “Sampling limit of counting chart”, input continuously character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of sampling limit of counting chart.</td></tr><tr><td align="center" valign="middle" >PQMS2-MBB-UNI-TC013</td><td align="center" valign="middle" >In the ComBoBox of “Division or department”, input continuously character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of division or department.</td></tr><tr><td align="center" valign="middle" >PQMS2-MBB-UNI-TC014</td><td align="center" valign="middle" >In the ComBoBox of “Name of testing operator”, input continuously character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of name of testing operator.</td></tr></tbody></table></table-wrap><p>and the specific format of test cases of state testing is given as shown in <xref ref-type="table" rid="table4"><xref ref-type="table" rid="table">Table </xref>4</xref>.</p></sec><sec id="s5_1_3"><title>5.1.3. Initialization Unit</title><p>Because the initialization unit is driven directly by a menu item with the member function rather than driven by controls in a “Sheet/Form”, this unit has not data testing of input controls.</p><p>For the function and state testing, it is necessary to analyze with the improved STD even though it may be not complex. The improved STD of initializing to delete all inspection data from category is shown in <xref ref-type="fig" rid="fig8">Figure 8</xref>. Consequently, test cases can be designed according to this improved STD with less difficulty according above method. As such, test cases of function testing in this initialization unit are given in <xref ref-type="table" rid="table5"><xref ref-type="table" rid="table">Table </xref>5</xref>, and test cases of state testing are given in <xref ref-type="table" rid="table6"><xref ref-type="table" rid="table">Table </xref>6</xref>.</p></sec><sec id="s5_1_4"><title>5.1.4. Basic “Sheet/Form” Unit</title><p>By a lot of testing practice, in our opinion, the GUI testing of software system may be executed based on “Sheet/Form” [<xref ref-type="bibr" rid="scirp.125420-ref3">3</xref>] . In detail, all controls and components in a “Sheet/Form” should be taken as a unified unit if the function is implemented within the “Sheet/Form”. For the function of software is directly driven by a control and component in the window interface, the testing should be similarly done in terms of the member function driven by event of the control in</p><table-wrap id="table3" ><label><xref ref-type="table" rid="table3"><xref ref-type="table" rid="table">Table </xref>3</xref></label><caption><title> Test cases of the function testing for basic setting unit<sup>a</sup></title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-SMF-UNI-TC010</td><td align="center" valign="middle" >Starting “Basic setting of monitoring” sheet from the menu item of “Basic Setting - Basic setting of monitoring”, and input “0.001” in the ComBoBox of “Data Accuracy”, and input “Single data - Automatic” in the ComBoBox of “Moving mode”, and input “More than or equal to 10 and less than 1000” in the ComBoBox of “Sampling limit of counting chart” while the information of tester is kept invariant, and click the “Setting” button finally.</td><td align="center" valign="middle" >Correctly displaying the prompt of “The setting of control chat is saved.” and no prompt of error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMF-UNI-TC011</td><td align="center" valign="middle" >In the “Basic setting of monitoring” sheet, input “ ” in the “ComBoBox” of “Data Accuracy”, and input “Single data - Automatic” in the “ComBoBox” of “Moving mode”, and input “More than or equal to 10 and less than 1000” in the “ComBoBox” of “Sampling limit of counting chart” while the information of tester is kept invariant, and click the “Setting” button finally.</td><td align="center" valign="middle" >Displaying the prompt of “The setting of data accuracy is error, and only two values, i.e. 0.01 and 0.001.”</td></tr><tr><td align="center" valign="middle" >PQMS2-SMF-UNI-TC012</td><td align="center" valign="middle" >In the “Basic setting of monitoring” sheet, input “0.001” in the “ComBoBox” of “Data Accuracy”, and input “ ” in the “ComBoBox” of “Moving mode”, and input “More than or equal to 10 and less than 1000” in the “ComBoBox” of “Sampling limit of counting chart” while the information of tester is kept invariant, and click the “Setting” button finally.</td><td align="center" valign="middle" >Displaying the prompt of “The setting of moving mode is error, and only giving the mode of ‘Single data-Automatic’”.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMF-UNI-TC013</td><td align="center" valign="middle" >In the “Basic setting of monitoring” sheet, input “0.001” in the “ComBoBox” of “Data Accuracy”, and input “Single data - Automatic” in the “ComBoBox” of “Moving mode”, and input “ ” in the “ComBoBox” of “Sampling limit of counting chart” while the information of tester is kept invariant, and click the “Setting” button finally.</td><td align="center" valign="middle" >Displaying the prompt of “The setting of sampling limit of counting chart is error, and the number must be more than 0 and less than 10,000”.</td></tr></tbody></table></table-wrap><p>a. In writing test case of function testing for general situation, it is noticed that all correct and error possibility of function running must be considered.</p><table-wrap id="table4" ><label><xref ref-type="table" rid="table4"><xref ref-type="table" rid="table">Table </xref>4</xref></label><caption><title> Test cases of the state testing for basic setting unit<sup>b</sup></title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Start state</th><th align="center" valign="middle" >End state</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC010</td><td align="center" valign="middle" >S<sub>0</sub></td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >Click the menu item of “Basic Setting - Basic setting of monitoring” from the main interface.</td><td align="center" valign="middle" >Display the sheet of basic setting of monitoring.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC011</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >No inputting operation, click the button of “Cancel” or “Shut-off” button of up-right corner in the sheet.</td><td align="center" valign="middle" >Cancel basic setting, and enter the system idle.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC012</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >Enter the sheet again, and input data in the ComBoBox.</td><td align="center" valign="middle" >Display the data in the sheet.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC013</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Input correct default data in the sheet, and click the button of “Setting”.</td><td align="center" valign="middle" >No prompt of error information, and save the setting data.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC014</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >Enter the sheet again, and input “” in all ComBoBoxes, and click the button of “Setting”.</td><td align="center" valign="middle" >Prompt error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC015</td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Click the button of “OK” or “Shut-off” button of up-right corner in the prompt dialogue.</td><td align="center" valign="middle" >Enter the system idle.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC016</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Enter the sheet again, and click the button of “Cancel” in the sheet when inputting data.</td><td align="center" valign="middle" >Cancel basic setting, and enter the system idle.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC017</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >Enter the sheet again, and click the button of “Default” in the sheet.</td><td align="center" valign="middle" >Restore default setting.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC018</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>5</sub></td><td align="center" valign="middle" >When system is idle, click “Shut-off” button of up-right corner in the system interface.</td><td align="center" valign="middle" >Exit.</td></tr></tbody></table></table-wrap><p>b. In writing test case of state testing for general situation, it is noticed that the correct and completed STD is needed and 0-switch state testing is passable for most situation in general software system.</p><p>the “Sheet/Form”, i.e. the testing of this situation should be disposed in the level of member function.</p><p>The “Product and class” sheet of PQMS2 [<xref ref-type="bibr" rid="scirp.125420-ref16">16</xref>] , as shown in <xref ref-type="fig" rid="fig9">Figure 9</xref>, is a typical popular “Sheet/Form” including basic GUI controls and components, and popular functions of data adding, data modifying, data deleting. As such, the test suite construction of data testing, function and state testing for this basic sheet is</p><table-wrap id="table5" ><label><xref ref-type="table" rid="table5"><xref ref-type="table" rid="table">Table </xref>5</xref></label><caption><title> Test cases of function testing in initialization unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-SSF-UNI-TC011</td><td align="center" valign="middle" >Starting the main interface, and click the menu item of “Basic Setting - Initialization - System User Authority - Initializing to delete all inspection data from category”, and click button “OK” in the confirming dialogue.</td><td align="center" valign="middle" >Correctly displaying the prompt of “All inspection data are deleted.” and no prompt of error information.</td></tr></tbody></table></table-wrap><table-wrap id="table6" ><label><xref ref-type="table" rid="table6"><xref ref-type="table" rid="table">Table </xref>6</xref></label><caption><title> Test cases of the state testing for basic setting unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Start state</th><th align="center" valign="middle" >End state</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC010</td><td align="center" valign="middle" >S<sub>0</sub></td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >Click the menu item of “Basic Setting - Basic setting of monitoring” from the main interface.</td><td align="center" valign="middle" >Display the sheet of basic setting of monitoring.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC011</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >No inputting operation, click the button of “Cancel” or “Shut-off” button of up-right corner in the sheet.</td><td align="center" valign="middle" >Cancel basic setting, and enter the system idle.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC012</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >Enter the sheet again, and input data in the ComBoBox.</td><td align="center" valign="middle" >Display the data in the sheet.</td></tr><tr><td align="center" valign="middle" >PQMS2-SMS-UNI-TC013</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Input correct default data in the sheet, and click the button of “Setting”.</td><td align="center" valign="middle" >No prompt of error information, and save the setting data.</td></tr></tbody></table></table-wrap><p>discussed in detail in the following.</p><p>1) Data testing of the “Product or class” sheet</p><p>a) Data boundary value testing of “input controls”</p><p>Similarly, for the “Product and class” sheet, as a typical popular “Sheet/Form”, the testing of data boundary value should also be prior to be conducted while the limitation testing is incorporated into function testing for GUI software, and the specific format of test cases is given in <xref ref-type="table" rid="table7"><xref ref-type="table" rid="table">Table </xref>7</xref>.</p><p>2) Data testing of the “Product or class” sheet</p><p>The function and state testing of the “Product or class” sheet is a typical example because functions and types of controls are representative in some extent, and the specific format of test cases of function testing of this basic “Sheet/Form” unit is given as shown in <xref ref-type="table" rid="table">Table </xref>A1 of the Appendix.</p><p>Similarly, the improved STD should be applied to construct the state test case of the “Product or class” sheet, and details are shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>0. Consequently, the test case construction of the state testing can be accomplished according to this diagram, and the specific format of test cases of state testing is given as shown in <xref ref-type="table" rid="table">Table </xref>A2 of the Appendix.</p></sec><sec id="s5_1_5"><title>5.1.5. Complex “Sheet/Form” Unit</title><p>In various “Sheet/Form” units, there is a kind of sheet that there are many kinds of control or component and it has data exchange with other sheet or component, and the “Inspection process” sheet unit is a typical example, as shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>1 [<xref ref-type="bibr" rid="scirp.125420-ref16">16</xref>] . In the “Inspection process” sheet unit, the function of “Add to the monitoring category” with “Button control” will do data exchange with the “Tree control” component in main window.</p><p>In <xref ref-type="fig" rid="fig1">Figure 1</xref>1, as a more complex “Sheet/Form” unit, the sight of typical sheet of data disposing is presented. Moreover, the “Tree control” on the left of the sheet is to display the data chain of “product or class - part/component - inspection process”, and detail information of inspection process taken in the “List control” can be found on the up-right of panel, and the area on the down-right of panel is to accomplish the input of inspection process data including popular EditBox control, ComBoBox control, Button control, etc.</p><table-wrap id="table7" ><label><xref ref-type="table" rid="table7"><xref ref-type="table" rid="table">Table </xref>7</xref></label><caption><title> Test cases of the data boundary value testing for the “Product or class” sheet</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-PDB-UNI-TC010</td><td align="center" valign="middle" >Start the product or class sheet from the menu item of “Basic quality data - Product or class”, and continuously input character “T…” by keyboard with limited 21 times in the EditBox “Code of product or class”, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 20 characters are permitted for input in this EditBox.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDB-UNI-TC011</td><td align="center" valign="middle" >In the product or class sheet, continuously input character “T…” by keyboard with limited 51 times in the EditBox “Name of product or class”, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in this EditBox.</td></tr></tbody></table></table-wrap><p>For this “Inspection process” sheet unit, its unit testing should similarly include data testing, function testing and state testing.</p><p>1) Data testing</p><p>As mentioned above, test suite construction of data testing of the “Inspection process” sheet unit should include the testing of data boundary value, the testing of process boundary value, and the testing of data format and interface etc., while the testing of data limitation is incorporated into function testing.</p><p>a) Data boundary value testing of “input controls”</p><p>At first, the testing of data boundary value should be similarly executed as a new testing project for GUI software, and the specific result of test design is given in <xref ref-type="table" rid="table">Table </xref>A3 of the Appendix.</p><p>b) Data format testing of data file</p><p>In general, the complex “Sheet /Form” unit has the processing of many kinds of data I/O including the data type of controls, the data type of text file, and the data type of database. The data type of inputting from controls has been discussed as above. Here, the data interface and format testing for the data type of text file will be investigated in this “Inspection process” sheet.</p><p>In the testing of data format and interface for the “Inspection process” sheet unit, the format of file name should be tested firstly, and the format of every data may be checked and verified in sequence. Test cases of the data format testing for the “Inspection process” sheet is given in <xref ref-type="table" rid="table">Table </xref>A4 of the Appendix. Additionally, <xref ref-type="table" rid="table">Table </xref>A5 of the Appendix is the specification of data format with the checking of “the tail of file cannot be empty” for “Import inspection process data” in the “Inspection process” sheet. And other test cases of data format testing are accomplished with code of “PQMS2-PDI-UNI-TC010~TC016”, details are omitted here.</p><p>2) Function and state testing</p><p>As a complex “Sheet/Form” unit, the function and state testing of the “Inspection process” sheet unit is relatively difficult not only due to many controls and components but also because of a lot of function disposing.</p><p>For the function testing of the “Inspection process” sheet unit, it must include 1) initialization displaying of the sheet with default data—test case “PQMS2-IDF-UNI-TC010”, 2) clicking and displaying of inspection process data in monitoring category—test case “PQMS2-IDF-UNI-TC011”, 3) adding of inspection process data—test case “PQMS2-IDF-UNI-TC030~TC044” and “PQMS2-IDF-UNI-TC003-AD~TC004-AD”, 4) modifying of inspection process data—test case “PQMS2-IDF-UNI-TC012~TC029” and “PQMS2-IDF-UNI-TC001-AD~TC002-AD”, 5) deleting of inspection process data—test case “PQMS2-IDF-UNI-TC050~TC053” and “PQMS2-IDF-UNI-TC005-AD~TC006-AD”, 6) searching of inspection process data according to name—test case “PQMS2-IDF-UNI-TC054~TC058” and “PQMS2-IDF-UNI-TC007-AD, and 7) resetting of dada input—test case “PQMS2-IDF-UNI-TC059”.</p><p>As a guidance of test suite construction, we only give some test case examples for adding of inspection process data as shown in <xref ref-type="table" rid="table">Table </xref>A6 of the Appendix, and remaindering is omitted here. Consequently, <xref ref-type="table" rid="table">Table </xref>A6 has given the function-self run testing with “PQMS2-IDF-UNI-TC030” and the limitation testing of “unpermitted overlapping” and “unpermitted empty” with “PQMS2-IDF-UNI-TC031~TC034”. As such, other test case constructing of limitation testing can be done in a similar way.</p><p>For the state testing of the “Inspection process” sheet unit, the improved STD should be drawn before constructing the state test suite. In consequence, <xref ref-type="fig" rid="fig1">Figure 1</xref>2 has shown the details of the improved STD of the “Inspection process” sheet</p><p>in PQMS2. As such, we can construct the test suite of state testing for the “Inspection process” sheet unit in PQMS2 in terms of the improved STD. Consequently, the specific format of test cases of state testing is given as shown in <xref ref-type="table" rid="table">Table </xref>A7 of the Appendix.</p></sec></sec><sec id="s5_2"><title>5.2. Test Suite Construction of Incremental Unit Testing</title><p>In the cycle of software developing and maintenance, all composing parts of software will change to fitful the varied requirement of customers, e.g. GUI, data and data organizing etc. For this kind of variety, incremental construction of test suite must be done in regression testing [<xref ref-type="bibr" rid="scirp.125420-ref9">9</xref>] . At the same time, we must known whether the modified or added part has influenced the other unit of the software [<xref ref-type="bibr" rid="scirp.125420-ref9">9</xref>] . Generally, because the unit testing based on “Sheet/Form” has been independent of other units for specified requirement, the dependency analysis of unit testing could be usually omitted instead of integration testing, but the testing of the member function must be concerned with distinguished consideration. As a consequence, the incremental construction is demonstrated in terms of grey-box approach [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] in the following.</p><sec id="s5_2_1"><title>5.2.1. Incremental Unit Testing of Window Access Controls</title><p>Usually, window access controls are changing including its content and layout according to requirement of users and manager. In the view of quality assurance, this variety must be tested and controlled in terms of the specification of regression testing.</p><p>1) Modification of window access controls</p><p>If the content of a menu item or main menu is modified, this modification must be tested for regression testing. Consequently, the test case of this window access control must be constructed again. One typical example is shown in “ID—PQMS2-MEF-UNI-TC017-MF” of <xref ref-type="table" rid="table">Table </xref>8, which it has tiny difference from PQMS2-MEF-UNI-TC017 of <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>.</p><p>2) Addition of window access controls</p><table-wrap id="table8" ><label><xref ref-type="table" rid="table">Table </xref>8</label><caption><title> Test cases of window access controls for incremental unit testing</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC017-MF</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Basic Setting - System User - Basic setting of control chart”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated till highlighted.</td></tr><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC025</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Quality Monitoring Report - Monthly Report”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated till highlighted.</td></tr><tr><td align="center" valign="middle" >PQMS2-MEF-UNI-TC026</td><td align="center" valign="middle" >Starting the main menu from windows main interface, and click and highlight the menu item of “Quality Monitoring Report - Yearly Report”.</td><td align="center" valign="middle" >This menu item is correct and it can be activated till highlighted.</td></tr></tbody></table></table-wrap><p>When a set of functions are added for a software system, all additions must be tested for regression testing. Consequently, test cases of all added window access controls must be constructed. One typical example is the adding of “Report output” in an application, the construction of test cases in PQMS is shown in “ID-PQMS2-MEF-UNI-TC025-AD~TC026-AD”of <xref ref-type="table" rid="table">Table </xref>8.</p></sec><sec id="s5_2_2"><title>5.2.2. Incremental Unit Testing of “Sheet/Form” Unit</title><p>1) Data testing</p><p>Modification of basic “Sheet /Form” unit</p><p>If the control of a basic “Sheet/Form” is changed, this change must be tested for regression testing in terms of this change. Consequently, the test case of this basic “Sheet/Form” must be constructed again. Similarly, if the data boundary of controls is changed, the test case of data boundary value must be conducted again. One typical example is the change of data length in two EditBoxes of “Product or class” sheet as shown in “PQMS2-PDB-UNI-TC010-MF~TC011-MF” of <xref ref-type="table" rid="table">Table </xref>9, which it has some difference from <xref ref-type="table" rid="table7"><xref ref-type="table" rid="table">Table </xref>7</xref>.</p><p>2) Function and state testing</p><p>Addition of basic “Sheet/Form” unit</p><p>When an interface control and implement function are added for a “Sheet/Form”, this adding must be tested for regression testing. Consequently, test cases for this adding change must be constructed. One typical example is the adding of “Search-Name” in the data processing sheet, the construction of test cases is similar to the data testing above, but the function testing of member function of “Search-Name” button must be added, and state testing of this button must be inserted into the state test suite.</p></sec></sec></sec><sec id="s6"><title>6. Software Test Suite Construction of Integration Testing</title><sec id="s6_1"><title>6.1. Test Suite Construction of Baseline Version</title><p>In general, the test suite construction of integration testing for baseline version should be done using grey-box approach [<xref ref-type="bibr" rid="scirp.125420-ref2">2</xref>] for GUI software, except that it is very simple program or non-GUI software. As mentioned in Section 4, the</p><table-wrap id="table9" ><label><xref ref-type="table" rid="table">Table </xref>9</label><caption><title> Test cases of the data boundary value testing for incremental unit testing</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-PDB-UNI-TC010-MF</td><td align="center" valign="middle" >Start the product or class sheet from the menu item of “Basic quality data - Product or class”, and continuously input character “T…” by keyboard with limited six times in the EditBox “Code of product or class”, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only five characters are permitted for input in this EditBox.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDB-UNI-TC011-MF</td><td align="center" valign="middle" >In the product or class sheet, continuously input character “T…” by keyboard with limited 21 times in the EditBox “Name of product or class”, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 20 characters are permitted for input in this EditBox.</td></tr></tbody></table></table-wrap><p>grey-box approach is a better method in integration testing for GUI software based on window frame with efficiency improved about four times.</p><p>For the constructing of test suite of integration testing based on grey-box approach, the general procedure can be demonstrated as follows.</p><p>&#183; For one function disposing, several test cases of fore-end white-box testing should be constructed according to all kinds of control types in window frame.</p><p>&#183; In terms of factual software, using black-box testing method, test cases of function testing are conducted in sequence and distinguishing with various running situation, generally ignoring finished parts in unit testing.</p><p>&#183; Conducting test case for all follow-up function disposing with black-box testing method.</p><p>&#183; In the process of all follow-up construction of function test case, the mapping function should be chosen with the most rapid route.</p><p>&#183; If it is necessary, the test case of fore-end white-box testing must be conducted for all follow-up construction including controls activated in other units such as “Hotkey”.</p><p>&#183; Necessary description should be given in the process of test case construction.</p><p>Here, the constructing method and writing format are given for the integration testing with the case software, it is noticed that the precondition is generally needed for grey-box approach.</p><p>Without loss representative and typicality for GUI software, the integration testing of “Division and department” sheet in PQMS2 is investigated for baseline version according to the grey-box approach.</p><sec id="s6_1_1"><title>6.1.1. Test Suite Construction for “Division and Department” Sheet</title><p>The “Division and department” sheet is a basic “Sheet/Form” for getting basic data of factory division and department in PQMS2, which the GUI is similar to <xref ref-type="fig" rid="fig9">Figure 9</xref>. For shortening aim, the test suite constructing of integration function of “Add to monitoring category” in the “Division and department” sheet is only given here. Using the grey-box approach, test cases of the front-end white-box testing are given in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>0, and test cases of the black-box testing are given in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>1.</p></sec><sec id="s6_1_2"><title>6.1.2. Modification of Window Access Controls</title><p>As we all known, window access controls and its implementation functions usually are needed to modify sometimes, e.g. for fulfilling the supervision of key sampling or UI check. If the window access control changed, the test case of integration testing must be constructed again in terms of grey-box approach. As a typical example, in PQMS2, the menu item of “Output of inspection data” is modified to “Backup of inspection data output”, and test cases of fore-end white-box were changed with ID “P QMS2-ENT-INT-TC368-MF~TC369-MF” as shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>2, but test cases of the black-box testing are unnecessary to</p><table-wrap id="table10" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>0</label><caption><title> Test cases of front-end white-box for the “Division and department” sheet</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  colspan="3"  >Precondition—Insert the pole of &lt; MessageBox (“Testing output.”); &gt; at the beginning of member function of &lt; BOOL CDivisionDIALOG::OnInitDialog () &gt;.</th></tr></thead><tr><td align="center" valign="middle" >ID</td><td align="center" valign="middle" >Input</td><td align="center" valign="middle" >Expected output</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC300-AD</td><td align="center" valign="middle" >In the monitoring category of main window interface, click the root item, choose “Add division and department” using the right key of mouse, and activate the “Division and department” sheet.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC301-AD</td><td align="center" valign="middle" >In the main window interface, click the menu item of “Basic setting - Division and department”, and activate the “Division and department” sheet.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC302-AD</td><td align="center" valign="middle" >Click the shortcut key “Alt-S” and “Alt-D” from the menu item of “Basic setting (S) - Division and department (D)”.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC303-AD</td><td align="center" valign="middle" >In the main window interface, click the toolbar item of “Division”, and activate the “Division and department” sheet.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr></tbody></table></table-wrap><table-wrap id="table11" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>1</label><caption><title> Test cases of black-box for the function of “Add to monitoring category”</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  colspan="3"  >Precondition—(a) Delete the pole of &lt; MessageBox (“Testing output.”); &gt; at the beginning of member function of &lt; BOOL CDivisionDIALOG::OnInitDialog() &gt;. (b) “TUMC_MC-Division of machining and cutting” and “TUMC_AS-Division of assembly” do not exist in the monitoring category, but two items have been input and saved from the “Division and department” sheet unit.</th></tr></thead><tr><td align="center" valign="middle" >ID</td><td align="center" valign="middle" >Input</td><td align="center" valign="middle" >Expected output</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC307-MF</td><td align="center" valign="middle" >Using the authority of system user, from the toolbar item “Division” of main window interface, start the “Division and department” sheet, choose the recorder of “TUMC_MC-Division of machining and cutting” in the list and display all data in below input controls, and click the button “Add to monitoring category” finally.</td><td align="center" valign="middle" >Prompt the information of finished adding, and can find this added item in monitoring category.</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC308-MF</td><td align="center" valign="middle" >Using the authority of system user, from the toolbar item “Division” of main window interface, start the “Division and department” sheet, choose the recorder of “TUMC_AS-Division of assembly” in the list and display all data in below input controls, and click the button “Add to monitoring category” finally.</td><td align="center" valign="middle" >Prompt the information of finished adding, and can find this added item in monitoring category.</td></tr></tbody></table></table-wrap><table-wrap id="table12" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>2</label><caption><title> Test cases for the menu item of “Backup of inspection data output”</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  colspan="3"  >Precondition—Insert the pole of &lt; MessageBox (“Testing output.”); &gt; in the front of member function of &lt; BOOL CExportDataDialog::OnInitDialog() &gt;.</th></tr></thead><tr><td align="center" valign="middle" >ID</td><td align="center" valign="middle" >Input</td><td align="center" valign="middle" >Expected output</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC368-MF</td><td align="center" valign="middle" >In the main window interface, click the menu item of “Data I/O—Backup of inspection data output”, and activate the backup of inspection data.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC369-MF</td><td align="center" valign="middle" >Click the shortcut key “Alt-T” and “Alt-I” from the menu item of “Data I/O (T)—Backup of inspection data output (I)”.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr></tbody></table></table-wrap><p>modify again if without change in implementation function.</p></sec><sec id="s6_1_3"><title>6.1.3. Addition of Window Access Controls and Disposing Functions</title><p>“Batch restoring of inspection data” is important function for factual requirement in PQMS, which was not developed in the past. In order to improve the safety of inspection data, this function is arranged to add. Consequently, “Batch restoring of inspection data” is added to the main menu “Data I/O” and the actual function is implemented by programmer. For the “cross-testing”, after the testing task arrangement of manager, tester should do incremental regression testing. As a consequence, testing engineer as the tester analyzed the original code from programmer with FTA tool. During this period, it is noticed that the testing engineer should not only apply FTA tool with careful manner but also be familiar with the code and check it. As a result, <xref ref-type="fig" rid="fig1">Figure 1</xref>3 has shown the result of FTA which has been accomplished by testing engineer. [<xref ref-type="bibr" rid="scirp.125420-ref9">9</xref>]</p><p>In <xref ref-type="fig" rid="fig1">Figure 1</xref>3, in order to implement the requirement change of “Batch restoring of inspection data is necessary to add”, “Adding coordination-offset coefficient for R chart is necessary respectively in XAve-R chart” is conducted as the top event, and it is noted with mark A. Consequently, A<sub>i,j</sub><sub>,…</sub> presents the middle event of fault-tree, and X<sub>i,j,k</sub><sub>…</sub> is the final event of fault-tree, while C<sub>i</sub> is the additional condition. Correspondingly, details are demonstrated in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>3. At the same time, the test case choice and adding for “Batch restoring of inspection data”, derived from final events, are shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>4.</p><p>In terms of the result of FTA as above, we can construct test case of incremental testing. In general, <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>4 can be directly use to execute the test design i.e. test suite construction. As such, the front-end test cases of white-box testing is firstly constructed using grey-box approach as shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>5, and PQMS2-ENT-INT-TC145-AD is the added test case for incremental function</p><table-wrap id="table13" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>3</label><caption><title> The events of FTA for batch restoring of inspection data</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Code</th><th align="center" valign="middle" >Event name</th><th align="center" valign="middle" >Code</th><th align="center" valign="middle" >Event name</th></tr></thead><tr><td align="center" valign="middle" >A<sub>1</sub><sub> </sub></td><td align="center" valign="middle" >Add controls from main/pop-up menu and event map</td><td align="center" valign="middle" >A<sub>2</sub><sub> </sub></td><td align="center" valign="middle" >Add member function statement and body</td></tr><tr><td align="center" valign="middle" >A<sub>21 </sub></td><td align="center" valign="middle" >Add member function statement</td><td align="center" valign="middle" >A<sub>22 </sub></td><td align="center" valign="middle" >Add member function body</td></tr><tr><td align="center" valign="middle" >X<sub>11 </sub></td><td align="center" valign="middle" >Add controls from main menu/pop-up</td><td align="center" valign="middle" >X<sub>12</sub></td><td align="center" valign="middle" >Add event map</td></tr><tr><td align="center" valign="middle" >X<sub>21</sub><sub> </sub></td><td align="center" valign="middle" >Add member function statement in “MainView.h”</td><td align="center" valign="middle" >X<sub>221</sub><sub> </sub></td><td align="center" valign="middle" >Attributes statement and initialization</td></tr><tr><td align="center" valign="middle" >X<sub>222</sub><sub> </sub></td><td align="center" valign="middle" >Judge if inspection process is exist, and get basic information e.g. inspection process, part, etc.</td><td align="center" valign="middle" >X<sub>223</sub><sub> </sub></td><td align="center" valign="middle" >Searching all target file names</td></tr><tr><td align="center" valign="middle" >X<sub>224</sub><sub> </sub></td><td align="center" valign="middle" >Judge if this inspection data is exist</td><td align="center" valign="middle" >X<sub>225</sub><sub> </sub></td><td align="center" valign="middle" >Add inspection data ID into INSPECTIONDATADIRECTORYNAME</td></tr><tr><td align="center" valign="middle" >X<sub>226</sub><sub> </sub></td><td align="center" valign="middle" >Add filename and all data of inspection data file into SAVINGDIRECTORY</td><td align="center" valign="middle" >C<sub>1</sub><sub> </sub></td><td align="center" valign="middle" >Sequence should be “X<sub>221</sub>→X<sub>222</sub>→X<sub>223</sub>→X<sub>224</sub>→X<sub>225</sub>→X<sub>226</sub>”</td></tr></tbody></table></table-wrap><table-wrap id="table14" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>4</label><caption><title> Choice and adding of test case for batch restoring of inspection data</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Testing content</th><th align="center" valign="middle" >Note</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC372-AD</td><td align="center" valign="middle" >White-box testing for “Popup Menu-menu item”</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub></td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC373-AD</td><td align="center" valign="middle" >White-box testing for “Main Menu - menu item”</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21 </sub></td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC374-AD</td><td align="center" valign="middle" >White-box testing for “Shortcut key”</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub></td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC145-AD</td><td align="center" valign="middle" >Integration testing of batch restoring inspection data</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub>, X<sub>221</sub>, X<sub>222</sub>, X<sub>223</sub>, X<sub>224</sub></td></tr><tr><td align="center" valign="middle" >PQMS2-FRD-UNI-TC001</td><td align="center" valign="middle" >Testing if output of starting from monitoring category is correct</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub>, X<sub>221</sub>, X<sub>222</sub></td></tr><tr><td align="center" valign="middle" >PQMS2-FRD-UNI-TC002</td><td align="center" valign="middle" >Testing the output of starting from “Main Menu-menu item” for correct inspection process</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub>, X<sub>221</sub>, X<sub>222</sub></td></tr><tr><td align="center" valign="middle" >PQMS2-FRD-UNI-TC003</td><td align="center" valign="middle" >Testing the output of starting from “Main Menu-menu item” for incorrect inspection process</td><td align="center" valign="middle" >X<sub>11</sub>, X<sub>12</sub>, X<sub>21</sub>, X<sub>221</sub>, X<sub>222</sub></td></tr></tbody></table></table-wrap><table-wrap id="table15" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>5</label><caption><title> Test cases of front-end for adding function of batch restoring inspection data</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  colspan="3"  >Precondition—Insert the pole of &lt; MessageBox (“Testing output.”); &gt; in the front of member function of &lt; BOOL CMainView::CBatchRestoringInspectionData () &gt;.</th></tr></thead><tr><td align="center" valign="middle" >ID</td><td align="center" valign="middle" >Input</td><td align="center" valign="middle" >Expected output</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC372-AD</td><td align="center" valign="middle" >In the monitoring category of main window interface, click the item “Division of machining and cutting - CM_Digital inspection apparatus of depth_Pillar - Thickness 10(-0.10 0)”, and click the menu item “Batch restoring of inspection data” using the right key of mouse.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC373-AD</td><td align="center" valign="middle" >In the main window interface, click the menu item of “Data I/O—Batch restoring of inspection data”.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC374-AD</td><td align="center" valign="middle" >Click the shortcut key “Alt-T” and “Alt-P” from the menu item of “Data I/O (T)—Batch restoring of inspection data (P)”.</td><td align="center" valign="middle" >Prompt “Testing output.”</td></tr></tbody></table></table-wrap><table-wrap id="table16" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>6</label><caption><title> Test case of black box for adding function of restoring inspection data</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  colspan="3"  >Precondition—(1) Delete the pole of &lt; MessageBox (“Testing output.”); &gt; in the front of member function of &lt; BOOL CMainView::CBatchRestoringInspectionData() &gt;, (2) the inspection process item “Division of machining and cutting - CM_Digital inspection apparatus of depth_Pillar - Thickness 10(-0.10 0)” has existed in monitoring category and its three inspection data—“2019_09_28 InSpDaVa1_1 3, 2019_09_29 InSpDaVa1_1 3, 2019_09_30 InSpDaVa1_1 3” has been just deleted.</th></tr></thead><tr><td align="center" valign="middle" >ID</td><td align="center" valign="middle" >Input</td><td align="center" valign="middle" >Expected output</td></tr><tr><td align="center" valign="middle" >PQMS2-ENT-INT-TC145-AD</td><td align="center" valign="middle" >In the category of main window interface, click the item “Division of machining and cutting - CM_Digital inspection apparatus of depth_Pillar - Thickness 10(-0.10 0)”, and click the menu item “Batch restoring of inspection data” using the right key of mouse, start the restoring.</td><td align="center" valign="middle" >Three batches of inspection dat—“2019_09_28 InSpDaVa1_1 3, 2019_09_29 InSpDaVa1_1 3, 2019_09_30 InSpDaVa1_1 3” can be correctly restored.</td></tr></tbody></table></table-wrap><p>testing of integration testing, detail is shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>6. Of course, it is noticed that the state testing should be finished in unit testing.</p><p>In conclusion, the test suite construction of integration testing has some differences from that of unit testing. On the one hand, the data boundary value testing of input controls is omitted in the data testing of integration testing, except that the testing of data accessing/visiting safety and the testing of obliged data interface and format must be accomplished in sequence. On the other hand, the function integration testing should focus on the function interface among units while limitation testing and state testing should be executed in terms of actual situation of software.</p></sec></sec></sec><sec id="s7"><title>7. Summary</title><p>Test suite construction is the most important work in software testing, because workload of test design has the ratio of 60% in software testing activity. Test suite construction is not the same as mechanical design etc., and it can be taken as a kind of process design which directly is projected from the factual software product.</p><p>Test suite construction is generally linked to software testing phases, mainly focusing on unit testing phase and integration testing phase in this study. For GUI software testing, in unit testing phase, the test suite construction should generally be done in terms of “Triple-step method” including data testing, function testing and state testing. As a consequence, in integration testing, the “Grey-box approach” is an effective and useful testing methodology for GUI software with prior disposing of window access controls.</p><p>This paper aims to provide a referring guidance for researchers and industrial practitioners when conducting test cases and test suite for GUI software in software engineering, and it is based on software testing activity of the case GUI software—PQMS and the author’s own experience of test design. Consequently, it is noticed that tiny tune is needed for software testing practice.</p></sec><sec id="s8"><title>Conflicts of Interest</title><p>The authors declare no conflicts of interest regarding the publication of this paper.</p></sec><sec id="s9"><title>Cite this paper</title><p>TanLi, M.Q., Xiao, J.Y. and Zhang, Y. (2023) Guideline of Test Suite Construction for GUI Software Centered on Grey-Box Approach. Journal of Software Engineering and Applications, 16, 113-143. https://doi.org/10.4236/jsea.2023.165007</p></sec><sec id="s10"><title>Appendix</title><table-wrap id="table17" ><label><xref ref-type="table" rid="table">Table </xref>A1</label><caption><title> Test cases of the function testing for “product or class” sheet unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-PDF-UNI-TC011</td><td align="center" valign="middle" >Start the product or class sheet from the menu item of “Basic quality data - Product or class”, and input “PC101” in the EditBox of “Code of product or class”, and input “Shanghai-K3-Loudspeaker” in the EditBox of “Name of product or class”, and keep “Mechanicaland electronic” in the EditBox of “Area or region”, and input “Pure electronic product” in the ComBoBox of “Type”, and input “15” in the EditBox of “Number”, and input “AD-PC101999” in the EditBox of “Code of assembly drawing”, and input “2020.03.01” in the EditBox of “Set-up date”, and input “MUSIC EQUIPMENT” in the EditBox “Mem”, and click the button “Add” finally.</td><td align="center" valign="middle" >Correctly displaying the prompt of “New data of product is added.” and no prompt of error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDF-UNI-TC012</td><td align="center" valign="middle" >After TC011, input “ ” in the EditBox of “Code of product or class”, and click the button “Add”.</td><td align="center" valign="middle" >Displaying the error prompt of “The code of product or class cannot be empty.”</td></tr><tr><td align="center" valign="middle" >PQMS2-PDF-UNI-TC013</td><td align="center" valign="middle" >After TC011, input “ ” in the EditBox of “Name of product or class”, and click the button “Add”.</td><td align="center" valign="middle" >Displaying the error prompt of “The name of product or class cannot be empty.”</td></tr><tr><td align="center" valign="middle" >PQMS2-PDF-UNI-TC014</td><td align="center" valign="middle" >After TC011, input “PC10” in the EditBox of “Code of product or class”, and click the button “Add”.</td><td align="center" valign="middle" >Displaying the error prompt of “The number of code character of product or class is 5 and the beginning is ‘PC’, please refer to coding rule.”</td></tr><tr><td align="center" valign="middle" >PQMS2-PDF-UNI-TC015</td><td align="center" valign="middle" >After TC011, input “PC1010” in the EditBox of “Code of product or class”, and click the button “Add”.</td><td align="center" valign="middle" >Displaying the error prompt of “The number of code character of product or class is 5 and the beginning is ‘PC’, please refer to coding rule.”</td></tr></tbody></table></table-wrap><table-wrap id="table18" ><label><xref ref-type="table" rid="table">Table </xref>A2</label><caption><title> Test cases of the state testing for “product or class” sheet unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Start state</th><th align="center" valign="middle" >End state</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC010</td><td align="center" valign="middle" >S<sub>0</sub></td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >Start the product or class sheet with default.</td><td align="center" valign="middle" >Display this sheet.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC011</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>5</sub></td><td align="center" valign="middle" >No inputting operation, click the button of “OK” or “Shut-off” button of up-right corner in the sheet.</td><td align="center" valign="middle" >Exit.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC012</td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >Start the product or class sheet again, and input data in this sheet.</td><td align="center" valign="middle" >Display the data of inputting.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC013</td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >S<sub>2-2</sub></td><td align="center" valign="middle" >After data was input, click the button “Add”.</td><td align="center" valign="middle" >Save data, and display data in the “List control”.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC014</td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >S<sub>4-1</sub></td><td align="center" valign="middle" >Input “ ” in the EditBox of “Code of product or class”, and click the button “Add”.</td><td align="center" valign="middle" >Display the error message prompt.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC015</td><td align="center" valign="middle" >S<sub>4-1</sub></td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >Click the button of “OK” or “Shut-off” button of up-right corner in the prompt dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC016</td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >S<sub>3-1</sub></td><td align="center" valign="middle" >Modify data in the sheet, and click the button “Modify”.</td><td align="center" valign="middle" >Display the confirm dialogue.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC017</td><td align="center" valign="middle" >S<sub>3-1</sub></td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >Click the button of “Cancel” in the confirm dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC018</td><td align="center" valign="middle" >S<sub>3-1</sub></td><td align="center" valign="middle" >S<sub>2-2</sub></td><td align="center" valign="middle" >Click the button “Modify” again, and click the button of “OK” in the confirm dialogue.</td><td align="center" valign="middle" >Save data and display data in the list.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC019</td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >S<sub>4-2</sub></td><td align="center" valign="middle" >Input “ ” in the EditBox of “Name of product or class”, and click the button “Modify”.</td><td align="center" valign="middle" >Display the error message prompt.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC020</td><td align="center" valign="middle" >S<sub>4-2</sub></td><td align="center" valign="middle" >S<sub>2-1</sub></td><td align="center" valign="middle" >Click the button of “OK” or “Shut-off” button of up-right corner in the prompt dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC021</td><td align="center" valign="middle" >S2-1</td><td align="center" valign="middle" >S3-2</td><td align="center" valign="middle" >Input the data for deleting, and click the button “Delete”.</td><td align="center" valign="middle" >Display the confirm dialogue.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC022</td><td align="center" valign="middle" >S3-2</td><td align="center" valign="middle" >S2-1</td><td align="center" valign="middle" >Click the button of “Cancel” in the confirm dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC023</td><td align="center" valign="middle" >S3-2</td><td align="center" valign="middle" >S2-2</td><td align="center" valign="middle" >Click the button “Delete” again, and click the button of “OK” in the confirm dialogue.</td><td align="center" valign="middle" >Complete the deleting of data.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC024</td><td align="center" valign="middle" >S2-1</td><td align="center" valign="middle" >S4-3</td><td align="center" valign="middle" >Input the code with less character than specification, and click the button “Delete”.</td><td align="center" valign="middle" >Display the error message prompt.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC025</td><td align="center" valign="middle" >S4-3</td><td align="center" valign="middle" >S2-1</td><td align="center" valign="middle" >Click the button of “OK” or “Shut-off” button of up-right corner in the prompt dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-PDS-UNI-TC026</td><td align="center" valign="middle" >S2-1</td><td align="center" valign="middle" >S5</td><td align="center" valign="middle" >In the product or class sheet, when inputting data, click the button of “Cancel”.</td><td align="center" valign="middle" >Exit.</td></tr></tbody></table></table-wrap><table-wrap id="table19" ><label><xref ref-type="table" rid="table">Table </xref>A3</label><caption><title> Test cases of the data boundary value testing for “Inspection process” sheet unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-IDB-UNI-TC010</td><td align="center" valign="middle" >Starting the “Inspection process” sheet from menu item “Basic quality data - Inspection process”, and in the ComBoBox of “Code and name of product or class”, input character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of “Code and name of product or class”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDB-UNI-TC011</td><td align="center" valign="middle" >Continuously, in the ComBoBox of “Code and name of part/component”, input character “T…” by keyboard with limited 51 times, and count actually if width is shorted, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the ComBoBox of “Code and name of part/component”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDB-UNI-TC012</td><td align="center" valign="middle" >Continuously, in the EditBox of “Code of inspection process”, input character “T…” by keyboard with limited 21 times, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 20 characters are permitted for input in the EditBox of “Code of inspection process”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDB-UNI-TC013</td><td align="center" valign="middle" >Continuously, in the EditBox of “Name of inspection process”, input character “T…” by keyboard with limited 51 times, and stop when “Da” voice is listened.</td><td align="center" valign="middle" >Only 50 characters are permitted for input in the EditBox of “Name of inspection process”.</td></tr></tbody></table></table-wrap><table-wrap id="table20" ><label><xref ref-type="table" rid="table">Table </xref>A4</label><caption><title> Test cases of the data format testing for “Inspection process” sheet unit</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-PDI-UNI-TC010</td><td align="center" valign="middle" >Starting the “Inspection process” sheet from menu item “Basic quality data - Inspection process”, and keep default data, and click the button “import inspection process data”. Consequently choose the folder of “INSPECTIONDATA/EXTERNAL BASIC DATA” in the follow-up dialogue—the format of file name and data is shown in <xref ref-type="table" rid="table">Table </xref>A5, and open the data file—“PC001000002 Height of hollow groove.txt”, and click button “OK” finally.</td><td align="center" valign="middle" >Prompt “the format is error—the tail of file cannot be empty”.</td></tr></tbody></table></table-wrap><table-wrap id="table21" ><label><xref ref-type="table" rid="table">Table </xref>A5</label><caption><title> The specification of data format for “Import inspection process data”</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Items</th><th align="center" valign="middle"  colspan="2"  >Format</th></tr></thead><tr><td align="center" valign="middle" >The format of file name</td><td align="center" valign="middle"  colspan="2"  >(a) The front is the code of inspection process, has 11 characters. (b) Next is the name of inspection process. (c) The last part is the file name extension “.txt”.</td></tr><tr><td align="center" valign="middle"  rowspan="2"  >The format of data</td><td align="center" valign="middle" >The general format</td><td align="center" valign="middle" >The example with error</td></tr><tr><td align="center" valign="middle" >1) The general string 2) Number of data 3) Accuracy—if various types, use “0” 4) Set-up date 5) Mem 6) Data No.1—Code 7) Data No.2—Name 8) Data No.3—Type 9) Data No.4—Code of drawing 10) Data No.5—Date of design 11) Data No.6—Location and site 12) Data No.7—Mem of inspection process</td><td align="center" valign="middle" >1) Caliper File. Interface. 2) 7 3) 0 4) 20220520 5) This data is generated by quality control software 6) PC001000002 7) Height of hollow groove 8) Dimension of machining and cutting 9) ID_PC001000002 10) 2018-01-01 11) Division of machining and cutting 12) Digital indicator is bought from Shanghai by Tan Jianlin</td></tr></tbody></table></table-wrap><table-wrap id="table22" ><label><xref ref-type="table" rid="table">Table </xref>A6</label><caption><title> Test cases of unit function testing of adding inspection process data</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-IDF-UNI-TC030</td><td align="center" valign="middle" >Start inspection process sheet from the menu item “Basic quality data - Inspection process” in main program interface, and click the branch item of “Tree control” on the left—“TUMC - PC101Shanghai Brand K3 loudspeaker box - PC101000FrontRedNet - PC101000000 Plating flaw of FrontRedNet (0 10)”. EditBox of “Product Code and Name” display “PC101Shanghai Brand K3 loudspeaker box”, EditBox of “Part Code and Name” display “PC101000 FrontRedNet”, and choose this column in the “List control”. And in below input controls, alter the code to “PC101000001”—it has not been added, name to “Elasticity of FrontRedNet”, type to “Performance inspection of raw material”, division to “TUMC_ST StoreHouse”, code of drawing to “ID_PC101000001”, date to “2020.03.01”, Mem to “Shanghai”, then click the button “Add”.</td><td align="center" valign="middle" >Correctly prompt “Inspection process data of PC101000001 is added”, and the data item changed in the “List control”, and no other error information prompt.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDF-UNI-TC031</td><td align="center" valign="middle" >After TC030, click the record “PC101000001” in the list, and display all data on the below box, then click the button “Add”.</td><td align="center" valign="middle" >Display error prompt “Data of PC101000001 has been already added”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDF-UNI-TC032</td><td align="center" valign="middle" >Start inspection process sheet, and input “ ” in EditBox of “Product Code and Name”, input “PC101000 FrontRedNet” in EditBox of “Part Code and Name”, and keep others no change, then click the button “Add”.</td><td align="center" valign="middle" >Display error prompt “Product code and name has not been input”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDF-UNI-TC033</td><td align="center" valign="middle" >Start inspection process sheet, and input “PC101Shanghai Brand K3 loudspeaker box” in EditBox of “Product Code and Name”, and input “ ” in EditBox of “Part Code and Name”, and keep others no change, then click the button “Add”.</td><td align="center" valign="middle" >Display error prompt “Part code and name has not been input”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDF-UNI-TC034</td><td align="center" valign="middle" >Start inspection process sheet, and input “PC101Shanghai Brand K3 loudspeaker box” in EditBox of “Product Code and Name”, and input “PC101000FrontRedNet” in EditBox of “Part Code and Name”, and choose this record in the “List control”, and input “ ” in EditBox “Code of inspection process”, keep others no change, then click the button “Add”.</td><td align="center" valign="middle" >Display error prompt “The code of inspection process has not been input”.</td></tr></tbody></table></table-wrap><table-wrap-group id="23"><label><xref ref-type="table" rid="table">Table </xref>A7</label><caption><title> Test cases of the state testing of “inspection process” sheet</title></caption><table-wrap id="23_1"><table><tbody><thead><tr><th align="center" valign="middle" >ID</th><th align="center" valign="middle" >Start state</th><th align="center" valign="middle" >End state</th><th align="center" valign="middle" >Input</th><th align="center" valign="middle" >Expected output</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC010</td><td align="center" valign="middle" >S<sub>0</sub></td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >Start the “Inspection process” sheet from main interface.</td><td align="center" valign="middle" >Display the “Inspection process” sheet.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC011</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>7</sub></td><td align="center" valign="middle" >No inputting operation, click the “Shut-off” button of up-right corner in the sheet.</td><td align="center" valign="middle" >Exit.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC012</td><td align="center" valign="middle" >S<sub>1</sub></td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >Start the “Inspection process” sheet again, and open the category item of four layers.</td><td align="center" valign="middle" >Display correctly the opened item among four layers.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC013</td><td align="center" valign="middle" >S<sub>2</sub></td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >Click the item of inspection process of the category.</td><td align="center" valign="middle" >Display correct data of clicked item in the “List control”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC014</td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Click the record of inspection process in the “List control”.</td><td align="center" valign="middle" >Display all data of clicked record in below input controls.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC015</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >Input correct data in the sheet, and click the button “Add” finally.</td><td align="center" valign="middle" >Save data, and display all data in the “List control”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC016</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>6-1</sub></td><td align="center" valign="middle" >When the input of code is empty, click the button “Add” finally.</td><td align="center" valign="middle" >Prompt error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC017</td><td align="center" valign="middle" >S<sub>6-1</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Click the button “OK” or the “Shut-off” button of up-right corner.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC018</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>5-1</sub></td><td align="center" valign="middle" >Modify data correctly in input controls, and click the button “Modify” finally.</td><td align="center" valign="middle" >Display the confirming dialogue of modifying.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC019</td><td align="center" valign="middle" >S<sub>5-1</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Click the button “Cancel” of the confirming dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC020</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>5-1</sub></td><td align="center" valign="middle" >Click the button “Modify” of the sheet again.</td><td align="center" valign="middle" >Display the confirming dialogue of modifying.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC021</td><td align="center" valign="middle" >S<sub>5-1</sub></td><td align="center" valign="middle" >S<sub>3</sub></td><td align="center" valign="middle" >Click the button “OK” of the confirming dialogue.</td><td align="center" valign="middle" >Save data, and display all data in the “List control”.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC022</td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >S<sub>6-2</sub></td><td align="center" valign="middle" >When the input of code is empty, click the button “Modify” finally.</td><td align="center" valign="middle" >Prompt error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC023</td><td align="center" valign="middle" >S<sub>6-2</sub></td><td align="center" valign="middle" >S<sub>4</sub></td><td align="center" valign="middle" >Click the button “OK” or the “Shut-off” button of up-right corner in the dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC024</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S5-2</td><td align="center" valign="middle" >Input the data for deleting in input controls, and click the button “Delete” finally.</td><td align="center" valign="middle" >Display the confirming dialogue of deleting.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC025</td><td align="center" valign="middle" >S5-2</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >Click the button “Cancel” of the confirming dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC026</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S5-2</td><td align="center" valign="middle" >Click the button “Delete” of the sheet again.</td><td align="center" valign="middle" >Display the confirming dialogue of deleting.</td></tr></tbody></table></table-wrap><table-wrap id="23_2"><table><tbody><thead><tr><th align="center" valign="middle" >PQMS2-IDS-UNI-TC027</th><th align="center" valign="middle" >S5-2</th><th align="center" valign="middle" >S3</th><th align="center" valign="middle" >Click the button “OK” of the confirming dialogue.</th><th align="center" valign="middle" >Delete data, and display variety in the “List control”.</th></tr></thead><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC028</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S6-3</td><td align="center" valign="middle" >When the input of code is empty, click the button “Delete” finally.</td><td align="center" valign="middle" >Prompt error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC029</td><td align="center" valign="middle" >S6-3</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >Click the button “OK” or the “Shut-off” button of up-right corner in the dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC030</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S5-3</td><td align="center" valign="middle" >Input data in input control for “Search-name”, and click the button “Search-name” finally.</td><td align="center" valign="middle" >Execute search, and display the search result in the list.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC008-AD</td><td align="center" valign="middle" >S5-3</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >Click the button “OK” or the “Shut-off” button of up-right corner in the dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC031</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S6-4</td><td align="center" valign="middle" >When the input of name is empty, click the button “Search-name” again.</td><td align="center" valign="middle" >Prompt error information.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC032</td><td align="center" valign="middle" >S6-4</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >Click the button “OK” or the “Shut-off” button of up-right corner in the dialogue.</td><td align="center" valign="middle" >Return.</td></tr><tr><td align="center" valign="middle" >PQMS2-IDS-UNI-TC033</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >S4</td><td align="center" valign="middle" >Click the button “Reset” of the sheet.</td><td align="center" valign="middle" >Initialize all input controls in the sheet.</td></tr></tbody></table></table-wrap></table-wrap-group></sec></body><back><ref-list><title>References</title><ref id="scirp.125420-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Runeson, P. and H&amp;#246;st, M. (2009) Guidelines for Conducting and Reporting Case Study Research in Software Engineering. Empirical Software Engineering, 14, 131-164. https://doi.org/10.1007/s10664-008-9102-8</mixed-citation></ref><ref id="scirp.125420-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Zhang, Y., Wang, Y.L., et al. (2021) Grey-Box Technique of Software Integration Testing Based on Message. Proceedings of 3rd International Conference on Artificial Intelligence and Computer Science, Beijing, 29-31 July 2021, 198-206.</mixed-citation></ref><ref id="scirp.125420-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Zhang, Y. and Wang, Y.L. (2022) Architecture and Methodology of Unit Testing Embedding Pair-Wise Mode for Small Team. Journal of Software Engineering and Applications, 15, 111-133. https://doi.org/10.4236/jsea.2022.1511022</mixed-citation></ref><ref id="scirp.125420-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Boehm, B.W. (1979) Classics in Software Engineering. Yourdon Press, New Jersey.</mixed-citation></ref><ref id="scirp.125420-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Patton, R. (2006) Software Testing. Pearson Education Inc., London.</mixed-citation></ref><ref id="scirp.125420-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Fu, B. (2014) Course of Software Testing Technology. Tsinghua University Press, Beijing.</mixed-citation></ref><ref id="scirp.125420-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Li, F. (2016) Software Testing Technology. Mechanical Industry Press, Beijing.</mixed-citation></ref><ref id="scirp.125420-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Alégroth, E. and Feldt, R. (2017) On the Long-Term Use of Visual Gui Testing in Industrial Practice: A Case Study. Empirical Software Engineering, 22, 2937-2971. https://doi.org/10.4236/jsea.2022.1511022</mixed-citation></ref><ref id="scirp.125420-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Zhang, Y. and Wang, Y.L. (2020) Research on Fault Tree Technique in Software Regression Testing. Computer Engineering and Software, 41, 5-8, 25.</mixed-citation></ref><ref id="scirp.125420-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Zhang, Y. and Wang, Y.L. (2020) System Testing Based on Software Performance. Computer Engineering and Software, 41, 1-4, 25.</mixed-citation></ref><ref id="scirp.125420-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Tang, D., TanLi, M.Q. and Li, T. (2021) Software Test Organizing for Small Team Based on “Pair-Wise” Mode. Proceedings of 2022 International Conference on Smart Transportation and Future Mobility-CSTFM 2022, Changsha, 2-4 September 2021.</mixed-citation></ref><ref id="scirp.125420-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Zhang, Y., Jiang, Y., et al. (2021) Baseline Test Suite Construction of Smoke Test for Extreme Programming. Proceedings of 2021 International Conference on Communication Engineering and Logistics Management, Changsha, 24-26 July 2021.</mixed-citation></ref><ref id="scirp.125420-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Jiang, Y., Wang, Y.L., et al. (2020) Infrastructure Building of Software Testing for Engineering Software Based on Cooperation of University and Company. Proceedings of the 10th International Workshop on Computer Science and Engineering-WCSE2020, Shanghai, 19-21 June 2020, 18-26.</mixed-citation></ref><ref id="scirp.125420-ref14"><label>14</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Xu</surname><given-names> Y.Y. </given-names></name>,<etal>et al</etal>. (<year>2015</year>)<article-title>A Study of Test Case Reuse Based on CBR</article-title><source> Computer Engineering and Software</source><volume> 36</volume>,<fpage> 117</fpage>-<lpage>120</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.125420-ref15"><label>15</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Chen</surname><given-names> Z.H. </given-names></name>,<etal>et al</etal>. (<year>2005</year>)<article-title>Research and Implementation of Test Method in Task Arrangement of Resource Satellite</article-title><source> Radio Engineering</source><volume> 35</volume>,<fpage> 62</fpage>-<lpage>64</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.125420-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">TanLi, M.Q., Jiang, Y., Wang, Y.L., Wang, X. and Peng, R.S. (2018) Digital Inspection of Cutting and Machining Based on Manufacturing Quality for Shop Floor. 2018 International Conference on Mechanical, Electronic and Information Technology (ICMEIT2018), Shanghai, 23-24 April 2018, 1-7. https://doi.org/10.4236/jsea.2022.1511022</mixed-citation></ref></ref-list></back></article>