24
QA/Test Engineering Perspectives Roopesh Kohad Email: [email protected] LinkedIn: http://in.linkedin.com/in/roopeshkohad Presented by

QA/Test Engineering Perspectives

Embed Size (px)

Citation preview

QA/Test Engineering Perspectives

Roopesh Kohad

Email: [email protected]

LinkedIn: http://in.linkedin.com/in/roopeshkohad

Presented by

AgendaQA in Traditional Software

DevelopmentModern Software DevelopmentTest Engineering perspective

◦Roles & Responsibility

QA in Traditional Software Development

QA only at the end of long development cycle

No effort to educate QA on product & quality criterion

Scripted tests, test design different than test execution

Mostly black-box testing or UI automation

Dogmatic, process-heavy, labor-intensive, and time-consuming

Pressure to meet deadline even after Development spill over

QA in Traditional Software Development

Not considered an engineering discipline

Not considered a stakeholder in the product

Seen more as cost/liability than an asset

Modern Software Development

Software development has become agile (“literally”)

Rapid development & deployment thanks to software moving to “Cloud”

Complex design/architecture(as against features)

Increased competition & Reduced Time to Market

Constantly changing scope (feedback loop)

Little or no documentation

Challenge for QA/Testing

How to keep up with overall software development and provide value?

Paradigm ShiftQuality is collective responsibilityTesting != QualityEveryone has to test not just QATesting isn’t a separate practice, it is

part of the developmentTesting should be an act of

prevention than detection

Test EngineeringTesting is an engineering discipline

focused on enhancing productivity of engineers

Engineering RolesDevelopment

◦DeveloperTesting

◦SET (Software Engineer in Test)◦TE (Test Engineer)

Why – Developer Productivity?

Quality would come through better code

Better code through emphasis on code quality

Better code through optimum utilization of time

Less time to test, integrate & less rework

How - Developer Productivity?

Test Frameworks for every type of tests

Easy to author & run testsQuick results, better CI turnaroundEncourages developers to write

better tests for their code

Why - Test Engineer Productivity

Free him to do Exploratory testing instead of running regression

Focus on risk & other quality criterion

Should not be caught with regression testing

How – Test Engineer Productivity

Functional / End-to-End test automation to take care of regressions

Quick deployment or environment setup

Tools to aid Exploratory tests & Analysis

Team ProductivityCollaboration tools & processesTools to provide consistent view of

state of the product across teamDocumentation

SET - ProfileEnabler of good testing for other

engineers – Developers and Test Engineers

Understands technical debt of the product

Creative & strive for continuous improvement

Jack of all trades / Wears multiple hats / all rounder

SET - ResponsibilityAnything to enhance developer/tester/team

productivityReview design and look closely at code quality

and riskReview test cases authored by other

engineersRefactor code to increase code quality and

testabilityWrite unit/integration/functional testing

frameworksIncrease test coverage by looking code

coverage

SET - ResponsibilityResponsible for Developer/Tester tool chain

◦ Build Tools◦ Continuous Integration/Testing/Deployment◦ Test Frameworks◦ LOB Tools◦ Custom tools

SET - SkillsSame as developer with someone

who is passionate to testWell-versed with diverse

technologies and make them work together

Test Engineer - ProfileUse the product on behalf of the

end customersBe a product experts and

understand the value proposition of the product

Understand the customer and be a customer advocate

Focus is on user impact and risk to the overall mission of the software product

Creative & power user of product

TE - SkillsSavvy with product domainImagination & CreativityCommunication

Exploratory TestingUnscripted but not aimless, more

like mind mappingNext test to execute is not obvious

and depends on the current stateUseful in complex situations when

little is known about the product

Crowd SourcingCan’t depend on TE(s) to find every

issueWhy is it important?

◦Heterogeneity◦Good sample of external world

Bug BashTools to make crowdsourcing simple

◦Surveys◦IM◦Forums

SummaryQuality of the product is collective

responsibilityDevelopers need to testTest Engineers own quality from

customer standpointTest Engineering enhance developer &

test engineer productivityStakeholders need to be onboard with

Test Engineering The thought-process is inline with Agile

spirit

Thank You!Further Reading – How Google Tests

softwareFeedback

[email protected]◦Roopesh.kohad (skype)