Skip to main content
main-content

Über dieses Buch

This book is focused on the advancements in the field of software testing and the innovative practices that the industry is adopting. Considering the widely varied nature of software testing, the book addresses contemporary aspects that are important for both academia and industry. There are dedicated chapters on seamless high-efficiency frameworks, automation on regression testing, software by search, and system evolution management. There are a host of mathematical models that are promising for software quality improvement by model-based testing. There are three chapters addressing this concern. Students and researchers in particular will find these chapters useful for their mathematical strength and rigor. Other topics covered include uncertainty in testing, software security testing, testing as a service, test technical debt (or test debt), disruption caused by digital advancement (social media, cloud computing, mobile application and data analytics), and challenges and benefits of outsourcing.
The book will be of interest to students, researchers as well as professionals in the software industry.

Inhaltsverzeichnis

Frontmatter

Understanding Test Debt

Technical debt occurs when teams knowingly or unknowingly make technical decisions in return for short-term gain(s) in their projects. The test dimension of technical debt is known as test technical debt (or test debt). Test debt is an emerging topic and has received considerable interest from software industry in the last few years. This chapter provides an overview of test debt, factors that contribute to test debt, and strategies for repaying test debt. The chapter also discusses how to identify “test smells” and refactor them for repaying technical debt in industrial projects using numerous examples and case studies. This chapter would be of considerable value to managers and leads working in IT companies as well as researchers working in the area of test debt.
Ganesh Samarthyam, Mahesh Muralidharan, Raghu Kalyan Anna

Agile Testing

In recent times, software development has to be flexible and dynamic due to ever-changing customer needs and high competitive pressure. This competitive pressure increases the importance of Agile methods in software development and testing practices. Traditional testing methods treat development and testing as a two-team two-step process. The process discovers bugs in software at later stage of development. Further, the process frequently leads to an internal division between teams. Agile testing combines test and development teams around the principles of collaboration, transparency, flexibility, and retrospection. This testing enables the organization to be nimble about uncertain priorities and requirements. It helps to achieve higher quality in software products. This chapter with a brief introduction on Agile-based software engineering deals with Agile-based testing. Agile testing focuses on test-first approaches, continuous integration (CI), and build–test–release engineering practices. The chapter also explains advantages and disadvantages of Agile testing practices. The process is explained with an example.
Janakirama Raju Penmetsa

Security Testing

Security issues in application domain are often easily exploited by attackers. In today’s scenario, the number of vulnerabilities is enormously increasing leading to serious security threats in future. Security threats may arise due to distributed and heterogeneous nature of applications, their multilingual and multimedia features, interactive and responsive behavior, ever evolving third-party products and the rapidly changing versions. Recent report reveals the fact that security threats surrounding the financial applications have increased dramatically and they continue to evolve. Hence, it is imperative to make the software applications more secure and reliable. Security testing is an effort to reveal those vulnerabilities, which may violate state integrity, input validity and logic correctness along with the angle of attack vectors that exploit these vulnerabilities. Further, security testing minimizes risk of security breach and ensures confidentiality, integrity and availability of customer transactions. This chapter illustrates significance and relevance of security testing in present context. It will help students, researchers, industry practitioners and security experts. Further, it will give some of the possible directions of research in the area.
Faisal Anwer, Mohd. Nazir, Khurram Mustafa

Uncertainty in Software Testing

The primary objective of software development is to deliver high quality product at low cost. Testing is inherent in each phase of development as the deliverables of each phase is to be tested to produce a better quality artifact before proceeding to the next phase of development. Software testing describes the discrepancies between the software deliverables and the customer expectations. Software testing life cycle covers test selection, test classification, test execution, and quality estimation. The quality of the deliverable produced may not always be as per the expected outcome or within a probabilistic range. The outcome of testing may be error prone and uncertain because of inadequate techniques for estimation, selection, classification, and execution of test cases. Hence, there is a requirement to model uncertainties after completion of each phase of development. Mechanisms are needed to address uncertainty in each of the deliverables produced during software development process. The uncertainty metrics can help in assessing the degree of uncertainty. Effective modeling techniques for uncertainty are needed at each phase of development.
Salman Abdul Moiz

Separation Logic to Meliorate Software Testing and Validation

The ideal goal of any program logic is to develop logically correct programs without the need for predominant debugging. Separation logic is considered to be an effective program logic for proving programs that involve pointers. Reasoning with pointers becomes difficult especially due to the way they interfere with the modular style of program development. For instance, often there is aliasing arising due to several pointers to a given cell location. In such situations, any alteration to that cell in one of the program modules may affect the values of many syntactically unrelated expressions in other modules. In this chapter, we try to explore these difficulties through some simple examples and introduce the notion of separating conjunction as a tool to deal with it. We introduce separation logic as an extension of Hoare Logic using a programming language that has four pointer-manipulating commands. These commands perform the usual heap operations such as lookup, update, allocation and de-allocation. The new set of assertions and axioms of separation logic are presented in a semi-formal style. Examples are given to illustrate unique features of the new assertions and axioms. Finally, the chapter concludes with proofs of some real programs using the axioms of separation logic.
Abhishek Kr. Singh, Raja Natarajan

mDSM: A Transformative Approach to Enterprise Software Systems Evolution

The engineering of enterprise software systems suffers from an inherent lack of creativity and innovation and is often left to user-centric incremental changes that are not often disruptive enough for business needs. A design-driven approach to systems creates opportunities for transformative evolution of such systems that are both immediate and futuristic in their impact. Software systems stability can be maintained and monitored during evolution utilizing architectural-level, program-level, and information-level stability metrics. Despite increasing complexities involved in the design, development, and testing of such large-scale software systems, they are often predicated by simple techniques for decomposition, generalization, and specification. However, as always they are much more difficult to merge back together in order to rationalize the entire architecture for the levels of confidence necessary during testing, deployment, and commissioning of these systems. mDSM, an extension to Design Structure Matrix (DSM) approach to software systems design and testing, is a methodology developed by the authors to address design-driven rationalization of such complex software system architectures.
David Threm, Liguo Yu, S. D. Sudarsan, Srini Ramaswamy

Testing as a Service

Testing as a Service (TaaS) [1] is gaining acceptance in software engineering industry for it finds outsourcing of testing a viable option for both, adhering to software production timeline and making testing cost-effective while not making compromise in product quality. In consequence, few companies have started offering tools automating TaaS process. This chapter highlights on this upcoming concept and presents a generic model explaining the steps involved in TaaS. It also explains use of cloud technology for TaaS implementation. This aims at effective utilization of resources while delivering a testing service. In addition, a pricing model for test outsourcing is proposed.
Pankhuri Mishra, Neeraj Tripathi
Weitere Informationen

Premium Partner

BranchenIndex Online

Die B2B-Firmensuche für Industrie und Wirtschaft: Kostenfrei in Firmenprofilen nach Lieferanten, Herstellern, Dienstleistern und Händlern recherchieren.

Whitepaper

- ANZEIGE -

Best Practices für die Mitarbeiter-Partizipation in der Produktentwicklung

Unternehmen haben das Innovationspotenzial der eigenen Mitarbeiter auch außerhalb der F&E-Abteilung erkannt. Viele Initiativen zur Partizipation scheitern in der Praxis jedoch häufig. Lesen Sie hier  - basierend auf einer qualitativ-explorativen Expertenstudie - mehr über die wesentlichen Problemfelder der mitarbeiterzentrierten Produktentwicklung und profitieren Sie von konkreten Handlungsempfehlungen aus der Praxis.
Jetzt gratis downloaden!

Bildnachweise