Upload
phungnga
View
213
Download
0
Embed Size (px)
Citation preview
About Your Seminar Host – Anna Lucovsky
• QA Manager with 20 years of experience in building of successful and
methodological QA teams and management of automatic and manual testing
in diverse fields of software industry.
• I specialize in – Building of QA teams from scratch
– Automatic testing (C# CodedUI, QTP, TestComplete)
– Implementation of testing methodologies and test management tools
– Improvement of QA processes
– Management of large QA teams
• I am also the Asia Champion and World Silver Medalist in Software Testing
World Cup 2016
• LinkedIn: https://www.linkedin.com/in/anna-lucovsky-3b94084/
First Things First: Assess Your Testing Project
What kind of project is this:
• Long/Short Term? What is the project scope?
• What condition is the product currently in?
• What technologies /environments are involved, is the team at ease
with them?
• What resources does the team have: testers / tools / time / existing
tests / automation ?
• Do you directly manage the testers? Is a team distributed?
• What are your interfaces – developers, system analysts, customers,
DevOps
• What is the development model: Waterfall / Agile / FDD, any mix of
those?
Test Basis – The Basis of Your Assessment
• ‘Test Basis’ - all project documents that could serve as the basis for
test design:
– system design document
– user requirements
– change requests
– user presentations
– ERD document
– infrastructure diagram
– release documents
Take into consideration that these documents are subject to change, so test cases
would need to be adjusted subsequently
• Interviews with system analysts / developers / customers / users
• Studying the system via free usage / exploratory testing
Last But Not Least - Your Test Project Stakeholders
• Who are your stakeholders – your boss / another team / customers / your own
team ?
• What is the scope of your influence – what can you realistically change,
• who listens to you, specifically the stakeholders?
QA Team – Your main resource• Is this project:
– Just more of the same
– Something different
• Do the team skills match the project requirements?
– Junior / Experienced team
– Test design abilities
– Quality of test execution
– Automation / NFT
– Is the team mix correct?
• Is the team motivated?
• Is any change management required?
– Team skillset
– Team members
– Working processes / tools
Assess Your Product Quality Quickly – Use Case
• Quick assessment is useful when you are
– Starting with an existing company product that is new for you
– Starting a new job
– Participating in a testing contest
• Let’s say you have assessed your project, but you still have to
understand the SUT current condition because you need to know your
starting point:
– Use a mind map Small: Large:
– Spend 2-3 days of exploratory testing going over all major aspects of the product
– Prepare a result map / table marking each aspect quality status
– Convey the information to the stakeholders in a visual way
– this might get you some buy-in in case the results speak
– for themselves and it’s your job to make them to do so
Building the Testing Tree
• It is highly recommended to use a test management tool that allows
building testing trees for convenient execution
• Trees can be build with
– division according to functionality sections in the system design document
– division according to the system screens
– division according to the requirements tree and change requests
– division according to versions and features comprising each version
• Do not forget to add to the tree:
– Non-functional tests
– Sanity tests
– Regression tests
• So now you have a good test suite (of 10000 test cases), but what about
the test execution?
• The answer is => Risk Management
Risk Management – What problems does it address?
• What problems does risk management address?
– Careless tester’s problem – you have all your tests, you start
testing and stop once the release date is reached => important
tests might not be executed
– Thorough tester’s problem – you introduce a test management tool,
design tests with decent coverage, add tests for every new version
and then don’t have enough time to finish executing them, since
your team does not grow exponentially. The management expect
the tests to take X time per version (the less the better), but your
tests amount only increases over time.
Risk and Its Components
• RISK => The possibility that something unpleasant will happen• Our life is full of risks and we manage them every day, starting with choosing a Waze route in the
morning and ending with going to the gym late in the evening
• Risk Components:
Probability (low-high) – how probable it is that the failure will occur - at every customer site, at
50% of the customer sites, at 2% of the sites.
vs
Impact (low-high) – functionality impaired, money loss, e.g. customers leave or stop paying
maintenance, employees need to be sent onsite, reputation damages, costs of fixes. Specific
product market is of importance here, consider a credit line financial software vs WhatsApp
• Good enough software is built on risk management assumptions and it has
– enough benefits
– no critical problems
– more benefits than problems
– And improving it will cause more harm than good
Risk Management – Benefits
• Risk management is the key to getting budget, time and resources (remember the stakeholders!)
– There is never enough time for all the tests
– We need a quality product, on schedule, within budget with a given staff
– When risks are clear to the stakeholders, they will more likely support the
team advocating for quality
• With risk management the responsibility is shared
– If testers are defined as gatekeepers of quality, they take on the
responsibility of external risks. Testers are like a thermometer => they give
information about what was tested, what risks were addressed and what
risks are still there without “feelings”- based evaluations of the SUT
forehead
– After all, it is the management that is to make the decision of Go/No Go
Tips for Risk-Based Test Project Management• There must be the ‘Risk Classification’ section in your STP
• Risk categories: Contractual, Functional, Technical, Technological, Customer Hardware, Customer
Software, Human Resources, Third Party
• Risks table would include Risk Description | Consequences | Mitigation plan (preventive actions)
• Risk description- What could go wrong, generate problems, be expensive from the
shareholders’ point of view:
– “QA do not have time to test” vs “Implementation failure with a critical customer if X is not tested”
– “We have run 800 tests, 200 still not run” vs “Registration and booking are ok, messaging not yet
tested, 20% of issues found in calling” – maybe messaging is the critical one for the customer?
• STP has to be signed upon before the tests start => responsibility division and
delegation
• STR should refer to the same sections and be prepared BEFORE the last test cycle
– Post-mortems don’t help this release, maybe the next one.
– The management has to make a fact-based decision with risks clear and have time to fix whatever
needs to be fixed before the release date.
– Alternatively, delay the release, but not in the last minute. If the current release doesn’t have enough
benefits and its problems are too serious, testing and fixing should continue.
Tips for Risk-Based Test Execution
• Report bugs on specs – risks are born there
• Look for modules impacted between the latest versions
• The more developers needed to fix a specific issue – the more risky it is
• Evaluate severity, priority, module and amount of issues previously found when choosing
your test suite
• Analyze bugs reported by the customers and concentrate your efforts there
Tools Usage Tips
– Use test priorities for every test scenario in regression tests. After each release adjust those priorities.
– Change module/component once the issue is fixed to follow up on the real problematic area afterwards
– Tests for new features = critical priority. BUT no risk – no test, an effective test case has to do with high
risk
– Use priorities for requirements. Cover the requirements with tests in the test management tool. Use the
requirements priorities as guidelines to choosing your tests suite.
– Define priorities to be run for every type of release (major / minor / update)
Exploratory Adventure – Risky or Not?• At times it is tempting to default to exploratory testing
– When there is no time for test design
– When the test basis is problematic
– When there is no time for junior testers training
– When there is no time in general
• Disadvantages:
– Renting vs Buying – you invest your resource, but are left with no asset in the long-run
– Important areas may be overlooked as testing is ad-hoc
• Exploratory testing is an art and should be used with caution by experienced testers who know
the system under test very well. Still, change favors the prepared mind.
• Exploratory tests should not replace existing tests covering the risky areas, but be performed
in addition to those or used for quickly assessing the product quality
• Exploratory testing is also used upon SUT with unstable and changing functionality
• In order to minimize the disadvantages, it is important to roughly document steps that were
performed
• Scenarios that expose problems in the SUT are to be added to the existing test suite even at
the expense of similar cases that have not found problems over time
It was decided to automate our manual tests…Before you write a single code line, consider several factors:
• There are more failed automation projects than the successful ones
due to many reasons:
– Using record-and-play
– GUI Automation is slow
– Automation is unstable
– Automation has low ROI
– Automation is often non-scalable and hard to maintain due to architecture problems
• What are the stakeholders expectations:
– Reducing the manual QA staff
– Using automation as a part of continuous integration flow
– Eliminating human mistakes
– Creating incentive for the team
– Automating the repetitive and boring parts in order to employ the QA staff in more
creative areas
If the decision to automate is for the right reason…
• Evaluate your scope:
– GUI Tests / Non-GUI tests (API)
– Quality of the existing test cases – they have to be detailed
• Evaluate your team for programming skills:
– Design and architecture vs Using building blocks
– OOP knowledge
– Knowledge of your SUT programming language
• Evaluate your SUT
– Technology
– Existing tools supporting this technology (GUI, API)
– Availability of the SUT code for your possible needs
• All of the above are important factors for choosing the
automation tool (along with its price, of course )
Critical Part - Choosing the RIGHT tests to automate
• Even if a test is boring and repetitive, it does not mean it
has to be automated right away, it also has to be relatively
easy to automate and show some payoff immediately (for
the stakeholders!)
• Tests that are executed the most are the immediate
candidates in case they are not too technically tricky for
automation
• API tests are excellent candidates once their interfaces are
finalized
• Usually the order to start with would be as follows:
– API tests
– Smoke tests
– Critical sanity tests