SOFTWARE DEVELOPMENT FUNDAMENTALS: Software Testing and Maturity A research report Submitted to University of South Africa In fulfilment of the partial requirements for the Baccalaureus Technologiae: Engineering: Electrical Computer Systems (BTELN - COS) by M.M Bosega Student Number 47249897 47249897@mylife.unisa.ac.za 18 September 2015 Declaration of own work I declare that this research is my own work. It is being submitted for the BaccalaureusTechnologiae: Engineering: Electrical Computer Systems at the University of South Africa. It has not been before for any degree, diploma, or other examination at any tertiary educational institution. Moses M Bosega Signed:______________________by____________________________ Midrand 18 September 15 at_______________________on this ___day of_______________20___ 2 Acknowledgements The researcher would like to thank his mentor Albert Samathanda, and the research participants for their support and participation in this study. 3 Abstract Software solutions have become an integral part of our daily lives, given how much technology has developed. Corporates and human beings put their trust in software systems than in humans whether is for enormous financial transactions or life critical systems or operations. In-depth studies have been conducted in the past, on improving the quality of software and technology; however, there is always a possibility that something will go wrong. Failure seems to be a part of every success, and this is the approach that this study is taking to seek to investigate the software failures that are in production of companies, successful or not. As technology is rapidly advancing, quality measures and failure prevention methods are put in place. Software testing is a discipline that has been in existence for over 30 years, and although the processes and methodologies have been improved and upgraded, there seem to be always a room for errors that are not detected and identified by the process. The inquiry is based on the case study, where we will investigate the current software testing practice of company M, and based on the results, recommendations will be made. 4 Table of Contents Declaration of own work .................................................................................................... 2 Acknowledgements ........................................................................................................... 3 Abstract ............................................................................................................................. 4 Table of contents .............................................................................................................. 5 List of tables ....................................................................................................................... 8 List of figures ..................................................................................................................... 8 1.INTRODUCTION ........................................................................................................... 9 1.1 Background ............................................................................................................................................ 9 1.2 Problem Statement .............................................................................................................................. 13 1.3 Value of study....................................................................................................................................... 15 1.4 Research objectives.............................................................................................................................. 15 1.5 Research methodology ........................................................................................................................ 16 1.6 Summary .............................................................................................................................................. 18 2.RESEARCH IN CONTEXT .......................................................................................... 19 2.1 Overview .............................................................................................................................................. 19 2.2 Conceptual study.................................................................................................................................. 24 2.2.1 Conceptual Framework ............................................................................................................ 24 2.2.1 .1 SDLC Software Application testing ....................................................................................... 27 2.2.1 .2 Elements of Software tester ................................................................................................ 28 2.3 Summary .............................................................................................................................................. 29 3.RESEARCH DETAILED DESIGN ................................................................................. 30 3.1 Aims ...................................................................................................................................................... 30 3.2 Research methodology ........................................................................................................................ 31 3.3 Research type ....................................................................................................................................... 32 3.3.1 Qualitative research methodology .......................................................................................... 32 3.3.2 Quantitative research methodology ........................................................................................ 33 5 3.4 Sample description of case study ......................................................................................................... 34 3.4.1 Introduction ............................................................................................................................. 34 3.4.2 Departmental Structure ........................................................................................................... 35 3.4.3 Research design, case study..................................................................................................... 36 3.5 Conclusion ............................................................................................................................................ 37 4.RESEARCH FINDINGS – Case study .......................................................................... 38 4.1 Background in context of the case study .................................................................................... 38 4.2 Background in context of the company and the division ........................................................... 40 4.3 Research focus ............................................................................................................................ 47 4.4 Research questions ..................................................................................................................... 49 4.5 Research sub questions .............................................................................................................. 50 4.5.1 Development team ..................................................................................................... 50 4.5.2 System Integration Test team ..................................................................................... 55 4.5.3 User Acceptance Team ............................................................................................... 63 4.6. Case study data analysis ............................................................................................................ 68 4.6.1 Development team ..................................................................................................... 68 4.6.1.1 Testing skills, knowledge and competence................................................. 68 4.6.2 System Integration Test Team ....................................................................... 69 4.6.2.1 Testing skills, knowledge and competence................................................. 69 4.6.2.2 Does the test team know what to test? ..................................................... 70 4.6.2.3 Defect management ................................................................................... 70 4.6.2.4 Test planning and management ................................................................. 70 4.6.2.5 Testing techniques ...................................................................................... 71 4.6.2.6 Application and system level programming ............................................... 71 4.6.2.7 Matrix data.................................................................................................. 71 4.6.2.8 Metrics ........................................................................................................ 71 6 4.6.3 User Acceptance testing Team ................................................................................................ 72 4.6.3.1 Operations team performing UAT ........................................................................... 72 4.6.3.2 Business Analyst ....................................................................................................... 72 4.6.3.3 Project manager ....................................................................................................... 72 4.6.3.4 Test tools .................................................................................................................. 72 4.6.3.5 Testing knowledge, skills and competence.............................................................. 72 4.7 Literature review ......................................................................................................................... 73 4.7.1.1 Software Development Life Cycle ............................................................................ 73 4.7.1.2 Insufficient Software Test Training .......................................................................... 76 4.7.1.3 Test Automation ...................................................................................................... 77 4.7.1.4 Defect Prediction ..................................................................................................... 79 4.7.1.5 User Acceptance testing .......................................................................................... 79 4.7.1.6 Development Manager Role in Software testing ..................................................... 80 4.7.1.7 Risk based testing .................................................................................................... 80 4.7.1.8 Probability of failure ................................................................................................ 81 4.7.1.9 Testers not involved in JAD sessions........................................................................ 82 4.7.1.10 Test Maturity Model .............................................................................................. 82 4.8 Summary and conclusion ............................................................................................................ 84 7 List of Tables Table 1: Development Team Responsibilities Matrix .................................................................................... 52 Table 2: SIT responsibilities Matrix ................................................................................................................ 58 List of Figures Figure 1: High level conceptual Framework................................................................................................... 26 Figure 2: conceptual frame work (Hall,2011) ................................................................................................ 27 Figure 3: Skill set of Software Tester(Slavchev ,2015) ................................................................................... 28 Figure 4: Organizational structure of a production team .............................................................................. 35 Figure 5: Billing System Functions.................................................................................................................. 41 Figure 6: Levels of Roles and Responsibilities ................................................................................................ 42 Figure 7: Billing Process.................................................................................................................................. 46 Figure 8 : Traditional Software Testing Environment (TYSS,2014) ................................................................ 46 Figure 9: Development Team Structure ......................................................................................................... 50 Figure 10: Time Spent by Development team in testing ............................................................................... 54 Figure 11: SIT Team Structure ........................................................................................................................ 56 Figure 12 : Percentage Representation of SIT Team ...................................................................................... 60 Figure 13: Billing and Production Team Structure ......................................................................................... 63 Figure 14: Development and Unit Test process ............................................................................................. 69 Figure 15: Waterfall Model (Bassil,2011)....................................................................................................... 74 Figure 16: Generic Structure of Testing Process (Tian, 2005) ........................................................................ 75 Figure 17: Risk Definition and Structure(Schaefer, 2005) .............................................................................. 81 Figure 18: Failure Probability(Schaefer, 2005)............................................................................................... 82 Figure 19: TMM levels(Veenendaal,2006) ..................................................................................................... 83 8 CHAPTER 1 1. INTRODUCTION The topic under discussion is Software Development Fundamentals: Software Testing and Maturity, and the emphasis will be on Software testing process and maturity. The primary purpose of this chapter is to outline the background of the study, problem statement, the significance and the value of the study. 1.1 Background The research is centred on the study field Software Engineering, which is defined as the study of design, development, and maintenance of software (Beray & Mohommed, 2013). Software testing is a phase in a conventional SDLC (Software Development Cycle Life) and it is defined as a process, or a series of processes, designed to make sure computer code does what it was designed to do and, conversely, that it does not do anything unintended (Myers, 2012), furthermore, It is an activity which is aimed for evaluating quality of a program and also for improving it, by identifying defects and problem (Quadri, 2010). In the RSA (Republic of South Africa) it is becoming popular as companies have realized its importance as being the center of Information technology and software development because uncovered defects in the production environment have greater impact as they are affecting the customer(s) and operational process. Good quality software and systems arguably inspires customer confidence, and improves the company’s reputation, because with good reputation the market is sustainable and the growth is always on the rise. Software quality is defined as (1) the degree to which a 9 system, component, or process meets specified requirements. (2) The degree to which a system, component, or process meets customer or user needs or expectations (IEEE 610.12, IEEE Standard Glossary of Software Engineering Terminology). Due to the rapid growth and development of technology, the increased demand of quality software solutions, and the increasing complexity of the software, the testing team, and personnel are faced with enormous testing challenges to deliver reliable, trust worthy and quality solutions, to prevent operational failures. Software and technology have become an integral part of our daily lives and we don’t realize the impact of it until something wrong happens. Furthermore, Software is critical to life because its quality deficiency can lead to permanent disability and/or even loss of life, and this makes this study even more significant due to some of the events in the past that lead to loss of life In February 1991 during the Gulf War, 28 American Soldiers were killed and 100 more were injured and this was attributed to the Software problem that lead to system failure which failed to track and intercept an incoming Iraqi Scud missile (Blair & Obenski & Bridickas, 1992).Companies lose revenue and income due to software failures, even though adequate testing has been performed using the proven software testing methodologies. The national institute of standards and technology, did a study and reported that software bugs and defects costs the United States economy $59,5 billion annually, and the study estimated that a third of the amount could be eliminated by improving testing(NIST, 2002).A national survey has been conducted in the Netherlands that sheds light on the economic impact of software failure, and the results are alarming, to say the least. According to the research, software errors lead to 1.6 billion euros in productivity and revenue losses (Tahapary, 2014). 10 The end-user and customers are always on the receiving end of software failures as reported in mybroadband that an Australian bank began giving out large sums of money from 40 cash machines across one city. Officials at the company said they were operating in stand-by mode, so could not identify the account balances of customers (mybroadband, 2011). The study seek to provide a comprehensive coverage of the ill-defined problems that prohibits organizations, and testing teams from delivering the solution that functions with 99,99 % accuracy to prevent loss of life, loss of income, yields returns of investment and increase the reputation of the organization. Although South African literature has very few details about the software failure rate in South Africa, Ernst & Young reported that Global Information Security Survey 2002, the top causes of business interruption failures are hardware or software failure (56%) and telecommunications failure (49%), (Danton,2002).The study will outline the maturity level of software testing given that various researches and studies on different methodologies of testing have been previously performed. Testing process has to verify and validate whether the software fulfills conditions laid down for its release/use (Quadri, 2010), hence Verification and Validation are the essential aspects of software testing. Verification means built it right (ISO/IEC 12207, Software life cycle processes), and Validation means built the right thing (ISO/IEC 12207, Software life cycle processes). Academic initiatives have been taken by various institutions and organizations to improve the standard and quality of testing worldwide and this include the introduction of various software testing certificates. In 1989, ISEB (Information System Examination Board) which is an examination awarding body and part of BCS (British Compute Society) introduced ISEB Certificate for Software 11 Testing from foundation level to higher level to educate the testing community and help them understand the fundamentals and requirement of software testing and ultimately release quality software, which conforms to the requirements(ISEB, 2007). In March 2010 the ISTQB® UK Testing Board (UKTB) and BCS, The Chartered Institute for IT agreed to partner to provide software testing examinations at Foundation and Advanced levels. This was a significant move by the Institute to update its software testing accreditation and certification scheme at Foundation and Advanced level to the ISTQB® certification program. The Institute recognised the importance of a globally recognised scheme to support the career development of testers and with the UKTB agreement has committed to promoting ISTQB® certification as the industry standard (ISTQB,2010). There are about 4300 ISTQB foundation certified testers, 330 ISTQB Advanced certified, and 345 ISTQB Test Manager certified in RSA (SASTQB, 2015).Various Tertiary Education Institutions are offering Information Technology, Computer Science, and Engineering qualifications with the curriculum including Software Engineering, and software testing process. Despite the tremendous effort spent on software quality improvement, more than half of all faults (also referred to as defects) are still not found during testing, but after shipment (Middleton & Sutton, 2005) and for decades, users of software solutions have been suffering from poor solution quality (Whittaker & Voas,2002). This study will fundamentally look and the current industry practice of software testing process in relation with the existing literature, studies and curricula. 12 1.2 Problem Statement Based on the background of software testing process, the problem statement will be defined as the list of questions that this study will have to answer. The main question however is, Why do companies have unknown, and uncovered high severity defects in the production environment, given all the studies that have been carried out about software testing process? The question is inspired by the operational experience of software testing in various organizations. For the study to provide an adequate answer to the main question, the following list of items will have to be discussed, Competency encompasses the knowledge, skill, abilities, traits, and behaviors that allow an individual to perform a task within specific job or function (Vathanophas, 2007). In RSA, Software testing has no official qualification, and yet it is a specialized discipline. Should the testing team have the following skills and abilities? o Application level programming o System level programming o System Analysis o Business Analysis o Data Modelling o Time Management Does the testing team know what to test? 13 Software Measurement. Halsted’s software science, A lexical analysis of source code (Halsted,1977) Complexity Metrics. The complexity of a program is defined in terms of its control structure and is represented by the maximum number of “linearly independent” path through the program (Lee &Chang,2013). When should testing begin? Software testing terminology How does the testing team know that they have compiled the right requirements? Reliability Metrics. The availability measure of software is the percentage that a program is operating according to requirement at a given time and is given by the formula, Availability = MTTP / (MTTF +MTTE)* 100% (Lee, Chang,2013). Test cases How much time should be allocated for testing? Proven development and testing methodology Testing Environments Failure analysis Implementation for the sake of meeting project time lines Manual and test Automation Test Tools Outsourcing of software testing tasks Impact Analysis Risk Assessment Software Release 14 Knowledge base Project management Defect Management Test Reporting Communication Roles and responsibilities 1.3 Value of study This is an empirical study and will be based primarily on the software testing experience, operational experience and literature review, and may be used by the organization to which I am employed to re-asses its testing structure and processes. This study should provide an important feedback to management about the position of software testing in the company, and will help in the future planning of software testing in the organization, as restructuring is inevitable. 1.4 Research objectives PRIMARY OBJECTIVE The general objective of the research is to find the root cause of having high severity defects in the production environment. SECONDARY OBJECTIVE The second objective is to identify alternatives of addressing the root cause. 15 1.5 Research methodology The first methodology for this research is to conduct a theoretical study of literature reviews which (Hart, 1998) defined as the selection of available documents (both published and unpublished) on the topic, which contain information, ideas, data and evidence written from a particular standpoint to fulfil certain aims or express certain views on the nature of the topic and how it is to be investigated, and the effective evaluation of these documents in relation to the research being proposed. Questions a literature review can answer (Hart, 1998) o What are the key sources? o What are the key concepts, theories and ideas? o What are the epistemological and ontologica grounds for the discipline? o What are the main questions and problems that have been addressed to date? o How is knowledge on the topic structured and organised? o What are the origins and definitions of the topic? o What are the political standpoints? o What are the major issues and debates about the topic? Data sources: o Internet o Textbooks o Journals o Articles o Magazines 16 o Library Catalogues The second methodology for this research is an empirical study. To understand how software engineers construct and maintain complex, evolving software systems, we need to investigate not just the tools and processes they use, but also the social and cognitive processes surrounding them and this requires the study of human activities. We need to understand how individual software engineers develop software, as well as how teams and organizations coordinate their efforts (Easterbrook & Singer & Storey & Damian, 2007).The case study methodology is well suited for many kinds of software engineering research, as the objects of study are contemporary phenomena in its natural context , which are hard to study in isolation (Höst,2008). THE STRUCTURE OF AN EMPIRICAL STUDY Research context Hypotheses Experimental design Threats to validity Data analysis and presentation Results and conclusions (Perry & Porter & Votta ,NO DATE) 17 1.6 Summary The study focuses on determining the gaps in the software testing process that leads to undiscovered critical defects after release, from both theoretical and empirical perspective. A case study will be carried out pertaining to the organization that the researcher is employed. Key questions were asked in the problem statement and the background study was carried out to make this research significant and essential. 18 CHAPTER 2 2. RESEARCH CONTEXT 2.1 Overview SOFTWARE IS EVERYWHERE, It's what lets us get cash from an ATM, make a phone call, and drive our cars, and typical cell phone now contains 2million lines of software code (Charette, Uknown), however, proving that a program is fault free is equivalent to the famous halting problem of computer science, which is known to be impossible (Jorgensen, 1995). (Norman; Omlin, Unknown) of the Department of Computer Science in the University of Western cape stated that, Software is increasingly becoming an integral part of our daily lives because of its presence in services and in consumer products and South Africa is now fully integrated within the global economy and any products produced here (e.g. software) must be of the highest quality in order to survive the competitive offerings available to software users, and they further more explain that Software is also present in safety-critical systems whose mal-function can cause loss of life and/or destruction to the environment. To further outline the importance of Software in our corporate lives, I have stabled through (Raj, Unknown) that an Enterprise Resource Planning (ERP) is the latest high end software solution, Information Technology has lent to the world of business application, and An ERP software solution seeks to streamline and integrate operations, processes and information flows in an enterprise, to synergize the resources of an organization namely men, material, money and machines. Given that our lives are so dependent on Software, why is a fault free software not guaranteed? James Whittaker, Chair of the software engineering program at the Florida Institute of Technology, has noted that DESPITE THE COUNTLESS HOURS THAT GO IN TO CODE 19 DEVELOPMENT AND SEEMINGLY ENDLESS CODE REVIEWS, BUGS AND DEFECTS STILL ARE FOUND IN THE PRODUCTION RELEASE, WHY? (Bentley, Unknown). The question asked by James Whittaker, as cited by Bentley, is the key question of this research, and this chapter. As stated in the previous chapter of Problem Statement Definition that, Why do companies have unknown, and uncovered high severity defects in the production environment, given all the studies that have been carried out about software testing process?. (Bentley, Unknown) continues to state that, A big part of his(i.e James Whittaker) answer is a lack of understanding of software testing and, consequently, inadequate software testing processes and procedures. The amount of defects in the production systems seem to be across all the technological sectors, i.e Automobile, Banking, Health, Telecommunication, e.t.c. From South African perspective, (Stefano,Johan 2011) on their journal, stated that small software companies make for the majority of software companies around the world, but their software development processes are often not as clearly defined and structured as in their larger counterparts, especially the test process is often the most neglected part of the software process, and this contribution analyses the software testing process in a small South African IT company, here called X, to determine the problems that currently cause it to deliver software fraught with too many defects, and they furthermore explain that solutions to those (or similar) problems often already exist, but a major part of the problem addressed in this contribution is the unawareness, or unfamiliarity, of many small-industrial software developers and IT managers as far as the scientific literature on software science and engineering, and especially in our case: software testing, is 20 concerned. On a much more global perspective, a recent audit, the OIG identified 23,868 high-risk vulnerability instances in the JPSS ground system for the second quarter of the fiscal year (FY) 2014, which is up from 14,486 high-risk vulnerabilities identified in the first quarter of FY 2012 (Greenberg,2014). To further add on high-risk Vulnerabilities, and production defects, the automobile industry seems to have a pattern of most common production defects, of airbags. Several articles have been published of recalling cars with airbags defect. An article titled : “Nissan recall: 990,000 vehicles for airbag software defect” was published on csmonitor. The article further explained that, Nissan recall includes Altima, Leaf, Pathfinder, Sentra, and Infiniti models with a software glitch that could prevent certain airbags from deploying during collisions, and that Nearly 990,000 vehicles are affected by the Nissan recall (Read,2014). Toyota recalled about 700,000 vehicles due to a software problem with the vehicles’ computers which caused them to simply stop running, and related to the same recall, certain RAV4, Tacoma, and Lexus RX350’s, affecting another 300,000 vehicles, need a reprogramming of the ECU software to alleviate a problem which shuts off the Vehicle Stability Control system rendering it ineffective in a situation where it is needed. This also affects anti-lock brakes and traction control (Tracy, 2014) (Campbell,2015) published that Jaguar Land Rover North America will recall more than 61,000 vehicles after finding that some passenger-side air bags may not open on impact because of faulty software, and to add to the never ending recall of cars due to airbag software defects (Jensen,2014) published that Audi is recalling almost 102,000 A4 and S4 sedans and All road station wagons from the 2013-15 model years because a software problem could cause the front airbag to malfunction, according to a report the 21 automaker posted Wednesday on the National Highway Traffic Safety Administration website. Techtimes in 2015 published that Fiat Chrysler Automobiles (FCA) is recalling more than 228,000 Jeep Cherokees equipped with airbag software that can cause the airbag to inflate even without a crash, the recall, which is the latest in a long series of airbag troubles affecting the automotive industry, involves more than 168,000 Jeep Cherokees from model years 2014 and 2015 in the United States and most of the remaining vehicles are in Canada, while a small percentage is distributed across the world(Arce,2015). In a statement obtained by Bloomberg, Ford said it is recalling a total of 627,275 Escape sports utility vehicles (SUVs) and 65,192 C-MAX gas-electric hybrids,the recall involves 2013 and 2014 models and concerns car owners in the U.S., Canada and Mexico and the SUVs were built at the Louisville Assembly plant between October 2011 and February 2014, while the C-MAX hybrids were built from January 2012 to February 2014, and the recall is due to a software defect that prevents the side curtain airbags from inflating in the event of a rollover crash(Arce,2015). In what's now the largest vehicle recall ever, more than 33.8 million vehicles made by 11 companies have been recalled for faulty air bags, which can randomly explode and send shrapnel at passengers, the companies affected by the recall include: BMW, Chrysler, Daimler Trucks, Ford, General Motors, Honda, Mazda, Mitsubishi, Nissan, Subaru and Toyota(Bennett,2015). In the Banking Industry, Exclusive The tech problems at the RBS banking group that left millions of people unable to access money for four days last week were caused by a failure in a piece of batch scheduling software, sources have told The Register, and at least some of the support staff for that software have been outsourced 22 to India - as recently as February(Leach,2012). The software failures ranges from life threatening failures to embarrassing failures. Earlier this year a man lost a $57 million jackpot when a casino alleged a "software glitch" on the slot machine, Well, that's nothing compared to the backlog of $9 billion in unprocessed payments that happened in Japan in March(Diaz,2011). Here's a good one—for those who were able to enjoy the glitch. A Commonwealth Bank ATM network bug caused the machines to dispense large amounts of money to random people, Police actually arrested two people who took the mistakenly spit-out money, saying that it was a crime. No word about the hundreds who took the money and ran—and got away (Diaz,2011). This study will present research finding, and more questions to the question asked above by James Whitaker as stated earlier that despite the countless hours that go in to code development and seemingly endless code reviews, bugs and defects still are found in the production release, Furthermore, this chapter will address Software Testing in relation to the following questions: WHAT, WHY, AND WHO. (Bentley, Unknown) continues to define that Testers are the only IT people who will use the system as heavily an expert user on the business side and that user testing almost invariably recruits too many novice business users because they’re available and the application must be usable by them, and he interestingly define that the problem is that novices don’t have the business experience that the expert users have and might not recognize that something is wrong, and that testers from IT must find the defects that only the expert users will find because the experts may not report problems if they’ve learned that it's not worth their time or trouble. 23 The interesting view of Bentley brings us to the next question of capacity, and the maturity thereof. The Process Capability Maturity Model (CMM) was developed by the SEI at Carnegie-Mellon University, and CMM is a conceptual framework that represents process management of software development (Joseph Raynus, 1998) 2.2 Conceptual study 2.2.1 Conceptual Framework A conceptual framework is described as a set of broad ideas and principles taken from relevant fields of enquiry and used to structure subsequent presentation (Reichel & Ramey, 1987), furthermore a conceptual framework is used in research to outline possible courses of action or to present a preferred approach to an idea or thought and It is also a type of intermediate theory that attempt to connect to all aspects of inquiry e.g., problem definition, purpose, literature review, methodology, data collection and analysis, (Pineda,2011). Software project failures have a lot in common with airplane crashes. Just as pilots never intend to crash, software developers don't aim to fail. When a commercial plane crashes, investigators look at many factors, such as the weather, maintenance records, the pilot's disposition and training, and cultural factors within the airline. Similarly, we need to look at the business environment, technical management, project management, and organizational culture to get to the roots of software failures (Charette,2005). This chapter introduces the theoretical study of Software Development Fundamentals: Software Testing and Maturity. Theory is a belief or assumption of how things relate to each other and it establishes a cause and effect relationship between variables with a purpose of explaining and predicting phenomena based on inductive reasoning (Refat, 2013).Studies have previously been performed about software failures, 24 although less emphasis has been done on the ability and capability of software testing process to be able to uncover almost all the critical and high severity defects, and it is critical to note that as according to (Dijkstra,1972) program testing can be used to show the presence of bugs, but never to show their absence, however, is testing showing the presence of critical defects that are life threatening ? This study is fundamentally about the maturity of testing, and the process followed to uncover defects. The focus area will be on: Resources Environment Tools Application or System under test Roles and Responsibilities Test Data Test Approach Test Strategy Capability Maturity Model (CMM) User/Customer Experience And this will be mapped to the list of ill-defined problems that the study will have to answer as defined In the previous chapter of problem statement definition. 25 Business Analyst(s) REQUIREMENTS SPECIFICATIONS User Acceptance testing Business Case/ Project Scope Manage Implementat ion Project Co-ordination Change Management Team Project Manager Business Case BUSINESS Application TEST RESULTS/ TEST REPORT User Acceptance Testing BUSINESS USERS DEVELOPMENT TEAM Technical Specification TESTING TEAM Unit Testing SYSTEM TEST Code/System Development Figure 1: High level conceptual Framework The high-level conceptual framework depicted on Figure 1 defines: The bi-directional relationship of different resources in facilitating, co-ordinating and implementing project activities. The Project manager is at the centre of the study as the coordinator and facilitator to bring unity of various elements that make up a project team. The key focus will be on the Testing Team, the testing process and the testing maturity, and the inability to uncover high severity and critical defects given the external and internal environments effects. 26 2.2.1.1 SDLC and Software Application Testing Figure 2: conceptual frame work (Hall,2011) The conceptual frame work on Figure2 defines the high-level application software development life cycle, with emphasis on the type of test, test levels and testing steps, until roll out and implementation. Software testing services include - The full life cycle of testing service, i.e from requirement analysis, planning, design, and development, to execution and reporting (Hall, 2011). In the software development phase, testing begins at the component level, and different testing techniques are appropriate at different points in time. Testing is conducted by the developer of the software, as well as an independent test group (McGraw-Hill,1999) - Development Test, system test, acceptance test and non-functional testing. 27 The framework depicts the close relationship software testing and development teams have with each other. The literature review and research design will explain further the testing processes and testing techniques of the application and system testing. The framework furthermore evaluates Software development life Cycle as a phase within the project life cycle, and within the project life cycle we will further define the software testing process, and the ideal skills of the testing team. 2.2.1.2 Elements of Software Tester Figure 3: Skill set of Software Tester(Slavchev ,2015) Part of the problem statement definition was a question of the skill-set of the testing team. This conceptual framework further reveals and defines the ideal skill-set of the software test in an ideal world. The complexity of the system and rapid growth of technology involve much more robust coding and technical development where the testing team is more likely required to have the skill to can interpret the code, understand the 28 requirement and can speak the technical language with the development team. The conceptual frame-work depicts the different elements of the testing team. 2.3 Summary The chapter detailed the background and the context of the research to help the reader understand why the research is carried out. The underpinnings of the research have been explained, with the aid of theoretical review not limited to journals, articles and previous studies of the same relevance. Based on the foundation laid, the study will continue with the design and the detailed description of the research in the next chapters to follow. 29 CHAPTER 3 3. RESEARCH DETAILED DESIGN 3.1 Aims The aim of the research is to establish why software production environments in various organizations are experiencing high severity defects even though the software has gone through a fundamental test process to uncover defects. The number of high severity defects in the production environment ranges across different business disciplines, including but not limited to Motor-Vehicle , ICT, banking, insurance, Aviation, and health Sectors. The study will unpack different elements that are involved in deploying software solutions to production and this are all the elements that form part of the Fundamental test Process of Software Development Life Cycle. This is a test process that is documented in the standard BS7925-2 Software Component Testing, It therefore relates most closely to component testing but is considered general enough to apply to all levels of testing (i.e. component, integration in the small, system, integration in the large, and acceptance testing) (Ghahrai,2008). (Pal, Uknown) list the steps of Fundamental Test Process as: Planning and control Analysis and design Implementation and execution Evaluating exit criterion and coverage Test closure activities 30 Specific research questions have been issued and detailed in the previous chapters and they are essential towards the development of the research design. The summary of questions is as below: i. Why do companies have unknown, and uncovered high severity defects in the production environment, given all the studies that have been carried out about software testing process? ii. Why testing cannot uncover all the defects ? iii. When Should testing begin and End? iv. Does the testing team know what to test? v. How does the testing team know that they have the right requirements vi. What are the most efficient and effective test tools vii. What skills set must the testing team posses viii. Minimum academic qualifications required for a testing personnel For the above summarize questions to be fully addressed, a case study will need to be formulated, as a base of qualitative and inductive research. 3.2 Research methodology Research methodology is the way to systematically solve the research problem (C. R. Kothari, 2004). It refers to the choices that the researcher makes about cases to study, and methods to be used for data collection and data analysis planning as well as carrying out the research study (Silverman,2004), and research methodology helps a researcher in identifying the problems, formulating the problems and hypotheses, gathering information, participating in the field work, using appropriate statistical tools, considering 31 evidences, drawing out inferences from the collected information or experiment (Sahu, 2013). 3.3 Research type The design for a research project is literally the plan for how the study will be conducted (Berg, 2001), furthermore the design stage of the research is concerned with a series of important decisions having to do with the research idea or question(s) (Berg, 2001), and it is defined in details as the glue that holds the research project together, and it is used to structure the research, to show how all of the major parts of the research project -- the samples or groups, measures, treatments or programs, and methods of assignment -work together to try to address the central research questions (Trochim,2006). The primary focus will be addressing the why questions of the research. Answering the ‘why’ questions involves developing a causal explanation (De Vaus,2001). 3.3.1 Qualitative research methodology Interviews are a primary source of data in qualitative research; so too are observations, observations are common in many kinds of qualitative research, such as in case studies, ethnographies, and qualitative action research studies (Merriam; Tisdell, 2015) .Qualitative research yields detailed information report in the voices of participants and contextualized in the settings in which they provide experiences and the meaning of the experiences (Cresswell,2008). The goal of qualitative research is understanding issues or particular situations by investigating the perspective and behaviour of the people in these situations and the context within which they act, and to accomplish this, qualitative research is conducted in natural settings and uses data in the form of words rather than numbers (Kaplan and Maxwell, 2005) .Their primary interest in qualitative research is to 32 achieve understanding of a particular situation, or individuals, or groups of individual, or (sub)cultures, etc., rather than to explain and predict future behaviors as in the so-called hard sciences, with their arsenal of laws, theories, and hypotheses employed or rejected on the basis of their predictive value. In summary, qualitative methods are primarily inductive, in contrast to the deductive methods of experimental science(Bendassolli,2013). Inductive reasoning is based on learning from experience. Patterns, resemblances and regularities in experience (premises) are observed in order to reach conclusions or to generate theory( Research-methodology.net, 2015). The article( Research-methodology.net, 2015) further more list that the concepts associated with qualitative methods are : Type of reasoning Type of question Type of analysis Induction Subjectivity Meaning Open-ended Process-oriented Narrative description Constant comparison Qualitative research will gather information through interviews of directly involved Software testing personnel and steak holders, statistics (skill Level), management style, project management, and risk management disciplines. 3.3.2 Quantitative research methodology Quantitative research has traditionally provided a measurement orientation in which data can be gathered from many individuals, and trends assessed across large geographic regions(Cresswell,2008) in addition, Quantitative research is all about measuring relationships between variables and relies primarily on numbers as the main unit of 33 analysis, furthermore quantitative data provides a better understanding of the usability of a product because it allows you to measure the effectiveness (Can users successfully achieve their objectives?) and efficiency (How much effort and resource is expended in achieving those objectives?) of your product (Breeze and Conomos, 2013). This is an appropriate approach for software reliability, quality, and failure measures. 3.4 Sample description of case study 3.4.1 Introduction The company which will be understudy will not be named because of the confidentiality clause and agreement(s) in place. The company was given a licence to operate in 1993, and its operations were officially launched in 1994, and it is South African based company, with Africa entities in Lesotho, DRC, Tanzania, Mozambique, and Zambia. This case study will be carried out in relation with the testing process and software maturity in the IT : Billing, Production and Testing division of the company. The high-level functions of the division is Business Solutions support, Operations System Support, System Analysis and Development. The department serves as a central point and an essential component in all the business proposed enhancements and change request. The personnel are able to provide expert analysis, and the impact of the business requirements, and how plausible or implausible the requirements are. In context the division manages full delivery lifecycles from demand gathering, through initial and on-going budget requests and re-balancing throughout the year; contract management in consultation with legal and SCM. The division employs project managers and business analysts that process Business As Usual(BAU) as well as strategic transformation requests from the business from inception through assessment, delivery, 34 deployment to production and then 3rd level specialist support as needed. This includes functional, non-functional, governance and reporting requirements. 3.4.2 Departmental structure Figure 4: Organizational structure of a production team The billing system Vendor has the consultant onsite for the maintenance of the application and for any changes and enhancements in the system functionality as per business needs and demands. Software release is continuous and the testing team is constantly making decisions on what to test next. The testing function is outsourced to a software testing company. The case study will depict only the team that is involved in the delivery of the software, and no focus will be paid at other integrating divisions of the company. The interaction and functional flow process will be explained in details under the discussion section. From this we can define the research questions, data gathering and collection as well as evaluation the data to prepare the report. 35 3.4.3 Research design, case study The research design for this study is a descriptive and Interpretive case study. (Polit & Hungler 1999) defines descriptive case study as the type of research that describes what exists and may help to uncover new facts and meaning, and the purpose of descriptive research is to observe, describe and document. The case study will be analysed through. A Case study is not a methodological choice, but a choice of object to be studied, and the name case study is emphasized because it draws attention to the question of what specifically can be learnt from the single case (Stake, 1994). The basic idea is that one case (or perhaps a small number of cases) will be studied in detail using whatever methods and data seem appropriate, while there will be specific purposes and research questions, the general objective is to develop as full an understanding of this case as possible(Punch, 1998) A case study analysis focuses on a small number of cases that are expected to provide an insight into a causal relationship (Gerring, Unknown), and it will emphasize detailed contextual analysis of a limited number of events or conditions and their relationships(Springs, 1997), and it proposed six steps that should be used: This introduction to case study research draws upon their work and proposes six steps that should be used(Springs, 1997), Determine and define the research questions Select the cases and determine data gathering and analysis techniques Prepare to collect the data Collect data in the field 36 Evaluate and analyze the data Prepare the report Case studies do not claim to be representative but the emphasis is on what can be learned from a single case (Tellis, 1997). 3.5 Conclusion This chapter summarized research questions, and discussed qualitative, quantitative, and inductive researches. The research methodology discussed will guide in collecting the data as we attempt to identify variables, and to understand their relationship to build up the theory. 37 CHAPTER 4 4. RESEARCH FINDINGS – Case Study 4.1 Background in context of the STUDY The purpose of this research is to look at the reason(s) behind software critical defects in production. Software bugs are widespread, although, effective bug detection tools have been proposed, many software bugs inevitably slip into production runs and they have led to many severe production-run failures, causing huge financial loss and threatening people’s lives (Arulraj & Jin & Lu, 2014). Software failures greatly reduce system availability and a recent study showed that software defects account for up to 40% of system failures and that Memory-related bugs and concurrency bugs are common software defects, causing more than 60% of system vulnerabilities and for this reason, software companies invest enormous effort and resources on software testing and bug detection prior to releasing software, however, software failures still occur during production runs since some bugs inevitably slip through even the strictest testing (Qin & Tucek & Sundaresan & Zhou, 2005). To further put emphasis on software failures in production and operations, software glitch forced the New York Stock Exchange to halt trading for nearly four hours Wednesday, an outage that unnerved Wall Street and revived concerns about the fragility of the technological systems that underpin financial markets, and to further accentuates the gravity of the failure, President Barack Obama was briefed on the NYSE outage, 38 according to the White House press secretary, and the root cause was determined to be a configuration issue (Hope & Vaishampayan,2015). Different organizations are using different software testing processes and software testing methodologies, and for that reason, a case study was chosen as a research approach to narrow the scope of the research. The study of an entire software project as it progresses overtime is however extremely challenging and, as a result researchers tend to focus on some aspect aspects of a software project for their case studies (Runeson & Host & Rainer & Regnel, 2012). Basically, a case study is an in depth study of a particular situation rather than a sweeping statistical survey, and It is a method used to narrow down a very broad field of research into one easily researchable topic (Shuttleworth, 2008). Whilst it will not answer a question completely, it will give some indications and allow further elaboration and hypothesis creation on a subject (Shuttleworth, 2008). Case studies are very suitable for industrial evaluation of software engineering methods and tools because they can avoid scale-up problems, and the difference between case studies and experiments is that experiments sample over the variables that are being manipulated, while case studies sample from the variables representing the typical situation(Esernet,2003). 39 4.2 Background in context of the Company and the Division The company division under study is the IT: Billing and Production division of a telecommunications company. For adherence to privacy and confidentiality clauses and policies, we will name the company, Company T. The division under study is a central point of operations support, business solutions support, development, configuration and software testing of business and operations for billing and invoicing solutions. Solutions development and changes can either be core development where a code is generated to build, change, or enhance the solution, or the development can be configuration based, and all this is dependent on the functionality and changes requested by business. The customers that the division service are: a. Contact Centres b. Business Users c. Retail Shops d. Network Users e. Finance f. And Reporting Team The division manages and maintains 5 500 Products and 2 055 Services The billing system comprises of the Customer Relationship Management, Product Catalogue, Subscriber Management, Billing Engine, and data repository. As can be seen from Figure 5 the systems functions mapping which presents different functions that can be executed within the billing system. 40 Figure 5: Billing System Functions The division, and its staff personnel understand how each function relate to the other, and the business process from one function to the other. There are other various systems which integrates with the billing system using Web services and Application Program Interfaces, and various system modules within the billing systems which are not relevant for this study. The billing system Vendor has the consultants’ onsite for the management and maintenance of the application and for any changes and enhancements in the system functionality as per business requirements, needs and demands. Software release is continuous and the testing team is constantly 41 making decisions on what to test next based on the urgency of the required functionality to keep business operating as usual, as stated in the previous chapter. Customer Relationship Manager and the Billing system Modules are managed and maintain in various level. Figure 6, presents the different levels of roles and responsibilities in relation to the application management. Figure 6: Levels of Roles and Responsibilities 42 Application task team is the team of individual who perform different functions on the Customer Relationship Manager which interfaces with the billing system. The different roles and responsibilities are defined as below: a) Task Team Coordination and measurement The team is primarily responsible for First Line Support and management of user and customer queries which are reported on incident reporting tool and then get assigned to the relevant Operations and business support specialist. b) Application management Monitor team The team is responsible for Monitoring processes and jobs that are scheduled, and to initiate unscheduled processes, and to process system backup. Operations System Support and Business Solution Support team is responsible for the following tasks: Handling of Users and Customer queries, fix and resolve incidents within the agreement service level agreement(Incident Management) Billing data integrity checks and maintenance Processing of critical systems jobs Processing Billing and generate Output Pre and Post billing business and operations Support Reconciliation of bill data Reconciliation of data, packages and services between billing system and the network Revenue Assurance 43 Incident Management System Analysis for Impact Assessment and advices on the feasibility of proposed business requirement Attend Joint Application Design Sessions Attend Design Review Meetings Review Functional Specifications Review Business Requirements Specifications Review Technical Product Development Document Approve or Reject Proposed business and Functional changes Perform Testing(User Acceptance) Document Processes Perform Configuration of Products and Services Development Identify Operating Systems Requirements Identify Resources Requirements Plan the project in terms of: o Work breakdown structure o Time lines o Precedence analysis o Resource assignment o Costing o Critical path and PERT chart o Gantt charting 44 o Budgeting o Resource alignment o Generate Reports c) Development Team is responsible for the following: Manage Code Development and Delivery Expectations Define Functional Specifications Define Technical Design Specifications Development of the system/Coding Unit Testing Environment Maintenance System Configuration System Analysis Feasibility Study Incident Management Facilitate Changes to be implemented Coordinate System Testing Coordinate User Acceptance Testing d) System testing Team is responsible for the following: Review Specification Documents Design Test Cases Capture Test Cases on Testing Tools Execute Test Cases Sign Off test result and Implementation Sheet 45 Test Reporting The core function of the division is retail billing, maintenance and management of products and services. Figure 7 defines the functional process, and a high level billing process until customer’s bill data records are distributed. Figure 7: Billing Process The division has 3(Three) environment on which development and software testing is performed. Figure 8 presents software development and test environment layout: Figure 8 : Traditional Software Testing Environment (TYSS,2014) 46 Development environment is a dedicated environment, and exclusive to analyst programmers. As Figure 4 shows, unit testing is the testing type performed on the development environment after the code has been developed. The code will be promoted to QA environment, to allow the System Integration test team to perform system and Integration tests depending on the scope of the requirements. The scope might include integrating systems where interfaces will be tested on QA environment. Production Team uses the same QA Environment to process User Acceptance Testing. Based on the signoff by SIT team, and UAT team, the solution will be deployed to production environment. 4.3 Research Focus A case study is an empirical method and by this we mean a defined, scientific, method for posing research questions, collecting data, analysing the data, presenting the results and each of these steps is planned from the outset of the study and do not come about through serendipity, furthermore case studies are well-suited to “how” and “why” questions in settings where the researcher does not have control over variables and there is a focus on contemporary events (Perry & Sim & Easterbrook, 2004). The research focal point is driven by this question, Why test Software ?, and different studies have provided different answers to the question, however, the basic answer to the question would be, to find bugs or defects in the software. We stated in the previous chapter that James Whitaker, has noted that despite the countless hours that go into code development, and seemingly endless code reviews, bugs and defects still are found in the production release, why ?(Bentley, Unkown). The case study will seek to address the explanatory question and focal point above. 47 Explanatory case studies not only explore and describe phenomena but can also be used to explain causal relationships and to develop theory (Harder,2010). Where explanatory research is undertaken, a single case may provide the basis for developing explanations of why a phenomenon occurs, and these may then be further investigated by applying them to additional cases in other settings (Darke & Shanks & Broadbent, 1998). The unit of analysis is a critical factor in the case study and it is typically a system of action rather than an individual or group of individuals in addition case studies tend to be selective, focusing on one or two issues that are fundamental to understanding the system being examined (Tellis, 1997). The case study is very relevant to the research questions that aim to explain the present circumstances of how and why production run and operational software defects. A common misinterpretation is that the various research methods should be arrayed hierarchically, and many social scientist still believe that case studies are only appropriate for the descriptive phase, that surveys and histories are appropriate for the descriptive phase, and that experiments are the only way for doing explanatory or causal inquiries (Herold, 2011). ‘How’ and ‘Why’ questions are more explanatory and likely to lead us to the use of case studies, histories and experiments as the preferred research methods(Herold, 2011). A source of evidence for this case study is from open-ended interviews, which are regarded as non-structured. This approach of interviews was adopted to allow the participants in this study to construct reality and provide answers to research questions and think about situations specific to the study. This would also allow the participants to make suggestions on how the current process can be improved. 48 The personnel involved in the interviews were 2 (two) Test Analyst who have been with the company for more than 5 years. The Test Manager of the division has less than 6 months in the position. From the development team, 1 (One) Analyst Programmer formed part of the interviews, and all the resource in the User Acceptance Team. This is a Single case study where a single organization was studied with 3 different divisions which are directly involved, and are at the centre of the study. One rationale for selecting a single case rather than multiple case design is that a single case can represent the critical test of a significant theory (Yin,2013). 4.4 Research Question Research questions form the basis of the case study and seek to study the current software testing process and practice of company M. Research questions designate what researchers want to understand about the research problem that led to their study, and they further specify the stated purpose of the study, which in turn addresses the stated research problem and in addition qualitative research is the method of choice when the research question requires an understanding of processes, events and relationships in the context of the social and cultural situation. (Sandelowski, 2008). The exploration of the central phenomenon is based on the main question: I. Why critical software defects are found in production environment? To satisfy this inquiry, we have tabled sub-questions which the study will give descriptive answers to, and this will seek to explore the phenomenon in details as we seek to discover, understand, and describe the stories. 49 4.5 Research Sub-Questions To seek a further understanding to the study question, sub-question become very important to outline the current testing practice within the organization, and with every process, roles and responsibilities are defined, and based on the skill set level, allocation of the responsibilities is then processed. The inquiry focussed on drawing out factual information on the following Categories: i. Roles and Responsibilities. ii. Level of software testing skill, knowledge and competence. iii. Current software testing practice 4.5.1 Development Team Figure 9: Development Team Structure 50 The development team is outsourced and they are with the client onsite. The team is comprised of the resources that are permanent with the vendor and contract and temporary basis to company M. Roles and responsibilities for the development team is managed by the development manager as illustrated on Figure 9 of development team structure, and is the single point of entry for requirements from business, and depending on the magnitude of the change, the task will either be assigned to the Business Analyst, or the developer, also referred to as Analyst programmers. The technical team lead is managing special projects depending on the magnitude and the urgency of the project. The development manager reports to the division portfolio manager. Project administrator facilitates and administers the deployment of code from development environment to Quality Assurance (Test) environment by liaising with change management, and different users who are required to sign-off the implementation sheet Analyst Programmer, are also known as developers. Their main function is to develop the code, or/and make changes to the code. Perform unit testing and document unit testing results which they send to the Production team for further analysis. The test results with the respective screen-prints are handed over to the test team, to help them understand the changes to the function, or to understand the new functionality. The team also defines the technical design document which is sent to the System Integration Test team to test against. Business Analyst defines the functional design specifications , although with no detailed use-cases. The functional specification is however not defined for cosmetic or less critical 51 changes. An email is good enough to serve as a requirement and the developer will be assigned to the function based on that. Production Support Analyst is responsible for incidents management and they are subject matter expert of the vendor’s system, and they are sitting on the same environment with the production team. They drive the discrepancies issues between the network system and the billing system, and fix them accordingly because of the understanding they have of the system. The team also process the scheduled job. Portfolio Development manager Project Administrator Technical Team Lead Analyst Programmer Business Analyst Responsibilities Manages Business Expectations Estimates time and Effort with input from Analysts programmers Assigns tasks Business Liaison Manage Projects, and Budget Member of Change Advisory Board Administers code deployment to QA Facilitates Sign-Off process Involved in projects administration tasks Manages Escalations, and Projects Subject Matter Expert Define Solution Design Document Code Development, and Unit Testing Document Unit Test results Impact Analysis Member of CAB Define Solution Design Document Code Development Unit Testing Document Unit Test results, and handover the test results to Testingteam Impact Analysis Fix defects Compile Functional Specification Facilitates Sign-Off process Manages code deployment from Development to QA Production Support Analyst Incident management Discrepancies Management Support Analyst Incident management Table 1: Development Team Responsibilities Matrix 52 Support Analyst are responsible for specific incident management, and they provide further analysis of incidents causes and report to the development manager of required actions. This are the incidents that the production team could not resolve, fix and close. As can be seen of Table 1, the responsibility matrix of the development team is defined, as this is to allow for management and coordination of tasks in the development team Testing Skill Level of analyst programmers This section seeks to explore the testing knowledge and skills of the development team. The development team is essential performing unit testing. A unit test is code that exercises a specific portion of your codebase in a particular context, typically, each unit test sends a specific input to a method and verifies that the method returns the expected value, or takes the expected action and unit tests prove that the code you are testing does in fact do what you expect it to do(Lorenz, 2014). Upon investigation, 0% of the analyst programmers have received a formal software testing training and 100% received software testing training as it formed part of the modules they were studying. Modules include: a. System Analysis b. Logic design c. Software Engineering d. Database Principles e. Software Development f. Advanced System Development 53 The whole team have testing knowledge although it is not in a form of an external certification. The development team does not use the testing tools, i.e Quality Center. The test cases designed are in a form of screen prints with details underneath them on the word document. The testing results are only sent to the production User Acceptance team as a guideline on what functions have changed and what should be tested. The team is applying waterfall development methodology which is comprised of the following phases: a. Requirements gathering and Analysis b. Design c. Coding and Unit testing d. System Testing e. Implementation f. Maintenance Figure 10: Time Spent by Development team in testing 54 The emphasis is that the development team is only responsible for unit test, although the unit test is based on positive scenarios. Defect found by the development team during unit testing are not documented. The team simply fixes the defect and retest the code. Figure 10 puts into context the time spent by the developers in testing. 50% of the team spend maximum of 2.5 hours of testing, and only 16% spends minimum of 1 hour in doing unit testing of the code. After Unit testing has been performed, a request to move the code to QA environment from Development is made. Change management team is responsible for processing the move to QA. System test team is informed through email communication that the code has been successfully moved to QA so that they can resume with end to end system integration test. 100 % of the development team make time to sit with the user Acceptance team in the production environment to take them through the changes that they have implemented, and how each should be tested. On some occasions the development team supply the UAT and System Integration Team with the test data to test the various functional changes as required by the business. 4.5.2 System Integration Testing team Company M, has outsourced its software testing services to the company which will be called ILQ Testing due to confidentiality clauses. Figure 11 is a representation of System Integration Test team structure. ILQ Testing has been in operation for over a year. ILQ testing is responsible for testing all the code enhancements on a small and big scale. The testing coverage is performed across the CRM system and the billing system. The CRM uses API (Application Programming Interface) which calls functions. of the billing system. The team is managed by a Test Lead who is an employee of ILQ testing, and the test 55 lead reports to the portfolio manager of the department. The team is responsible for end to end Systems and Integration Testing. Figure 11: SIT Team Structure The team is made out of Eight (8) technical resources including the test lead. The test lead is responsible for allocation of tasks and overseeing the testing. The test-lead is the interface link between the development manager, release manager and the testing team. In addition the test lead defines the test plan only for projects that are regarded as big projects due to functionality scope, complexity, resources and budget allocation. Depending on the magnitude of the project, either the functional specification or technical 56 design document, or Implementation sheet with high level technical changes will be given to the test team. A functional change which might require maximum 5 days to develop and test will not have a functional design specification or technical design specification. What will be produced is a change request sheet and the implementation sheet required for sign-off, and it details all the programs and functions to be tested. Software release and implementation is on weekly basis, and the testing team is continuously testing and are kept on their toes as they deal with production defects which prohibit a seamless business process. Quality Centre is a test tool used to capture business or user requirements, and to design test cases which are mapped to the user requirements. After the tests cases have been designed, and captured on quality centre, they are put on a ready status until they are executed. A pass or fail status is assigned to the test cases based on the results. As defined on Figure 11,that the different testing resources execute different functions, with junior testers have less responsibilities on at their helm. The following Test Process is undertaken by the Test Team: a. Specification Documents review b. Requirements Design c. Test cases Design d. Link test cases to requirements e. Execute Test cases f. Defect Logging g. Sign-Off implementation Sheet 57 Because of the nature of the business and environment, the design of test cases depending on the changes is in parallel with test cases execution due to the urgency of the changes. This type of testing is referred to as exploratory testing. The functional matrix of the test team is tabled as follows: Test Lead Test Analyst Junior test Organizes Kick-off meetings Defines a Test Plan Document Review Specifications Reviews the test cases and requirements designed by Junior testers and advices Design test cases Arranges meeting with the test analyst to review test cases Assigns tasks to Test Analysts Extracts functional and user requirements from design specification Captures test cases on Quality Center Arrange test tool access, and system access Arranges hardware for test setup Capture requirements on quality center Design the test cases on Quality Center according to the specification document(s) Execute test cases Organize status meetings Map Requirements with Test cases Single point of contact for test team Keep track of new requirements and changes Test Reporting Sign-off implementation document Estimation of test Effort Evaluates the Entry criteria. Monitors and control testing according to calendars Evaluates the Exit Criteria Log defects, and retest. Monitors the test coverage Execute the test Log Defects Tracks, and re-test the fixed defects Generate a test Report Table 2: SIT responsibilities Matrix The plainest definition of exploratory testing is test design and test execution at the same time and this is the opposite of scripted testing (predefined test procedures, whether manual or automated) furthermore Exploratory tests, unlike scripted tests, are not defined 58 in advance and carried out precisely according to plan(Bach, Unknown).The team is essentially addressing defects on the production environment which are discovered by business users, and because they impact on the day to day business processes, they become urgent as customers are affected. The test team performs the following type of testing: a. Black Box/Functional testing(Manual) b. Regression testing (Manual) Black box testing (also called functional testing) is testing that ignores the internal mechanism of a system or component and focuses solely on the outputs generated in response to selected inputs and execution conditions, and Regression testing is selective retesting of a system or component to verify that modifications have not caused unintended effects and that the system or component still complies with its specified requirements (Williams, 2006). The testing performed by the test team is manual. The system test team is responsible to source and manage the test data. When a bug is found during testing, the testing resource logs the defect in the defect reporting tool, and jots down the steps to reproduce the defect, and assigns the defect to the respective analyst programmer, who will fix, and redeploy the fix to test for the tester to retest, although the analyst programmers or developers do not make use of a defect reporting tool. The application to log defects has the ability to generate an email and as soon as the defect is logged, an email will be sent to the relevant analyst programmer to fix and redeploy the fix.The test team is responsible the end to end functional testing which includes, the CRM, API, and the back-end. SQL and unix skills are essential requirements for the team to provide comprehensive coverage of the test artefacts, and all the reasonable aspects 59 of functionality. After the system test has been performed and signed-off, the solution is then handed over to the User Acceptance Team which is within the Billing and Production, Operations System and Business Solution Support team to execute user acceptance testing so that the solution can be implemented in production. Skill level of the System Test Team All the team members of the test team have tertiary qualifications in Information Technology, where a software testing is a subsection of either in System Analysis, Business Analysis, or Software Engineering design. The level of Education is National Diploma, and the experience in years of software testing is just below 3 years. The team understand the different testing methodologies. Error guessing and negative testing are synonymous amongst the test team. The test team only signs –off testing after a clean cycle of testing. For every defect found in the testing cycle, the code is retested after the development fix, and only upon a clean cycle of testing, or when the testing has met the exit criteria as defined in the Test Plan. 25% 12.50% Test Lead 37.50% Senior TA Junior TA 25% Test Interns Figure 12 : Percentage Representation of SIT Team 60 Figure 12, shows the percentage composition of the test team, which defines how much testing skill and knowledge is within the team. The following skills are possessed by the testing team: I. Test Analysts and Junior test analysis combined: Test analysts make up 37.5 percentage of the entire system test team, and junior test analysts 25 percentage of the team a. System Analysis skills where they are able to decompose the system into individual components and understand the individual functions of different components and the objective of all the components put together to function as a system. b. Business Analysis which requires the testing team to understand the user requirements, business requirements and how they are translated into functional requirements which should be tested to meet the and conform to the specification documents, satisfy business and user needs and requirements. c. Time Management skill because the Test analysts with the guidance of the test lead are executing test according to the test plan and schedule. The team however have indicated that overtime has to be put on to meet the time line as outline in the test plan, or as communicated by the release manager. d. Failure Analysis percentage employed by the test team is calculated as : (Number of Test Cases Failed/ number of test cases executed ) * 100 This give the percentage failure percentage of the defect and this give an indication of how error prone the solution or changes are, or how ready the solution is to be implemented in production. 61 e. Requirements based testing : The testing team is processing the testing on requirements based testing and not risk based testing. The requirements as extracted by the testing team provides a comprehensive coverage of all reasonable aspects of functionality. f. Test Cases Design – The test cases are designed based on the use cases as defined in the functional specification if provided. The test-case details the functional process are detailed to enable any one to easily understand the function being tested. g. Requirements extraction – The test team extract the requirements based on the design documents and functional or business requirements specifications documents. On the cases of changes on a small scale, experience of the system is used to gather requirements to be tested and error guessing is applied as a technique. h. Beginning of Testing - Testing begin as soon as the solution has been deployed to QA environment and a communication has been sent out. On some cases, software testing is in parallel with test cases design. Test cases a simply kept and stored on the quality center testing tool for history and traceability purposes. i. Test tools used by the test team is a standard test tool used called Quality Center which can be used for structuring test process, Defining and adding test sets, running tests, or executing tests, adding new defects, matching defects, designing functional requirements, mapping functional requirements to test cases, and generating test reports. 62 II. Test Interns – test interns make up 25 percentage of the test team. The interns are newly graduates and don’t possess much of the corporate experience and it was outlined that they have never tested before and it was the first time that they actually tested, although they have learnt about testing as part of their degree. III. Test Lead - Time management, project management, test management, test analysis, system analysis, business analysis, complexity metrics, failure analysis, test tools, impact analysis, risk management, test reporting and communication. 4.5.3 User Acceptance team Figure 13: Billing and Production Team Structure Billing and Production core functions are Operations Systems Support, Business Solution Support, Configuration, Development and Billing Operations. The team as represented on Figure 13, is composed of technically inclined resources who essentially are responsible for processing billing functions as explained under Operations System Support and Business Solution Support team section. In addition to their core functions, the team is 63 required to perform User Acceptance Testing for all the functional and business process changes in the billing system. All the changes that directly impact on the core billing processes and functions should be tested by IT:Billing and Production team. Functions that affect billing are, but not limited to pricing, tariffs plans, contract duration, services, move billing, invoices changes, pro-rata, discounts, packages, migrations, subscription activations, subscription migration, and billing cycles. The team understands the technical architecture, functional layout, functional process, and how the system integrate with other applications because they support the system technically and operationally, although the actual users of the solution are not sitting within the IT:Billing and production. The users of the system are in the contact centers, retail shops, and various dealers. It was a strategic executive decision to have the team directly involved and responsible for UAT. The billing and invoicing system integrates directly with the network system which gives subscribers access to the services that they are ultimately billed and invoiced for. The product catalogue is on both the billing system and the network systems and at any point in time the products, services and business rules in both systems should be in synch to ascertain a seamless provisioning of subscriber services. Business Intelligence forms part of the Billing and Production team, but they are not involved in the User Acceptance Testing process. The User Acceptance Software is carried out on the QA platform, which is the same platform used for Systems Integration Testing. The team is responsible for sourcing their own test data, and test scenarios. The following dynamics takes place within the UAT phase of functional changes: 64 1. The resource that operationally manages the function under test is responsible to test that particular function because of the knowledge, operational experience and understanding they have of the function. 2. The development team hand over the test documents which consists of the tests performed during Unit testing with screen shots as a guidance on what changes have been effected, and where should the team focus on testing the changes. 3. Based on the magnitude of the changes, Functional Design Specification or Technical Design specification maybe provided together with Implementation sheet, which consist of the actual program changes, and the size of the program. 4. User acceptance testing is based on the limited time schedule, and is often executed in parallel with System Integration Testing. 5. The test type and methodology executed is exploratory, and there are no test cases designed. Error guessing and positive test are the most applied test techniques. 6. Defects are reported over email facility and coordinated over email facility. 7. Based on the magnitude of the project, some changes will be assigned the Project Manager and the business analyst to liaise with the team to facilitate and coordinate the User acceptance progress. This mostly applies when there are multiple integrating systems that are impacted by the changes and where different systems need to be tested. 65 Testing Skill Level of IT: Testing, Billing and Production team 1. 20% of the team possesses formal testing qualification and certificate, i.e Practical Software Testing for Business Analyst and Testers, and ISTQB Foundation. 2. The whole team have application development and configuration development skills 3. 80% of the team has never processed software testing before out of the company, and it is the 1st time they encountered testing at the department. The team has been testing the functions that they are responsible for operationally, for the past 8 years. 4. 100% of the team have system analysis skills and they understand the system functionally and technically, and the relationship between the billing system and the other integrating systems. 5. Because of the team having to juggle between operations support, business support, configuration, development and operations, the team have enormous time management skills and competency. 6. The test performed is manual testing, and only functional changes are tested. The team understand and a familiar with only these two testing techniques 7. Test cases and test report are in the form of screen prints of the actual application under test with very few descriptive details. This is how test reporting is managed. 66 8. User Acceptance Testing is facilitated and coordinated by the development manager and respective analyst programmer who was responsible for the changes, and the test management responsibilities are with development team. 9. Test Process followed is Analysis of the functions and changes, Test Execution, Test Reporting, Sign-off and Implementation. 4.6 Case Study Data Analysis The study conducted focussed on the three teams that are executing software testing responsibilities within Company M. Analyst programmers, also known as developers, perform unit testing, System integration team performs systems’ functional, interface and Integration testing, and billing and production team carry out user acceptance testing responsibilities. After going through open-ended and questionnaire, and studying various processes documentation as presented by the study participants, the following problems were identified, in relation to current academic standards and Literature Review. 4.6.1 Development Team 4.6.1.1 Testing skills, knowledge and competence 1. The inquiry outlined that 0% of analyst programmers, also known as developers have not undergone any formal software testing certification or training. The knowledge received at tertiary education is theoretical as it formed part of the degree modules, and software testing best practices, and practical training was not explored. 67 2. Testing Tools are not used by the development team, and this suggest that the functions that are being tested are not documented, recorder, and there is no traceability in place. 3. From the interviews, it was found that 16% of the development team spends maximum an hour on unit testing, 33% spends 1,5 hours, 50% spends 2.5 hours on unit testing, and this is because of the fact that the analyst programmers are processing 1 or 2 positive tests to verifying that the code is executable, and produces results. This practice is attributed to the lack of software testing knowledge. 4. Analyst programmers understanding of testing is to execute the code and it generates results. 5. Analyst programmers do not involve system integration test team in the design review meetings, and technical review meetings to enable the test team to have a better understanding of the solution under test. 6. Technical design documents produced are not detailed enough to enable the test team to understand the technical architecture and layout of the solution. Current test process as defined in figure 14, only depicts System Integration Test team’s involvement at the end of the process when a test document compiled by the development team is handed over to the team. 68 Figure 14: Development and Unit Test process 4.6.2 System Integration Test Team 4.6.2.1 Testing skills, knowledge and competence 1. Only 37.5 % of SIT team reported having software testing certification, ISTQB in addition to I.T tertiary qualification. 2. The study outlined that 62.5% of the team has less than 2 years of software testing experience. 3. Testing is Manual. 69 4.6.2.2 Does the test team know what to test ? 1. Testing model is not clearly defined, as the testing team have no idea what type of testing methodology they have to use. There was a mention of waterfall model by the team, although it is not fully adhered to. 2. Specification documents are not provided for all the existing changes and new functions and if they are provided, they lack details including use cases which form the base of what the test team should test against. This leaves the test team with test cases that do not provide a comprehensive coverage of all reasonable aspect of functionality. 3. The study revealed that the SIT team does not know when to start testing. They are not involved in JAD (Joint Application Development) sessions, review meetings (Design), and they are not involved in the review of the functional design or business requirements specifications as that forms part of static testing. 4.6.2.3 Defect Management 1. The defect meeting is not held on regular basis where testers, developers, business analysts, and project manager meet to coordinate and discuss defects. The study revealed that the, the coordination is over the email facility. 2. The investigation has revealed that none of the test team members are applying defect prediction 4.6.2.4 Test planning and Management 70 Test plan is only compiled by the test lead for the big project, which involves complex changes that affect and impact on multiple systems. Test Analysts, and Junior testers and test interns do not receive the copy of the test plan and were unable to produce any at their disposal. 4.6.2.5 Testing techniques The inquiry outlined that the most common used test technique is positive testing, and negative testing, and this is attributed to the type of legacy system under test where they cannot use other type of techniques. 4.6.2.6 Application and system level programming Code Review is not synonymous within the SIT team. The investigation made a revelation that none of the SIT team member have any sort of programming or development skills and knowledge, in addition, the team is unable to read the unix scripts. The team can however, generate SLQ queries to extract, manage and maintain the data in the database. 4.6.2.7 Matrix data The study revealed the whole team does not have a knowledge of how to define requirements traceability matrix 4.6.2.8 Metrics The team does not employ any metrics for defects density, defect removal efficiency, defects leakage, and the risk factor metrics. 71 4.6.3 User Acceptance testing Team 4.6.3.1 Operations Team performing UAT User Acceptance Testing, or Billing, Production and testing team executes UAT not as business or requirements owners, but as the functional owner. The study reported that the production team is responsible for UAT on the functions that each team is responsible for from operations perspective. 4.6.3.2 Business Analyst The team functions without a Business Analyst. 4.6.3.3 Project Manager The team is without project manager 4.6.3.4 Test Tools The team uses Quality centre, but no investment has been made on automated tools.The study reported that, none of the UAT team uses the test tools for test execution, defect reporting and test reporting. 4.6.3.5 Testing knowledge, skills and competence The inquiry revealed that 80% of the UAT team does not have software Testing Training, and certificate. Testing is manual. The team only tests positive scenarios, and all the other testing types and techniques are not applied.There is no Software Development Life Cycle model that is being followed to process testing.UAT is not independent, because development team provides the test team with the results and screen prints of unit testing, to give the team guidance of what to test, and the study revealed that the team uses the same data that was used in unit testing.the study reported 72 that UAT is performed on the same test environment, where systems test was performed, i.e QA. UAT environment in the organization as discovered by the study is used for Pre-Billing checks and balances, and test run, but not for testing of functional changes.Production team execution of UAT is the same as the execution of System Integration Testing by SIT team, because they are testing the actual functional requirements. 4.7 Literature Review The inquiry has put into context the current testing practice in company M, and the assessment of testing activities and testing process has been performed through investigation and open-ended interviews. Critical questions were addressed with a view to provide a guideline of the underlying problems behind software defects in production environment. The literature review’s objective is to provide guidance on the current recommended and best industry practice of software development and testing, with an attempt to provide suggestion and to improve the testing process and practice within company M. 4.7.1.1 Software Development Life Cycle Model The development team, SIT team and the Production team responsible for software testing were unsure about the development model that has been adopted. The model is supposed to be waterfall model, however, the methodology is not fully adhered to as some of the activities like UAT and SIT have been executed parallel. Figure 15 represents a waterfall model of software development lifecycle. 73 Figure 15: Waterfall Model (Bassil,2011) The Waterfall SDLC model is a sequential software development process in which progress is regarded as flowing increasingly downwards (similar to a waterfall) through a list of phases that must be executed in order to successfully build a computer software, and originally, the Waterfall model was proposed by Winston W. Royce in 1970 to describe a possible software engineering practice, furthermore the waterfall model defines several consecutive phases that must be completed one after the other and moving to the next phase only when its preceding phase is completely done(Bassil,2011). Testing happens after the code has been developed and implemented in the test environment. With the coding of the application complete, the testing of the written code now comes into scene, and If there are any flaws, the software development process must step back to the design phase. In the design phase, changes are implemented and 74 then the succeeding stages of coding and testing are again carried out (Akhilesh,2012). A generic very high level structure of test process activities has been given by (Tian, 2005) as represented on Figure 16. Figure 16: Generic Structure of Testing Process (Tian, 2005) The test process regardless of the SDLC model, has the same activities, and it is recommended that the SIT team understands the testing activities, and the ultimate goal. Non adherence to the test activities is futile to the course. Test process is divided into three main groups of test activities which are, Test planning and preparation, to set the goals for testing, select testing strategy, prepare specific test cases and the general test procedures, Test execution and related activities which also include related observation and measurement of product behavior, and final activity is Analysis and follow-up, which include result checking and analysis to determine if a failure has been observed, and if so, follow-up activities are initiated and monitored to ensure removal of the underlying causes, or faults, that led to the observed failures in the first place (Tian,2005). 75 The study gives an emphasis of adherence and compliance to adopted software process by Company M, and that non-compliance, to the process will open a room for defects. 4.7.1.2 Insufficient Software Testing Training In order to produce quality products, companies require new-hire candidates that have good problem solving, debugging, and analysis skills and in software engineering and computer science many graduates enter the work force with exceptional development skills, but lack proficiency in test, debugging, and analytical skill, and this is in part because of the current academic curricula emphasis on software development at the expense of teaching software testing as a formal engineering discipline(Astigarraga & Dow & Lara & Prewitt & Ward, 2013). It is estimated that more than 60% of the development cost is spent on testing for many software systems, however, a large part of the problem is not so much the amount of testing that is performed on software, as it is “who” the software is tested by, and “how” these testers go about doing it furthermore many personnel responsible for software testing are software engineers with a very basic background in testing, mostly restricted to the application of a small set of testing tools and a simple knowledge of how to apply a few testing tools cannot hope to substitute for a strong foundation in software testing principles and methodologies(Wong ,2011). There is one primary certifying body in software testing, the International Software Testing Qualifications Board (ISTQB) which is Introduced about 10 years ago, the board offers a series of certifications across three levels: Foundation CTFL, Advanced CTAL, and Expert CTEL(Thongkham,2015). Organizations, researchers and HRD professionals realized that if they want to improve the employees as well as organizational performance they have to invest in training activities (Bhatti 7 Hoe, 2012). Although (Astigarraga & 76 Dow & Lara & Prewitt & Ward, 2013) brings on a different dimension that Programs such as the “Certified Software Quality Engineer” from the American Society for Quality, the Association for Computing Machinery “Certified Software Development Associate” and “Certified Software Development Professional” curriculum, as well as the International Software Testing Qualification Board's certificate in software testing tend to focus on terms and definitions rather than practice, and they further continue to outline that, In order to ensure a supply of sufficiently skilled test-oriented engineers during the next five to ten years, actions in higher education curricula must be taken, and It is our belief that industry must partner with academia to elevate the status of testing as an equally crucial component of software engineering as the development phase is held today. The study (Astigarraga & Dow & Lara & Prewitt & Ward, 2013) continued to point out that as complexity in the IT industry and customer solutions continues to grow, the need for highly-skilled software test engineers will also continue to increase and in an industry where quality is expected and defects can cause costly or even life-threatening errors it is imperative that the shortage of software test skills among recent university graduates is addressed, and If students are to be prepared for jobs in software test, curricula guidelines and available course materials must be reformed. 4.7.1.3 Test Automation The desire for repeatability and accuracy is a reason organizations are moving to automate testing, both to uncover bugs and to ensure performance standards (Hildreth,2004). As reported in the study that company M testing is manual, and the 77 regression test suite increases with every release. Regression testing intends to ensure that software changes do not introduce new problems, or failures, in a software, also, it ensures that you don't reintroduce previously fixed bugs and with automated incremental tests run by a tool in a set of environments, or test bed, you save the time that is needed to manually run a test on each environment, and allow better sharing of resources, furthermore by setting regression tests to run once a day, for example, you do not consume resources that you might otherwise use for development or incremental testing (Negrello,2013). Software testing using an automatic test program will generally avoid the errors that humans make when they get tired after multiple repetitions. The test program won't skip any tests by mistake (Kelly,1997), and Some of the problems faced during manual testing as discovered on the academic study by (Rishab & Kaluri, 2015) are : 1. Changes in the requirements. 2. Documenting of the bugs that were logged, bugs fixed and those that are still open using an excel sheet. 3. Maintaining of Requirements Traceability Matrix (RTM) without using any tools manually is very tedious job. 4. Carrying out regression testing on a daily basis or biweekly or as needed by manual testers is not possible. And (Rishab & Kaluri, 2015) further stipulated that to overcome the above problems, testing team, prefers use of test management tools and specific type of testing automation tools. We suggest that company consider automation of the regression test suite. 78 4.7.1.4 Defect Prediction Having defect prediction as part of the testing process allows testing team to strengthen their test strategies by adding more exploratory testing and user experience testing to ensure known defects are not escaped and re-introduced to end-users and test engineers would be able to have better root cause analysis of the defects found where in the long run, testing can achieve what is called as zero-known post release defects for that particular software (Suffian & Ibrahim, 2012) 4.7.1.5 User Acceptance testing As changes to the system are planned and scheduled, it is important that any changes to the system are tested, and It is especially important to include User Acceptance Testing (UAT) as it is one sure way to reduce or eliminate change requests, and drastically reduce project costs, and the goal of UAT is to assess if the system can support day-today business and user scenarios and ensure the system is sufficient and correct for business usage(Yin-Tantouri,2015). User Acceptance Testing (UAT) focuses primarily on verifying that the functionality delivered, and proven in System and System Integration Testing, meets the end users' business requirements and it is usually performed by the business, while best practice would see these business users supported by professional testers (Test-direct,2014). When performing user acceptance testing, the expectation is that testing skills and application domain knowledge have a higher weight than the specific technology skills for a project, and testing is typically performed from a user’s perspective using the application as users normally may(René, 2015). In User Acceptance Testing, manual testing is done by the user,generally, UAT is not automated (Tahiliani & Pandit, 2015). The recommendation to company M is that business users and 79 business analysts should be integrated in executing User Acceptance Testing, as they understand the business process, and usability thereof. 4.7.1.6 Development Manager Role in Software Testing Literature review puts into context the roles and responsibilities of the development manager in the SDLC. The secret to being successful as a Development Manager is managing expectations and making sure everyone understands your role is the first step.(McCabe, 2014). The role being to be responsible for managing multiple priorities of conflicting projects. Also an escalation for issues from the team, which are unable to be resolves internally (Bogue,2006). The development management role works closely with the project management role to ensure that the projects are completed and they also spend time working with the business owners on planning and preparing for new projects that will soon be consuming the group, in addition they're constantly making small changes in the current project to get a better product, develop a better skill set in the group, or just generally preparing the development team for the next hurdle that they must face(Bogue,2015). To develop and manage reliable software, it is essential for developers and managers to acquire knowledge for testing procedures at all stages of software development. Therefore, the knowledge of software testing is equally essential for software developers and managers(Ahmad & Al-Abri & Shiginah, 2013). 4.7.1.7 Risk-Based Testing No matter how much time we have for testing software, we can always use it up and wish for more, and we never have enough time, therefore quick risk analysis will help decide where to focus the testing efforts and where all the potential risks associated with the code under test will be listed, including those that go beyond functionality, such as 80 security, performance and usability, and the likelihood of a failure and the impact of that failure should be used to help decide what tests to do first, and leave testing of lower-risk areas to last.(Crispin, 2009). Risk is the product of damage and probability for damage to occur. The way to assess risk is outlined in figure 17 below. Risk analysis assesses damage during use, usage frequency, and determines probability of failure by looking at defect introduction (Schaefer, 2005) Figure 17: Risk Definition and Structure(Schaefer, 2005) 4.7.1.8 Probability of failure The worst areas are the ones having most defects, and the task is to predict where most defects are located, which is done by analyzing probable defect generators, in addition, some of the most important defect generators and symptoms for defect prone areas are complex areas, changed areas, areas with many defects before, and to determine the probability, functional size of the area is to be tested, i.e. the total weight of this area will be "fault proneness / functional volume".(Schaefer, 2005) 81 Figure 18: Failure Probability(Schaefer, 2005) 4.7.1.9 Testers only not involved in JAD sessions "Testing is not a phase!" We have to stop thinking of "testing" as some separate activity, removed from the rest of software development. It takes a village to produce a highquality software product, and we can’t do it from isolated functional silos(Crispin,2009). We suggest that the SIT team get involved from the kick-off meeting, and engage in design meeting and requirements review meetings. 4.7.1.10 Test Maturity Model Maturity models are widely used in process improvement and the users of maturity model should be confident that the weak points of the assessed processes can be found and that the most valuable changes are introduced(Helgessonn& Weyns, Unknown), and the structure of the TMM is partly based on the CMM and the staged version of the Capability Maturity Model-Integrated (CMMi), and The TMM consists of 5 maturity levels that reflect a degree of test process maturity(Veenendaal,2006), as represented in Figure 15. Setting sensible goals for process improvement requires an understanding of the difference 82 between immature and mature software organizations and In an immature software organization, software processes are generally improvised by practitioners and their management during the course of the project, even if a software process has been specified, it is not rigorously followed or enforced furthermore, the immature software organization is reactionary, and managers are usually focused on solving immediate crises (better known as fire fighting)(Paulk & Curtis & Chrissis & Weber, Uknown), and this is the finding that has been done by the study on Company M. Figure 19: TMM levels(Veenendaal,2006) 83 It is recommended that Company M, work towards aligning to TMM for effective and efficient test process and comprehensive test coverage for all aspects of functionality. 4.8 Summary and conclusion The study "The Theory of Software Testing" conducted by (Lawanna, 2012), pointed out Five problems found in software testing, which are as follows,the first problem is concerned with the limitations of the testing team, where insufficiency may be the result of limited resources, lack of training of the individual team members, or issues with the leadership, and Also, suitable testing means may not be available to the team, furthermore the second problem is failure of the test maintenance and this is because the specification changes of the requirements result in abnormally long reverse times and the third problem is with manual testing, where the software testing team is busy making manual testing instead of building new test specifications, or modifying old ones to fit a new or changed requirement, and the forth problem is about the uncertainty principle where sometimes the uncertainty is in the exact testing conditions as well as how to view the condition for replication, and finally the fifth problem is in selecting the right tests in which software testing cannot address some of the essential aspects of the software testing application or system when testing only some part of the required functions or choosing only the expected interactions when executing a fault-tolerant application. This problems are not unique to the study, and they are directly linked and associated with the problems identified in the problem analysis of this study. 84 Bibliography http://srmo.sagepub.com/view/sage-encyc-qualitative-research-methods/n164.xml http://www.testingexcellence.com/fundamental-test-process-software-testing/ http://istqbexamcertification.com/what-is-fundamental-test-process-in-software-testing/ http://mrbool.com/software-testing-fundamental-test-process/30289 http://www.sagepub.com/sites/default/files/upm-binaries/41407_1.pdf https://mthoyibi.files.wordpress.com/2011/05/qualitative-research-methods-for-the-social-sciences__brucel-berg-2001.pdf https://student.unsw.edu.au/writing-case-study http://study.com/academy/lesson/purposes-of-research-exploratory-descriptive-explanatory.html http://www.nus.edu.sg/celc/research/books/cwtuc/chapter04.pdf http://research.apc.org/images/5/5f/De_Vaus_chapters_1_and_2.pdf http://uxmag.com/articles/quantitative-research-and-eye-tracking http://isites.harvard.edu/icb/icb.do?keyword=qualitative&pageid=icb.page340344 http://srmo.sagepub.com/view/encyc-of-case-study-research/n138.xml http://www.infotech.monash.edu.au/research/groups/rcrg/publications/framewrk.html http://0-delivery.acm.org.oasis.unisa.ac.za/ https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf http://dl.acm.org/citation.cfm?id=2591172 http://lup.lub.lu.se/luur/download?func=downloadFile&recordOId=1276781&fileOId=1276782 https://www.ischool.utexas.edu/~ssoy/usesusers/l391d1b.htm http://dl.acm.org/citation.cfm?id=2729973 http://dl.acm.org/citation.cfm?id=1457528&dl=ACM&coll=DL&CFID=706807202&CFTOKEN=37033684 http://dl.acm.org/citation.cfm?id=1134292 http://www.wsj.com/articles/trading-halted-on-new-york-stock-exchange-1436372190 http://www.cs.toronto.edu/~sme/papers/2004/CaseStudiesTutorial2004.pdf http://srmo.sagepub.com/view/encyc-of-case-study-research/n138.xml https://www.uio.no/studier/emner/matnat/ifi/INF5500/h07/undervisningsmateriale/ISJ_case_study.pdf 85 http://www.managementissues.com/index.php/organisatietools/83-organisatietools/693-case-studyresearch-design-and-methods http://www.testyantra.com/cloud-testing http://www.satisfice.com/articles/what_is_et.shtml https://researchrundowns.wordpress.com/intro/writing-research-questions/ http://dx.doi.org/10.1080/09518390902736512 https://uk.sagepub.com/sites/default/files/upm-binaries/47619_Sullivan.pdf http://www.stibamalang.com/uploadbank/pustaka/RM/QUALITATIVE%20METHOD%20SAGE%20ENCY.pd f http://srmo.sagepub.com/view/sage-encyc-qualitative-research-methods/n397.xml https://developer.salesforce.com/page/How_to_Write_Good_Unit_Tests http://www.infoq.com/articles/development-manager-role http://www.hskl.de/~amueller/vorlesungen/se/breaking%20down%20software%20development%20roles.pd f http://www.developer.com/java/ent/article.php/3529081/Anatomy-of-a-Software-Development-RoleDevelopment-Manager.htm http://agile.csc.ncsu.edu/SEMaterials/BlackBox.pdf http://www.researchgate.net/publication/256094322_Software_Testing_Education__A_Required_Knowledg e_for_Software_Systems_Developers_and_Managers http://people.clarkson.edu/~dowem/downloads/Emerging-Role-Test-PID1021060.pdf http://www-ivs.cs.ovgu.de/sw-eng/agruppe/forschung/TR_Farooq.pdf http://scienceandnature.org/IJEMS-Vol3(4)-Oct2012/IJEMS_V3(4)16.pdf http://cprenet.com/uploads/archive/IJBBS_12-1155.pdf http://paris.utdallas.edu/ccli/papers/CSEET-2011-testing-panel.pdf http://people.clarkson.edu/~dowem/downloads/Emerging-Role-Test-PID1021060.pdf http://www.journal.au.edu/au_techno/2012/jul2012/journal161_article05.pdf http://www.sei.cmu.edu/productlines/frame_report/on_testing.htm http://www.sei.cmu.edu/productlines/frame_report/on_testing.htm http://www.computerworld.com/article/2566270/enterprise-applications/automating-the-40-monkeys.html http://www.ibm.com/developerworks/library/os-test-stafstax/ 86 http://www.mactech.com/articles/mactech/Vol.13/13.10/SoftwareTestAutomation/index.html http://www.arpnjournals.com/jeas/research_papers/rp_2015/jeas_0415_1779.pdf http://arxiv.org/ftp/arxiv/papers/1401/1401.5830.pdf http://www.test-direct.com/blog/2014/03/the-challenges-of-user-acceptance-testing-uat http://hilifehub.com/category/articles/ http://www.astqb.org/certified-tester-resources/professionalism-in-user-acceptance-testing/ http://research.ijcaonline.org/volume120/number10/pxc3903533.pdf http://fileadmin.cs.lth.se/cs/Personal/Kim_Weyns/phd/sysrev.pdf http://www.erikvanveenendaal.nl/NL/files/Guidelines%20for%20Testing%20Maturity.pdf http://www.tmmi.org/pdf/TMMi.Framework.pdf http://homepages.inf.ed.ac.uk/dts/pm/Papers/cmm.pdf 87