Skip to main content

2017 | Buch

Trends in Software Testing

herausgegeben von: Hrushikesha Mohanty, J. R. Mohanty, Arunkumar Balakrishnan

Verlag: Springer Singapore

insite
SUCHEN

Ü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
Abstract
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
Abstract
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
Abstract
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
Abstract
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
Abstract
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
Abstract
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
Abstract
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
Metadaten
Titel
Trends in Software Testing
herausgegeben von
Hrushikesha Mohanty
J. R. Mohanty
Arunkumar Balakrishnan
Copyright-Jahr
2017
Verlag
Springer Singapore
Electronic ISBN
978-981-10-1415-4
Print ISBN
978-981-10-1414-7
DOI
https://doi.org/10.1007/978-981-10-1415-4