software quality in a modern development team...process quality “individuals and interactions....

35
Software Quality in a Modern Development Team Presented by Timothy Bauguess and Marty Lewis

Upload: others

Post on 16-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Software Quality in a Modern Development TeamPresented by Timothy Bauguess and Marty Lewis

Page 2: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

High-Quality SoftwareWho benefits?

• End users• Development• Stakeholders

Page 3: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Components of Software Quality

Functional quality• Specifications• Few defects• User experience

Structural quality• Efficiency• Maintainability• Scalability• Security• Testability

Page 4: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Process Quality

“Individuals and interactionsover processes and tools

Working softwareover comprehensive documentation

Customer collaborationover contract negotiation

Responding to changeover following a plan”

- The Agile Manifesto

Page 5: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Testing Practices• Continuous Integration

• Test the impact of your changes as they are committed

• Test-driven development

• Create the unit test before implementation

• Support tools

• Testing frameworks• Code review • Version control• Work tracking

Page 6: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Why do we test?

Page 7: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Iterate.Test.Deliver to end-users faster!

Page 8: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Benefits of Rapid Development Iterations

Page 9: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Test-Driven Development Paradigm

Write test

Write code for test

Run test

Optional refactoring

Run additional system tests

REPEAT UNTILPASSING

Page 10: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Test-Driven Development Paradigm• Benefits

• High code coverage• Short cycle, highly compatible with Agile methodologies• Test is your spec• Bite-size tasks, focus on one code unit at a time

• Considerations• Spend time up front for requirement validation

• But Minimize rework• New, may be met with resistance to change• Developer focused

Page 11: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Development Methods• Behavior-driven development

• Domain-specific language

Page 12: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Behavior-Driven Development

• Write tests using business readable

and domain-specific language

• Write code to satisfy the testing condition

• Refactor your code to standards.

Page 13: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Development Methods• Behavior-driven development

• Domain-specific language• Behavior-driven development

• Domain-specific language

• Feature-driven development

Page 14: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Feature-Driven Development• Create a platform

independent model

• Build a feature list• <action> <result> <object>

• Construct a schedule

• Design by feature

• Build by feature

Page 15: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Development Methods• Behavior-driven development

• Domain-specific language

• Feature-driven development

• Behavior-driven development• Domain-specific language

• Feature-driven development

• Lean development

Page 16: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Lean Development

• Eliminate waste / rework

• Amplify learning

• Decide as late as possible

• Deliver as quickly as possible

• Empower the team

• Build integrity

• See the whole

Page 17: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Development Methods• Behavior-driven development

• Domain-specific language

• Feature-driven development

• Lean development

• Behavior-driven development• Domain-specific language

• Feature-driven development

• Lean development

• Extreme programming

Page 18: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Extreme Programming• Coding / Iteration

• Listening

• Unit Tests / Acceptance Tests

• Small Releases

Page 19: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Agile Development Methods

• Behavior-driven development• Domain-specific language

• Feature-driven development

• Lean development

• Extreme programming

• Behavior-driven development• Domain-specific language

• Feature-driven development

• Lean development

• Extreme programming

• Scrum

Page 20: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Scrum• Sprints

• Continuous Integration

• User stories

• Meetings• Sprint Planning• Daily Stand Up• Sprint Review• Sprint Retrospective

Page 21: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

User Stories• Small, manageable work items

• As an admin, I want to approve image uploads, so I can make sure they are appropriate

• Intended user• What the user wants• Why the user wants it

• Acceptance Criteria

• Story points• Velocity

Page 22: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Testing Methodologies

White Box

BlackBox

Page 23: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Testing Methodologies

• Testing as a developer• Testing individual units• Design according to parameters• Data domains well tested• Used to test algorithms

White Box

Page 24: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Testing Methodologies

• Testing as a user• Internals are unknown• Based on output• Fully integrated• Does not test algorithms

BlackBox

Page 25: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Testing Methodologies

White Box

Grey Box

BlackBox

Page 26: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Unit Testing Overview• Tests individual units of code

• Typically white box testing

• Should be able to run in isolation from one another

• Aimed at covering all code paths

• Limited coverage of requirements

• Lowest resources required to maintain

Page 27: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Unit Test Platforms (.NET)• NUnit

• xUnit.net

• MSTest – ships with Visual Studio!1. File New Project2. Write test3. Execute test

Page 28: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Integration Testing Overview

• Tests integrated code units• Functional testing

• Typically black box testing

• Who should write integration tests?

• If UI testing is required, automate it!

Page 29: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Integration Testing Variants

• Smoke testing

• System testing• Testing completely integrated system• Functionality of system as a whole• Test cases and data are used

• Acceptance testing• Purely functional requirements• Ideally, final testing before deployment• Real production data• Can be performed by end users

Page 30: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Integration Test Platforms

• Selenium – web

• CodedUI – web, desktop

• Postman – web service / API

• TestComplete – web, desktop, mobile

• Appium – desktop, mobile

Page 31: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Regression Testing

• Can be unit or integration tests

• Prevent regression of user-impacting issues

• Verify new changes meet previous requirements

• Always run before deploying to users

Page 32: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Improving Our Process Quality

Page 33: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Improving Our Process Quality• Azure DevOps

Page 34: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Improving Our Process Quality• Test repeatability project

• Reliable, maintainable UI automation

• New tools• Agile methodology• VSCode / Visual Studio• Git Flow

Page 35: Software Quality in a Modern Development Team...Process Quality “Individuals and interactions. over processes and tools Working software. over comprehensive documentation Customer

Thanks!Who has the first question?