Saturday, September 6, 2008

All Differences

'Testing' and 'Quality'


Testing is:-

1)The process used to help identify the correctness, completeness, security, and quality of developed computer software.

2)Process to ensure Quality.

3)Process to improve quality.


Quality is:-

1)Measure of conformance of a product or service to certain specifications or standards.

2)Meeting client’s requirements.

3) It is a measurement of user satisfaction.


Web testing and Client Server testing

Testing the application in intranet (without browser) is an example for client -server. (The company firewalls for the server are not open to outside world. Outside people cannot access the application). So there will be limited number of people using that application. Client server application :-

--> runs in two or more machines
--> Application is a menu-driven
--> Connected mode (connection exists always until logout)
--> Limited / known number of users
--> Less number of network issues when compared to web app.

Testing an application in internet (using browser) is called web testing. The application which is accessible by numerous numbers around the world (World wide web). Web based application
--> runs in two or more machines
--> URL-driven
-->.Disconnected mode (state less)
--> Unlimited number of users
--> issues like browser compatibility, security issues, performance issues, etc



Project and product testing

Projects are generally targeted to meet a client (fixed customer)requirement. But products are targeted to meet a market (dynamic user) requirement.

Difference in both type of testing can be understand by this example:-

We used to eat food at home, in home made food, we know what we want and what we have made? that is project testing.

But if we have to eat food in market, waiter will tell you the quality of their food, and still we don't know what exactly he is going to serve. This is product testing.



Verification and Validation

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.

Verification:- "Are we building the product right?"

Validation:- "Are we building the right product?"



Test Scenario and Test Suite

Test Scenario

Test Scenario is set of test cases that ensure that the business logics are tested. They may be single tests or a series of tests, each depends on the output of the previous one. One test scenario should satisfies atleast one or more business logic.

Test Suite

A test Suite is collection of test cases and/or test scenarios that are related with each other. A test suite is a composite test scenario.



Sanity Testing and Smoke Testing

Sanity Testing: Brief test of major functional elements of a piece of software to determine if its basically operational for exhaustive testing. It gives a measure of confidence that the system works as expected prior to a more exhaustive round of testing.

Smoke Testing: Smoke testing is testing whether new features or functionality added are working good with exiting one and there is no new problem in working code.Smoke tests are designed to confirm that changes in the code do function as expected and do not cause failure of the rest of an entire build.



Functional testing and Regression testing

Functional testing is a testing process where we test the functionality/behaviour of each functional component of the application, example minimize button,transfer button,links etc. We check what is each component doing in that application and what is expected?

Regression testing is the testing the behaviour of the application of the unchanged areas when there is a change in the build. We retest the build whether the changed requirement has altered the behaviour of the unchanged areas. The impacted area may be the whole of the application or a part of the application.



Retesting and Regression testing

Regression is also retesting, but the objective is different.

Regression testing is the testing which is done on every build change. We retest already tested functionality for any new bug introduced due to change.

Retesting is the testing of same functionality, this may be due to any bug fix, or due to any change in implementation technology.



Static tetsing and Dynamic testing

Static testing:-

Static testing is Verification activity.Tester have a checklist to check whether the product is as per the set standards of the organization.These standards can be for Coding, Integrating and Deployment.Review's, Inspection's and Walkthrough's are static testing methodologies.

In static testing code is not run to uncover bugs, but verify by experts to find any flaw.

Dynamic testing:-

Dynamic testing is validation activity.Tester have SRS to check whether the product is as per requirements of the user.Unit Tests, Integration Tests, System Tests and Acceptance Tests are Dynamic Testing methodologies.

In dynamic testing code is executed to find bugs, or to confirm that it's working well.



Testing and Debugging

Testing is validating whether the application is working as per the Client's Requirements and if not then defects are logged. Testing is done by tester.

Debugging is to find out where code fail and fix it. Debugging is done by developers.



Test environment and UAT environment

Test environment is a controlled testing environment. When application is under developing stage , it's tested under test environment which simulates the behavior of real user environment.

User acceptance test environment is user actual environment, In which application have to work.

For example:-

When a man goes to moon, he is trained like he is on moon, in controlled environment. Because of difference in gravitational force and other climate differences. It is test environment testing.

But when that person is actually on moon and doing all acts as per expectation than it is UAT environment testing.



Back-to-Back testing and End-to-End testing

Back-to-Back testing is, in which two or more variants of a component or system are executed with the same inputs, the outputs compared, and analyzed. Back-to-back testing involves cross-comparison of all responses obtained from functionally equivalent software components. Whenever a difference is observed it is investigated and, if necessary, a correction is applied.

End-to-End testing generally ensures that all aspects of the business are supported by the systems under test. This is confirmation testing of overall process is performing well.



Effective testing and Efficient testing

Efficient means performing or functioning in the best possible manner with the least waste of time and effort; having and using requisite knowledge, skill, and industry; competent.
Efficient testing will be testing which uncover most of the bugs in less effort and time.

Testing Efficiency = (No. of defects Resolved / Total No. of Defects Submitted)* 100

Effective means obviously whether we are getting the bug, whether there is any benefit of the testing or not. Effective testing is whether we are getting the bug or we are just wasting our time.

Test Effectiveness = Loss due to problems / Total resources processed by the system



CMM and CMMI

Capability Maturity Model (CMM): A five level staged framework that describes the key elements of an effective software process. The Capability Maturity Model covers practices for planning, engineering and managing software development and maintenance.

Capability Maturity Model Integration (CMMI): A framework that describes the key elements of an effective product development and maintenance process. The Capability Maturity Model Integration covers practices for planning, engineering and managing product development and maintenance. CMMI is the designated successor of the CMM.



Testing Software with Third Party Funtionality

It may be the case and it's also true that you have no idea about this software and there are no documents to help you either. But one thing which can help us is 'our software requirements", what we are expecting from that third party software. If that third party software is fulfilling our requirement, we need not to think more about that.We have to concentrate on our application.

Example:- I was testing a feature of my web project, "Marking location on google map". Now we don't know how, google map works, neither i will test google map, I may use google map to understand it's functionality which we have to use in our project. If i can mark location on google map through my application, then it will pass my test case.




--------------------

1 comment:

Issac Newton said...

Hi

It is very informative and great work.

Thanks