Thursday, November 5, 2015

Quick Overview of Basic Testing Concepts

SDLC - Software Development Life Cycle
       The systems development life cycle (SDLC), also referred to as the application development life-cycle, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system.




Project planning, feasibility study >>> Systems analysis, requirements definition >>> Systems Design (High Level and Low Level) >>> Implementation >>> Integration and System Testing >>> Acceptance installation, deployment >>> Release (Production) and Maintenance

Common Problems in Software Development

  • Poor Requirments
  • Unrealistic schedule
  • Inadequate testing
  • Requirements change
  • Miscommunication
  • Poorly documented code 


Solutions

  • Solid requirements
  • Realistic schedules
  • Adequate testing
  • Communication
Software Testing....?
  • It is the process used to measure the quality of developed computer software
Quality is constrained to such topics as
  • Correctness and completeness
  • Security
  • Capability
  • Reliability
  • Efficiency
  • Portability
  • Maintainability
  • Compatibility and usability
Verification and Validation
  • Verification & Validation of software development process is also called software testing
    • Verification - Are we building the project right..?
    • Validation - Are we building the right product..? 

Goals of Testing
  • Software meets its requirements
  • Evaluating the results under controlled conditions
  • To find as many defects as possible before the customer finds 

STLC - Software Testing Life Cycle


Software Testing  Techniques

White Box Testing
  • Testing is based on internal logic of an applications code/
  • Tests are based on coverage of code statements, branches, paths, conditions
Black Box Testing
  • Tests are based on requirements and functionality
Manual Testing
  • Testing manually without using any third party tools
Automation Testing
  • Testing the application using any third party tools
  • The art of converting manual test cases to machine executable code
Manual and Automation Testing Types

Functional Testing, Performance Testing, GUI(Graphical User Interface) Testing, Security Testing

Functional Testing
  • Testing developed application against Business and Functional requirements
  • Functional testing covers
    • Unit testing
    • Sanity testing
    • Integration testing
    • System testing
    • Regression testing
    • User Acceptance testing
Performance Testing
  • Types of Performance Testing
    • Load testing
      • Load tests are end to end performance tests under anticipated production load
    • Stress Testing
      • Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements
    • Volume testing
      • Testing where the system is subjected to large volumes of data
GUI (Graphical User Interface) Testing
Testing developed application against GUI requirements
  • User friendliness of the screens
  • Interface of the screens
  • Manuals and help
Security Testing
Testing process to determine that an IS(Information Systems) protects data and maintains functionality as intended

The basic security concepts that need to be covered by security testing are
  • Confidentiality
  • Authentication
  • Authorization
  • Availablity

Different Types of Testing.....
  • Sanity Testing or Build verification Testing BVT
    • Testing to assure that the system or methodology works as expected
  • Ad hoc Testing
    • Testing application with functional knowledge and with out any test case execution

Different Types of Testing....
  • Compatibility Testing
    • Testing to ensure compatibility of an application or web site with different browsers, OS's, and hardware platforms 
  • Negative Testing
    • Testing aimed at showing software doesnot work. Discovery of faults that result in significant failures; crashes, corruption and security breaches
  • Competitive Analysis testing
    • Usaability, functionality or a performance evaluation whereby two or more competitive products are compared in an environment where products are going to be used.
      • Eg: IE Vs Netscape, Oracle DB Vs SQL Server Vs DB2)
Phases in Software Testing....
  • Unit testing
    • Testing to validate that individual units of source code are working properly
    • nUnit is used for unit testing
  • Integration testing
    • Testing of combined individual modules as a group
    • It follows unit testing and precedes system testing
  • System testing
    • Testing conducted on a complete, integrated system
    • It's require no knowledge of the inner design of the code or logic.

Phases in Software Testing....
  • Regression testing
    • Testing changes to ensure that the older programming skill works with the new changes.
  • User Acceptance testing
    • Testing done to ensure new software is functionality  ' fit for purpose'.
    • Final stages of a project and often occurs before a client accepts the system
  • Alpha testing
    • Actual operational testing by potential users/customers or an independent test team.
  • Beta testing
    • Testing by selected customers or open public before product release

Test Plan....
  • The test plan is intended as a baseline to identify what is deemed in and out of scope for testing and what the risks and assumptions are
  • Document describing the systematic approach of testing
  • Gives understanding of the eventual workflow and upcoming testing effort
  • Test Plan consists as.....
    • Scope of testing
    • Schedule
    • Approach
    • Test items 
      • Features to be tested
      • Features not to be tested
    • Environment Needs
    • Staffing and Resposibilities
    • Risks and Contingencies
    • Suspension Criteria and Resumtion Requirements
    • Release Criteria
    • Test Deliverables

Defect...
  • A Computer bug is an error, flaw, mistake, failure or fault in a computer program
  • Defects prevents software from working correctly or produces incorrect result




Friday, October 2, 2015

Agile Testing Quadrants, Tester Tasks and Key Success factors for Agile testing

Tester Tasks:

  • Be Proactive
    • Benifits
    • Do You Really Need this
    • Potential Downsides to advanced Preparations
  • Advance Clarity
    • Customers speak with one voice
    • Story size
    • Geographically Dispersed Customers and teams
  • Examples
  • Test Strategies
  • Prioritize Defects
  • Resources

Key Success Factors:
  • Use the Whole-Team Approach
  • Adopt an agile testing mind-set
  • Automate Regression testing
  • Provide and Obtain Feedback
  • Build a foundation of core practices
  • Collaborate with customers
  • Look at the big picture

Agile Testing Quadrants:



The quadrant numbering system does NOT imply any order. You don’t work through the quadrants from 1 to 4, in a waterfall style. It’s just an arbitrary numbering so that, in our book and when we are talking about the quadrants, we can say “Q1” instead of “technology-facing tests that support the team”. 

Most projects would start with Q2 tests, because those are where you get the examples that turn into specifications and tests that drive coding, along with prototypes and the like. However, I have worked on projects where we started out with performance testing (which is in Q4) on a spike of the architecture, because that was the most important criterion for the feature. If your customers are uncertain about their requirements, you might even do a spike and start with exploratory testing (Q3).

Q3 and Q4 testing pretty much require that some code be written and deployable, but most teams iterate through the quadrants rapidly, working in small increments. Write a test for some small chunk of a feature, write the code, once the test is passing, perhaps automate more tests for it, do exploratory testing on it, do security or load testing on it, whatever, then add the next small chunk and go through the whole process again.

The quadrants are merely a taxonomy to help teams plan their testing and make sure they have all the resources they need to accomplish it. There are no hard and fast rules about what goes in what quadrant. Think through them as you do your release, theme, and iteration planning, so your whole team starts out by thinking about testing first.

Source: "Agile Testing" Book by Lisa and Janet



Cultural Challenges, Team Logistics, Iteration Kick-Off of Agile testing


Cultural Challenges:

  • Organizational Culture
    • Quality Philosophy
    • Sustainable Pace
    • Customer Relationships
    • Organization Size
    • Empower your team
  • Barriers to Success
    • Loss of identity
    • Additional Roles
    • Lack of training
    • Not understanding agile concepts
    • Past experiences
    • Cultural Differences among roles
  • Introducing Change
    • Talk about fears
    • Give team ownership
    • Celebrate success
  • Management Expectations
    • Cultural shange for managers
    • Speaking the managers language
  • Change Doesn't come easy
    • Be patient
    • Let them feel the pain
    • Build your creditability
    • Professional Development
    • Beware the Quality Policy Mentality
    • Vote with your feet

Team Logistics:
  • Team Structure
    • Independent QA Team
    • Integrating Testers into Agile Projects
    • Agile Project Teams
  • Physical Logistics
  • Resources
    • Tester-Developer ratio
    • Hiring an agile tester
  • Building a Team
    • Self-organizing Team
    • Involving Other team
    • Every team member has equal value
    • Performance and Rewards
    • What you can do

Iteration Kick-Off:

  • Iteration Planning
    • Learning the Details
    • Considering all viewpoints
    • Writing task cards
    • Deciding on workload
  • Testable Stories
  • Collaborate With Customers
  • High Level Tests and Examples
    • Review with Customers
    • Review with Programmers
    • Test Cases as Documentation

Definition, Mind-Set and Principles For Agile Testers

Agile Tester:
          A Professional tester who embraces change, collaborates well with both technical and business people, understands the concept of using tests to document requirements and drive development.

          Agile testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow.

          Agile testers tend to have good technical skills, know how to collaborate with others to automate tests and are also experienced exporatory testers.

Mind-Set:
          Agile is team continously focues on doing its best work and delivering the best possible product.
          In my experience this involves a ton of discipline, learning, time, experimentation and working together.
          Agile tester doesn't see her/him-self as a quality police officer, protecting her customers from inadequate code. S/he's ready to gather and share the information to work with the customer, product owner in order to help them express their requirements adequately. So, that they can get features they needed and to provide feedback on project status to everyone.

          Bottom line, Agile testers like their agile team-mates enjoy learning new skils and taking on new challenges and they dont limit themselves to solving only testing issues.

Testers might have special expertise and experience in testing, but a good agile tester isn’t afraid to jump into a design discussion with suggestions that will help testability or create a more elegant solution. Agile testing mind-set is one that is result-oriented, craftsman-like, collaborative, eager to learn and passionate about delivering business value in a timely manner.

Agile Testing Mind-Set Component:

    • Creativity
    • Openness to ideas
    • Willingness to take on any tests/role
    • Focus on customer
    • Constant view of the big picture.

Major Agile Principles:
          Agile testing principles are,
    • Provide Continous Feedback
    • Deliver value to the customer
    • Enable face-to-face communication
    • Have courage
    • Keep it simple
    • Practice continous improvement
    • Respond to change
    • Self-organize
    • Focus on people
    • Enjoy              

Source: https://dzone.com/articles/agile-testing-principles.




Overview of Agile Testing, Roles and Activities of Agile Team



An Overview of Agile Testing:
  • Agile testers work to ensure that their team delivers the quality their customer need.
  • Each agile team member is focused on delivering a high-quality product that provides business value
  • If you want to know how agile values, principles and practices applied to testing can help you, as a tester, do your best work and help your team deliver more business value
  • Working harder and longer doesn't help when your task is impossible to achieve. Agile development acknowledges the reality that we only have so many good productive hours in a day or week.
  • Agile development encourages us to solve our problems as a team (Business people, testers, programmers, analysts) - everyone involved in software development, decides together how best to improve their product.


Roles and Activites of Agile Team:

    Customer Team:
             Customer team includes Business Experts, Product Owner, Domain Experts, Product Managers, Business Analyst, Subject Matter Expert, Testers,. etc.. Everyone on the business side of a project. 

    Developer Team:
             Everyone involved with delivering code is a developer and is part of a developer team. Programmers, System Administrators, Architects, Database Administrators, Techinical writers, Security Specialities, Testers,. etc.
 
Whole - Team Approach:
             The whole-team approach, also called the team-based approach, is a style of project management in which everyone on the project team is held equally responsible for the quality and success of the project.
             A whole team approach recognizes that in order for the team to be successful, members cannot operate in isolation. Each team member must know and appreciate every other team member's strengths and skills.  Each team member must also be willing to switch roles when the need arises and remained focused on the success of the project, doing whatever is necessary whether or not it's technically "their job."

Source: Searched on Internet

Manifesto Of Agile Development

For me Agile Means "Move Quickly and Easily"

We are un-covering better ways of developing software by doing it and helping others to do it.

Through this workwe have come to value:

                   1: Individuals and Interactions over processes and tools
                   2: Working Software over comprehensive documentation
                   3: Customer collaboration over contract negotiation
                   4: Responding to change over following a plan

That is, While there is value in the items on the right, we value the items on the left more.



Source: "www.agilemanifesto.org"