Software Development Life Cycle (SDLC)
Software Requirement Analysis-Functional requirements
Software Project Planning-Resources planning, no. of people, duration, modules etc
Software Design-Design of data structures, Software architecture, Procedural details and Interface
External design (High Level Design)- Design of GUI etc
Internal design (Low Level Design)- Design of tables, data structures, code design
Software Coding- Design into a machine readable form
Software Testing-Finding an error and Debugging (removal of error)
Software Maintenance-Error Correction, Adapting system to new environments, adding new Enhanced features
Types of Software
System Software (Operating System)
Business Software (MIS)
Embedded Software (VxWorks)
Application Software (MS Word)
AI Software (LISP)
Phases of Software Development
Software Definition (Software Requirement Analysis and Software Project Planning)
Software Development (Software Design, Software Coding, Software Testing)
Software Maintenance (Correction, Adaptation, Enhancements)
Software testing
Execution of a program with the intent of finding an error.
Testing involves operation of a system or application under controlled conditions and evaluating the results. The controlled conditions should include both normal and abnormal conditions.
It is oriented to 'detection'
Positively impacting product/process quality!
Software Testing is a critical element of SQA
It represents the ultimate review of specification, design and coding
40% of software cost is spent for testing
During early stages, developer performs all tests
As the testing process progresses, testers come in to play
They design test cases which uncover errors
Testingpsychologically destructive
Developmentpsychologically constructive
Why testing
to ensure high quality in software-the earlier found, the greater chance of getting fixed
to ensure whether software meets customer requirements
to correct defects
to reduce cost of defect fixing-the earlier a bug is found the less costly
to avoid user detecting problems
What is quality software?
Functions as expected
Easy to use
Features or cool stuff that makes the customer buy and use the program
Delivered on time and within budget
Stable
Bug-free
Maintainable
What is a bug?
An error in code or logic
deviations of the output of a process from the expected outcome
Not handling the unexpected gracefully
A deviation from what a reasonable customer expects
A disparity in the specification
Consider the costs of a bug found...
During Spec review
During development
During testing
By external beta testers
Post production
Testing principles and Guidelines
All tests should be traceable to customer requirements
Tests should be planned long before testing begins(as soon as requirement specification model is developed)
Exhaustive white box testing is not possible
To be most effective, testing should be conducted by an independent third party
Test Early. Test Often. Test Automatically.
Make failures noticeable
Learn from bugs
If it’s too hard to test, may be the design is too complicated
Testing should be repeatable, systematic and documented
What is the tester’s role?
Understanding the process and not just the product
Verifying the functionality of product features
Validating the features – ensuring against assumptions
Observing & reporting
Providing timely information regarding quality
Owning/driving quality
What makes a good test engineer?
A good test engineer has a 'test to break' attitude, an ability to take the point of view of the customer, a strong desire for quality, and an attention to detail. Tact and diplomacy are useful in maintaining a cooperative relationship with developers, and an ability to communicate with both technical (developers) and non-technical (customers, management) people is useful. Previous software development experience can be helpful as it provides a deeper understanding of the software development process, gives the tester an appreciation for the developers' point of view, and reduce the learning curve in automated test tool programming. Judgment skills are needed to assess high-risk areas of an application on which to focus testing efforts when time is limited.
Testability
A s/w engineer designs a computer program or system with testability in mind
It enables test engineer to design test cases more easily
Eg: operability-less bugs, simplicity, understandability etc
Software Metrics (units to measure the quality of software)
Direct (no. of lines of code, cost, duration, no. of pages, no. of errors, software memory size, and execution speed)
Indirect (Reliability, Quality, Functionality, Performance, Efficiency)
Software Quality Control?
Operational techniques and activities like inspections, reviews and tests that are performed to fulfill the quality requirements. It is corrective in nature. Systematic approach of controlling the changes and implementing the changes that are needed at different levels of software development
What is 'Software Quality Assurance'?
Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'.
Every s/w company must establish organizational procedures and standards which lead to high quality s/w which has
safety
security
reliability
robustness
understandability
testability
modularity
portability
usability
reusability
efficiency
learnability
Steps
Application of technical methods and tools (to ensure high quality in design)
Formal Technical Review (FTR)-meeting by technical staff, management and customer. Presentation of design to uncover errors and functionality requirements
Software Testing
Enforcement of Standards
Measurement [software metrics]
Record keeping and Reporting-Reviews are listed and reported for correction
Verification: Are we building the product right?
Validation: Are we building the right product?
What is Verification? Validation?
Verification and validation encompasses a wide array of SQA activities including FTR (Formal Technical Review), quality and configuration audits, performance monitoring, simulation, feasibility study, documentation review, database review, algorithm analysis, development testing, qualification testing and installation testing
Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings. Validation typically involves actual testing and takes place after verifications are completed. The term 'IV & V' refers to Independent Verification and Validation.
What's the difference between QA and testing?
QA is more a preventive thing, ensuring quality in the company and therefore the product rather than just testing the product for software bugs. QC is a better set of initials to describe testing. According to ANSI/IEEE definitions, TESTING means "quality control" QUALITY CONTROL measures the quality of a product. QUALITY ASSURANCE measures the quality of processes used to create a quality product.
Software Testing Life Cycle (STLC)
At the termination of each phase in SDLC, a checkpoint is taken to insure that the current phase is completed properly and that the project team is prepared to start the next phase. The testing process will align to these same phases. The development and test activities will be coordinated so that they complement each other.
As each interim work product is created by developer, it is in turn tested to insure that it meets the requirements and specifications for that phase so that the resulting work products will be constructed on a sound foundation. Testing begins with requirements and continues throughout the life of the application
Even after the application has been in production, testing continues to play an important role in the systems maintenance process.
Testing in SDLC
The V Model is a software development and testing model, which helps to highlight the need to plan and prepare for testing early in the development process. In the V Model, each development phase is linked to a corresponding testing phase. In practice, the V Model provides a powerful tool for managing and controlling risk within the testing component of a software development project.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment