1.

Record Nr.

UNINA9910506385303321

Autore

El-Morabea Khaled

Titolo

Modularizing legacy projects using TDD : test-driven development with XCTest for IOS / / Khaled El-Morabea, Hassaan El-Garem

Pubbl/distr/stampa

[Place of publication not identified] : , : Apress, , [2021]

©2021

ISBN

9781484274286

1-4842-7428-8

Descrizione fisica

1 online resource (343 pages)

Disciplina

005.14

Soggetti

Programari d'aplicació - Desenvolupament

Programari - Proves

Computer software - Testing

Application software - Development

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa

Livello bibliografico

Monografia

Note generali

Networking in Books.

Includes index.

Nota di contenuto

Intro -- Table of Contents -- About the Authors -- About the Technical Reviewer -- Acknowledgments -- Chapter 1: TDD Basics -- Types of Testing -- Trouble with Automated Testing -- TDD in a Nutshell -- Why Use TDD? -- External and Internal Quality -- When to Use TDD? -- When Not to Use TDD? -- Refactoring -- Modularization -- Test Structure -- Let's TDD -- Maximum Out of TDD -- Exercise -- Summary -- Chapter 2: Unit Tests -- Your First Test -- What Do We Want to Test? -- Creating a Unit Test Target -- Adding a Test Case Class -- Assert Methods -- Assert Method Types -- Truthfulness Asserts -- Equality Asserts -- Nullability Asserts -- Comparison Asserts -- Errors Asserts -- Expectations -- Expectation Types -- Test Ordering -- Randomized Ordering -- Code Coverage -- Exercise -- Summary -- Chapter 3: UI Tests -- Your First Test -- XCUITest Components -- Our Chapter Goal -- First Test Case -- Launching the App -- Querying the UI -- Relationships -- Interacting with the UI -- UI Events -- Assertions -- Value Assertion -- Accessibility -- Accessibility Tips -- Putting It All Together -- Improve UI Tests --



Exercise -- Summary -- Chapter 4: Testing Pyramid -- Our App -- UI Tests -- Integration Tests -- Unit Tests -- Summary -- Chapter 5: TDD Deep Dive -- CoffeePot -- Eye on the Big Picture -- Requirements -- Testing Pyramid -- First Story -- Architecture -- MVP -- First Integration Test -- Unit Tests -- CoffeeDrinksDataSource -- CoffeeDrinksModelTests -- CoffeeDrinksPresenterTests -- Test Health Check -- Second Story -- Architecture -- Exercise -- Summary -- Chapter 6: Modularization for the Win -- Why Bother with Modularization? -- What Is a Module? -- Modularizing Your App -- Introducing Books -- Modularization Process -- Initial Module Map -- Choose a Class as a Starting Point -- Identify the Class's Responsibilities -- Refactor Responsibilities.

Verification Tests -- Refactoring -- Integration Test -- NetworkLayer -- MainViewModel -- MainViewPresenter -- Last Touches -- Test Value -- Rerun Verification Tests -- Refactor the Rest of the Responsibilities -- Next Starting Point -- Exercise -- Summary -- Chapter 7: Dependency Injection and Mocks -- Stubbing -- Mocking -- Test Doubles Creation -- Creation Using Inheritance -- Creation Using Protocols -- Dependency Injection -- Initializer Injection -- Property Injection -- Stubbing the Network in UI Tests -- Summary -- Chapter 8: Avoiding Multithreading Nightmares -- What Is Concurrency? -- GCD -- Queues -- Serial vs. Concurrent -- Sync vs. Async -- Cost of Concurrency -- Reader-Writer Problem -- Singleton Classes -- Identifying a Race Condition -- Applying TDD to the Problem -- Thread Sanitizer -- Make It Pass -- Fixing Threading Issues in Books -- Applying TDD -- Summary -- Chapter 9: Testing Your Network -- Networking ABCs -- HTTP Requests -- HTTP Responses -- URL -- Networking in iOS -- URLSession -- URLSessionConfiguration -- URLRequest -- URLSessionTask -- Networking in Books -- Process Overview -- Modularization process -- Identify the Class's Responsibilities -- Design Overview -- NetworkLayer Tasks to Be Refactored -- NetworkLayer New Design -- Kickoff -- Verification Tests -- Make a Network Request -- RequestProtocol -- Execute Request -- Mocking URLSession -- Using URLSession -- Showcasing Test Value -- Handle a Failing Request -- Putting It All Together -- Exercise -- Summary -- Chapter 10: Taming Core Data -- The Core Data Stack -- Managed Object Model -- Persistent Store Coordinator -- Persistent Store -- Managed Object Context -- Persistent Container -- Core Data in Books -- Testing Stack -- CoreDataManager -- CoreDataStack -- Inject the Stack into CoreDataManager -- TestEntity -- Creation -- Introducing Storable.

Creation Implementation -- Saving Changes -- Fetching -- Updating -- Advanced Fetching -- Next Steps -- Putting It All Together -- Exercise -- Summary -- Chapter 11: Adding Features to a Legacy App -- Legacy Code Disclaimer -- A/B Testing -- New Feature -- Kickoff -- UI Tests -- Integration Tests -- Unit Tests and Actual Implementation -- BookViewModel -- BookViewPresenter -- Final Steps -- Summary -- Chapter 12: Handling Production Issues -- Our Tool -- Integration -- Production Bug -- Debugging -- UI Test -- Unit Tests -- Production Crash -- Debugging -- UI Test -- Handle A/B Testing -- Fixing Our Test -- Summary -- Index.

Sommario/riassunto

Improve current or new projects with top notch testability and maintainability. Writing tests improves the design of your apps, as it pushes you to have a more modularized design. This in turn improves the maintainability and sustainability of your apps. This book is for iOS developers who already know the basics of iOS and Swift development but want to learn all the testing pro features in iOS. You'll start by reviewing the TDD Cycle and how to implement these concepts on a



legacy project or a new one. You'll then walk through TDD step-by-step on a blank project, including setting up test targets, assertions, and expectations. You'll follow that with all levels of testing such as unit tests, integration tests, and end-to-end tests, and also tackle fairly complex, yet badly written legacy code. The book will take you through the journey of modularizing a legacy app using TDD. Throughout this journey, you will be introduced to multiple testing concepts and techniques, like writing tests for network and core data layers. You will write tests to ensure the thread safety of your app. And you'll add a new feature while you are in the middle of refactoring, which is an important skill so you can keep adding features while you are fixing your technical debt. By the end of this book, you will have all the tools needed to become a testing master. What You'll Learn Use mocking and dependency injection to make components more testable Write tests for asynchronous code like network code Add new features to existing legacy apps using TDD Who This Book Is For Experienced iOS developers who care about software quality and meeting customer expectations.

2.

Record Nr.

UNINA9910155008503321

Titolo

Evolutionary computation : techniques and applications / / edited by Ashish M. Gujarathi, PhD; B.V. Babu, PhD

Pubbl/distr/stampa

Oakville, Ontario ; ; Waretown, New Jersey : , : Apple Academic Press, , [2017]

©2017

ISBN

1-315-34216-2

1-315-36638-X

1-77188-337-5

Edizione

[1st ed.]

Descrizione fisica

1 online resource (652 pages) : illustrations, tables, graphs

Disciplina

006.3/823

005.1

Soggetti

Evolutionary computation

Systems engineering

Mathematical optimization

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa



Livello bibliografico

Monografia

Nota di bibliografia

Includes bibliographical references at the end of each chapters and index.

Nota di contenuto

part 1. Theory and applications in engineering systems -- part 2. Theory and applications of single objective optimization studies -- part 3. Theory and applications of single and multiobjective optimization studies.

3.

Record Nr.

UNINA9910957621003321

Autore

Antoniades Andreas

Titolo

Producing globalisation : politics of discourse and institutions in Greece and Ireland / / Andreas Antoniades

Pubbl/distr/stampa

Manchester, : Manchester University Press, 2009

ISBN

9781847797254

1847797253

9781781702888

1781702888

9781847792624

1847792626

Edizione

[1st ed.]

Descrizione fisica

1 online resource (209 p.)

Disciplina

337

337.01

Soggetti

Globalization

Greece Politics and government

Ireland Politics and government

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa

Livello bibliografico

Monografia

Note generali

Description based upon print version of record.

Nota di bibliografia

Includes bibliographical references and index.

Nota di contenuto

pt. I. Theory and agents -- pt. II. Institutional reproduction and social transformation : the hegemonic discourse of globalisation in action (1995-2001) -- pt. III. Conclusions.

Sommario/riassunto

How can we study globalisation in a way that transcends the material/ideational rift? How has globalisation resonated and/or dominated in different national contexts? What role has been played by



national political economies and domestic institutions in this process?*Producing globalisation* attempts to scrutinise the nature of the interplay between globalisation and national institutional settings. Rather than taking globalisation as a given, this book explores how concrete political actors produced the phenomenon of globalisation. Such an approach aims to bring human agency and its importance