Tuesday, 17 May 2011

Find the length of the string without using strlen() function :

str="abcde"
x=Mid(str,1,1)
For i=1 to 100
 pos=instr(str,x)
 pos=pos+1
 x=Mid(str,pos,1)
 Leng=pos-1

 If x="" Then
  Exit For
 End If
Next
Msgbox "Lenght of the string" & "=" & Leng

What , Why & When automation testing ?

Hi Friends,
 
   Automation testing this is a very important skill excepted from every software tester to have it in his skill set. Currently there are so many product like QTP(Quick test professional), selenium etc running successfully into the companies and increase the speed and accuracy of QA teams .
  
  When start talking about Automation testing the first question comes into our mind is What, Why and When?

What is automation testing?
 Automation testing is nothing but we generate program to run our test cases programmatically in place of manually .Generally by this we try to cover all the functional part of the application.
Why automation testing?
Decreases the man hour effort to test the application (Cost Effective): After the automation of regression suite of an application created the man effort to test the application can be decrease. We can test the application with very less number of guys as compare to the manual testing team size. Apart of it completes our work faster then manual testing so in all its very cost effective.

Decreases the probability of human error(Accurate) : Automation testing required because when we get application to test we can’t test the application for long time with the same interest so the chances of human error increases with the time spend increases on the same application but the if we have automated  test cases they will never lose their interest fortunately J .
Reusable: You can reuse tests on different versions of an application, even if the user interfaces changes.
When Automation testing?


For long teem projects: It should be long term project: we have to test the application for so many numbers of releases.

Tool should be capable: The application should be in scope of the automation tool which we are using.

Knowledgeable resource: The resources should be Knowledgeable to frame work and the tool which are using

Manageable number of interfaces: We don’t have to interact with so many interfaces while testing for validation.

Verification & Validation

Hi Friends ,
     Software testing is one of the most complex yet fulfilling tasks involved in the development process. At every stage of development from unit testing through to User Acceptance Testing the same processes and techniques are used. The purpose of software testing is the validation and verification of the software, normally illustrated by using the V-model of software development.
    Verification means ensuring that the software has been built correctly. The colloquial definition is “Are we building the product right.
    Validation means ensuring that the software meets the requirements, both the stated and implied. The colloquial definition is “Are we building the right product“.
    Verification:Verification is a Quality control process that is used to evaluate whether or not a product, service, or system complies with regulations, specifications, or conditions imposed at the start of a development phase. Verification can be in development, scale-up, or production. This is often an internal process.
    Validation:Validation is a Quality assurance process of establishing evidence that provides a high degree of assurance that a product, service, or system accomplishes its intended requirements. This often involves acceptance of fitness for purpose with end users and other product stakeholders.

Wednesday, 11 May 2011

Software testing overview:


   Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.Software testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Generally we Categories of testing activities by Researching the information to improve or enhance testing .This information may come from specifications, use cases, technical design documentation, contracts, industry standards, competing applications, or almost anything else that is likely to improve a tester's ability to test the software deeper, faster or better.
  1. Planning and/or designing tests: This category would encompass such activities as writing test cases, developing test strategies, writing test plans, creating manual test scripts and preparing test data.
  2. Scripting and/or executing tests: Here is where tests are actually executed and/or automated. This is what most non-testers think of when they hear someone talk about software testing.
  3. Analyzing test results and new information: Not all tests produce results that clearly pass or fail. Many tests result in data that can only be understood by human judgment and analysis. Additionally, changing specifications, deadlines or project environments can make a test that had been clearly passing fail without anything changing in the software. This category is where this type of analysis occurs.
  4. Reporting relevant information: Reporting defects and preparing compliance reports are what come to mind first for most people, but a tester may need to report all kinds of additional information.

Why Software Testing?


     So now I would like to move slowly to software testing when we come to software testing the first question comes to our mind is why? Why the developers cannot develop bug free software so that the extra burden of testing will not come on project’s budget.
     The first thing would say that Testing is much more than just debugging in my career of last 4 year I have never seen a bug free software in-fact some times we caught  major bugs which could effect badly to the business after going into production or live so basically software testing protects software companies form any of such major loss.
     Software testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.Although crucial to software quality and widely deployed by programmers and testers, software testing still remains an art, due to limited understanding of the principles of software. The difficulty in software testing stems from the complexity of software: we can not completely test a program with moderate complexity. The purpose of testing can be quality assurance, verification and validation, or reliability estimation. Testing can be used as a generic metric as well. Correctness testing and reliability testing are two major areas of testing.
      Software testing is a trade-off between budget, time and quality.
Thanks & Regards
Pankaj Sharma

Details of Software Quality Assurance


SQA is an activity that is applied throughout the software engineering process.
·         Analysis, design, coding and testing methods and tools
·         Formal technical reviews that are applied during each development step
·         A multi-tiered testing strategy
·         Control of software documentation and the changes made to it .
·         A procedure to assure compliance with software development standards (when applicable)
·         A measurement and reporting mechanisms
Software Quality Techniques
·         Software Quality Assurance is a systematic program of activities designed to ensure that   a system has the desired characteristics.
·          It is generally better to focus on the process of software development then on the product itself.

Software Quality Objectives
·         Quality is often perceived as a secondary goal.
·         Software producing organizations must show programmers that quality is a priority.
·         Making quality-assurance an independent activity makes the priority clear.
·         Formal and informal reviews can be used as quality gates, periodic tests  that  determine whether the quality of the product is sufficient to justify moving to the next stage of development.
  Testing Strategy
·         This is often the primary method for both quality assessment and improvement.
·         Testing is important but it is often given too much emphasis and it is often the only method of quality assurance.
  External Audits
·         Auditors are brought from outside the organization and reports to whoever commissioned the audit it might not be explicitly a quality assurance activity for example is the process for risk management techniques.
The Principle of SQ
·         The best way to improve productivity and quality is to reduce the time spent reworking code. Reworking can take the form of changes in requirements, changes in design, or debugging.
·         A study done by NASA's Software Engineering Laboratory examined 50 development projects involving over 400 work-years of effort and almost 3 million lines of code supported this finding.   Increased quality assurance was associated with decreased error rates but no change in overall development cost.

                       

Thanks & Regards
Pankaj Sharma

Software Quality Assurance:


Hi friends,
   Before starting with any discussion on software quality first of all we will talk about the general quality of any product which we use in our daily life for example if we talk about mobile phone we all are ready to 10 k for a Nokia, Samsung phone but we don’t want to pay even 2K for a china made phone even though it’s having the same features as in Nokia or Samsung phone have. If we ask a question to our self why ? The first thing which clicks to our mind is QUALITY even though china phone is having all the features but it will not have as good quality as the branded mobile phones will have reason because these guys are not “committed for their quality”
    So the moral of the story is if we want our product to be valuable in Market we have to be “Committed for our product quality”  same thing applicable to the software also and from here Quality Assurance role starts in software industry and it plays a very important role in this industry .
Thanks & Regards
Pankaj Sharma 

Level of Testing:


Unit testing – Testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. may require developing test driver modules or test harnesses.
Incremental integration testing – Bottom up approach for testing i.e continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately. done by programmers or by testers.
Integration testing – Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
System testing – Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.
User Acceptance testing (End-to-end testing) -Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer does this testing to determine whether to accept application.



Types of software Testing:




Black box testing – Internal system design and code is not considered in this type of testing. Testers Tests the application from user point of view and this testing is based on requirements and functionality.
Black-box test design techniques include:
ü      Decision table testing
ü      All-pairs testing
ü      State transition tables
ü      Equivalence partitioning
ü      Boundary value analysis
White box testing (clear box testing, glass box testing, transparent box testing, or structural testing) – This testing is based on knowledge of the internal logic of an application’s code. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions and loops. white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level .
White-box test design techniques include:
ü      Control flow testing
ü      Data flow testing
ü      Branch testing
ü      Path testing

Grey box testing : This type of testing falls somewhere in between Black Box and White box testing it involves understanding of internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level.This distinction is particularly important when conducting integration testing between two modules of code written by two different developers, where only the interfaces are exposed for test.
Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.
Non-functional- Testing verifies other than funtional expectation from the application.It’s usually client side. 
ü      Load and Performance Testing
ü      Ergonomics Testing
ü      Stress & Volume Testing
ü      Compatibility & Migration Testing
ü      Data Conversion Testing
ü      Security / Penetration Testing
ü      Operational Readiness Testing
ü      Installation Testing
ü      Security Testing (ApplicationSecurity, Network Security, System Security)
Load testing – It’s a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.
Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.
Performance testing – Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.
Usability testing – User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.
Install/uninstall testing - Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.
Sanity testing - Testing to determine if a new software version or built is performing well enough to accept it for a major testing effort. If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.
Regression testing – Testing the application as a whole for the modification in any module or functionality. In regression testing usually difficult to cover all the system so if we have to do it either by covering only some parts of regression suite if we are doing it manually or we can use automation tools if we have that option .
Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Security testing – Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.
Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combinations of above.
Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.
Beta testing – Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.
Interface Test::As the components are constructed and tested they are then linked together to check if they work with each other. It is a fact that two components that have passed all their tests, when connected to each other produce one new component full of faults. These tests can be done by specialists, or by the developers.Interface Testing is not focussed on what the components are doing but on how they communicate with each other, as specified in the "System Design". The "System Design" defines relationships between components, and this involves stating:
  • What a component can expect from another component in terms of services.
  • How these services will be asked for.
  • How they will be given.
  • How to handle non-standard conditions, i.e. errors.
Tests are constructed to deal with each of these.The tests are organised to check all the interfaces, until all the components have been built and interfaced to each other producing the whole system.