Tuesday, June 30, 2015

An Incident in software testing.....

What is an Incident in software testing?

  • While executing a test, you might observe that the actual results vary from expected results. When the actual result is different from the expected result then it is called as incidents, bugs, defects, problems or issues.
  • To be specific, we sometimes make difference between incidents and the defects or bugs. An incident is basically any situation where the system exhibits questionable behavior, but often we refer to an incident as a defect only when the root cause is some problem in the item we are testing.
  • Other causes of incidents include misconfiguration or failure of the test environment, corrupted test data, bad tests, invalid expected results and tester mistakes.

Monday, June 29, 2015

Static Vs Dynamic Testing

Static Vs Dynamic Testing

Under Static Testing code is not executed. Rather it manually checks the code, requirement documents, and design documents to find errors. Hence, the name "static".

Main objective of this testing is to improve the quality of software products by finding errors in early stages of the development cycle. This testing is also called as Non-execution technique or verification testing.
Static testing involves manual or automated reviews of the documents. This review, is  done during initial phase of testing to catch defect early in STLC. It examines work documents and provides review comments
Work document can be of following:
  • Requirement specifications
  • Design document
  • Source Code
  • Test Plans
  • Test Cases
  • Test Scripts
  • Help or User document
  • Web Page content           
Under Dynamic Testing code is executed. It checks for functional behavior of software system , memory/cpu usage and overall performance of the system. Hence the name "Dynamic"
Main objective of this testing is to confirm that the software product works in conformance with  the business requirements. This testing is also called as Execution technique or validation testing.
Dynamic testing executes the software and validates the output with the expected outcome. Dynamic testing is performed at all levels of testing and it can be either black or white box testing.


Testing Techniques used for Static Testing:
  • Informal Reviews: This is one of the type of review which doesn't follow any process to find errors in the document. Under this technique , you just review the document and give informal comments on it.
  • Technical Reviews: A team consisting of your  peers,   review the technical specification of the software product and checks whether it is suitable for the project. They try to  find any discrepancies in the specifications and standards followed. This review concentrates mainly on the technical document related to the software such as Test Strategy, Test Plan and requirement      specification documents.
  • Walkthrough: The author of the work product explains the product to his team. Participants can ask questions if any.  Meeting is led by the author. Scribe makes note of review comments
  • Inspection: The main purpose is to find defects and meeting is led by trained moderator. This review is a formal type of review where it follows strict process to find the defects. Reviewers have checklist to review the work products .They record the defect and inform the participants to rectify those errors.
  • Static code Review: This is systematic review of the software source code without executing the code. It checks the syntax of the code, coding standards, code optimization, etc. This is also termed as white box testing .This review can be done at any point during development.
Testing Techniques used for Dynamic Testing:
  •  Unit Testing:Under unit testing ,  individual units or modules is  tested by the developers. It  involves testing of source code by developers.
  • Integration Testing: Individual modules are grouped together and tested by the developers. The purpose is to determine that modules are working as expected once they are integrated.
  • System Testing: System testing is performed on the whole system by checking whether the system or application meets the requirement specification document.

 Also , Non-functional testing like performance, security testing fall under the category of dynamic testing.

Difference between Static and Dynamic Testing:

Static Testing
Dynamic Testing
Testing done without executing the program
Testing done by executing the program
This testing does verification process
Dynamic testing does validation process

Static testing is about prevention of defects
Dynamic testing is about finding and fixing the defects
Static testing gives assessment of code and documentation
Dynamic testing gives bugs/bottlenecks in the software system.
Static testing involves checklist and process to be followed
Dynamic testing involves test cases for execution
This testing can be performed before compilation
Dynamic testing is performed after compilation
Static testing covers the structural and statement coverage testing
Dynamic testing covers the executable file of the code
Cost of finding defects and fixing is less
Cost of finding and fixing defects is high
Return on investment will be high as this process involved at early stage
Return on investment will be low as this process involves after the development phase
More reviews  comments are highly recommended for good quality
More defects are highly recommended for good quality.
Requires loads of meetings
Comparatively requires lesser meetings




VMS

Voice mail was introduced in the late 1970s by Gordon Mathews. VMS was previously called VMX which stands for Voice Mail Exchange. Voicemail (also known as voice-mail, VMS, or message bank) is a centralized system of stored telephone messages that can be retrieved by the recipient at a later time.

Allows users and subscribers to exchange personal voice messages; to select and deliver voice information; and to process transactions relating to individuals, organizations, products and services, using an ordinary telephone.

SDLC v/s STLC

Software Development Life Cycle (SDLC): Specifies the various stages of software development.
  • System Requirements Analysis.
  • Feasibility study
  • Systems Analysis and Design
  • Code Generation
  • Testing
  • Maintenance
  • Implementation
Software Testing Life Cycle (STLC): specifies the various stages of testing.
  • Requirements stage
    1. Requirement Specification documents
    2. Functional Specification documents
    3. Use case Documents
    4. Test Trace-ability Matrix for identifying Test Coverage
  • Test Plan
    1. Test Scope, Test Environment
    2. Different Test phase and Test Methodologies
    3. Manual and Automation Testing
    4. Defect Management, Configuration Management, Risk Mgmt. Etc.
  • Test Design
    1. Test Case preparation
    2. Test Traceability Matrix for identifying Test Cases
    3. Test case reviews and Approval
  • Test Execution
    1. Executing Test cases
    2. Capture, review and analyze Test Results
  • Defect Tracking
    1. Find the defect & tracking for its closure.
  • Bug Reporting
    1. Report the defect on tool/Excels
  • Regression/retesting


What are the roles and responsibilities of a Test Leader?

What are the roles and responsibilities of a Test Leader?
  • Test leaders tend to be involved in the planning, monitoring, and control of the testing activities and tasks.
  • At the outset of the project, test leaders, in collaboration with the other stakeholders, devise the test objectives, organizational test policies, test strategies and test plans.
  • They estimate the testing to be done and negotiate with management to acquire the necessary resources.
  • They recognize when test automation is appropriate and, if it is, they plan the effort, select the tools, and ensure training of the team.  They may consult with other groups – e.g., programmers – to help them with their testing.
  • They lead, guide and monitor the analysis, design, implementation and execution of the test cases, test procedures and test suites.
  • They ensure proper configuration management of the testware produced and traceability of the tests to the test basis.
  • As test execution comes near, they make sure the test environment is put into place before test execution and managed during test execution.
  • They schedule the tests for execution and then they monitor, measure, control and report on the test progress, the product quality status and the test results, adapting the test plan and compensating as needed to adjust to evolving conditions.
  • During test execution and as the project winds down, they write summary reports on test status.
  • Sometimes test leaders wear different titles, such as test manager or test coordinator. Alternatively, the test leader role may wind up assigned to a project manager, a development manager or a quality assurance manager. Whoever is playing the role, expect them to plan, monitor and control the testing work.

What is Non-Functional Testing?

What is Non-Functional Testing?
Testing is broadly classified into 2 types:
  • Functional Testing
  • Non Functional Testing
What is Functional testing?
Functional testing, as the name suggests, validates all the functionality of the system. It evaluates the application and validates whether the application is performing as per the requirements.
Types of functional testing include:
–  Unit testing
–  Smoke testing
–  
Sanity testing
–  Interface testing
–  Integration testing
–  Systems testing
–  Regression testing
–  
User acceptance testing

What is Non Functional testing?
Next type of testing is the Non Functional testing. As the name depicts, this testing concentrates on the non functional aspect of the application. So what are the non functional aspects? Or should I say what are the features which are not related to the functionality of the application? Well, here are those:
– How does the application perform under normal circumstances?
– How the application behave when too many user logs in concurrently?
– Can the application handle stress?
– How secure is the application?
– Can the application recover from any disaster?
– Can the application behave in the same way in different environment or OS?
– How easy is to port the application in different system?
– Are the documents / user manual provided with the application easy to understand?
The list can grow. But the point here is, are not these features contributed to the quality of the application? The answer is YES. These features are equally important. Imagine the application which meets all the user requirements perfectly, but some naughty user can easily go and crack the data entered by the user in the application, or application dies when more than 5BB of any file is uploaded. So would you say that the application is of good quality; of course not.
So here comes the non functional testing technique. Now let’s explore these techniques one by one.
#1. Performance TestingEvaluates the overall performance of the system. Key elements are as follows:
–  Validate that the system meets the expected response time.
–  Evaluate that the significant elements of the application meets the desired response time.
–  It can also be conducted as a pert of integration testing.
–  It can also be conducted as a part of systems testing.
#2. Load Testing: Evaluates whether the system’s performance is as expected under normal and expected conditions. Key points are
–  Validate that the system performs as expected when concurrent users access the application and gets the expected response time.
–  This test is repeated with multiple users to get the response time and throughput.
–  At the time of testing, the data base should be realistic.
–  The test should be conducted on a dedicated server which stimulates the actual environment.
#3. Stress Testing: Evaluates whether the system’s performance is as expected when it is low on resources. Key points are:
–  Test on low memory or low disc space on clients / servers that reveals the defects which cannot be found under normal conditions.
–  Multiple user performance the same transactions on the same data.
–  Multiple clients connected to servers with different workloads.
–  Reduce the Think Time to “Zero” to stress the servers to their maximum stress.
Think Time: like the time interval between typing your user and password.
#4. Volume Testing: Evaluates the behavior of the software when large volume of data is involved. Key points are:
–  Subject the software to large amounts of data and check the limit where the software fails.
–  Maximum database size is created and multiple client query the database or create larger report.
–  Example- If the application is processing database to create a report, a volume test would be to use a large result set and check that the report is printed correctly.
#5. Usability Testing: Evaluates the system for human use or fit for use. Key points are:
–  Are the output correct and meaningful and the same which was expected as per the business?
–  Are the errors diagnosed correctly?
–  Is the GUI correct and consistent with the standard?
–  Is the application easy for use?
#6. User Interface Testing: Evaluates the GUI. Key points are:
–  GUI should provide help and tool tips to make it easy for use.
–  Consistent for its look?
–  Data is traversed correctly from one page to another?
–  GUI should not annoy the user or gets difficult to understand.
#7. Compatibility Testing: Evaluates that the application is compatible with other hardware /software with minimum and maximum configuration. Key points are:
–   Test with each hardware with minimum and maximum configuration.
–   Test with different browsers.
–   Test cases are the same which were executed during functional testing.
–   In case the number of hardware and software are too many, we can use OATS techniques to arrive at the test cases to have maximum coverage.
#8. Recovery Testing: Evaluates that the application terminates gracefully in case of any failure and the data is recovered appropriately from any hardware and software failures.. The tests are not limited to the below points:
–   Power interruption, to the client while doing CURD activities.
–   Invalid database pointers and keys
–   Database process are aborted or prematurely terminated.
–   Database pointers, fields and keys are corrupted manually and directly within database.
–   Physically disconnect the communication wores, power turn off, turn down the routers and network servers.
#9. Instability Testing: Evaluates and confirms that software installs and uninstalls correctly. Key points are:
–   Validate that the system components are installed correctly on the designated hardware.
–   Validate that the navigation on the new machine, update the existing installation and older versions.
–   Validate that with insufficient disc space, there is no unacceptable behavior.
#10. Documentation Testing: Evaluates the documents and other user manuals.
–   Validate that the stated documents are available in the product.
–   Validate all that user guides, set up instruction, read me files, release notes and online help.
Conclusion:
Non functional testing is very important aspect of quality and like functional testing, non functional testing also requires a strategy and planning.