Software Testing
Blog on software testing and quality

Importance of Reviews in Software Testing and SDLC | When to Start the Reviews in SDLC/Testing

What is a Review in Software Development?
Reviews are a form of static testing where people, rather than tools, analyze the project or one of the project’s work products, such as a requirements specification.
Defects detected during reviews early in the life cycle (e.g., defects found in requirements) are often much cheaper to remove than those detected by running tests on the executing code.
A review could be done entirely as a manual activity, but there is also tool support.

Types of the Reviews:
- Walk-through
- Informal reviews
- Technical reviews
- Inspections

Who is Reviewer?
The person involved in the review that identifies and describes anomalies in the product or project under review. Reviewers can be chosen to represent different viewpoints and roles in the review process.

What artifact can be reviewed?

- Requirements specifications
- Design specifications
- Code
- Test plans
- Test specifications
- Test cases
- Test scripts
- User guides

Why should I perform Reviews? What are the benefits of performing Reviews?

- Reduces Risk & Cost: If we catch issues in Review phase itself then design mistakes, missing scenarios in test cases can be avoided in later stage of SDLC. (Remember issues are less costlier to fix in early stage of SDLC)

- We can find the issues in earlier stages, so saves plenty of time in later stages.
- Prevents bugs to convert into failures
- It is cost-effective.
- It provides high % of statement coverage in short span of time

When to review?
As early as possible: When Requirements are ready, when Test artifact are ready, when code/functions are ready, etc.

For example: If we get the requirement, then we can start reviewing the requirement. I must say, you will surely get many things that you would need to check with the author.

Often:
It is easier to review a small document rather than large one. So review whenever there is change/enhancement in the requirement. Give feedback to authors quickly. Make everything clear on time. Don’t create backlog items for this

Guest Article by Gaurav Dhiman

Read On 0 comments

Test Case Design - Effectiveness and efficiency

A test that exercises the software in ways that we know will work proves nothing.

We know that if we run the same test twice we learn very little second time round. If we know before we run a test, that it will almost certainly work, we learn nothing. If we prepare a test that explores a new piece of functionality or a new situation, we know that if the test passes we will learn something new - we have evidence that something works. If we test for faults in code and we try to find faults in many places, we increase our knowledge about the quality of the software. If we find faults, we can fix them. If we do not find faults, our confidence in the software increases.

Effective tests

When we prepare a test, we should have some view on the type of faults we are trying to detect. If we postulate a fault and look for that, it is likely we will be more effective.

In other words, tests that are designed to catch specific faults are more likely to find faults and are therefore more effective.

Efficient tests

If we postulate a fault and prepare a test to detect that, we usually have a choice of tests. We should select the test that has the best chance of finding the fault. Sometimes, a single test could detect several faults at once. Efficient tests are those that have the best chance of detecting a fault.

 

Reference – ISEB PARTI- Principles of Testing

Read On 0 comments

Importance of ISO Standards

(An Article for beginners and fresher testers)

Introduction

ISO stands for International Organization for Standardization and this is the famous publisher of international standards in the world. This would mean that organization exists worldwide. ISO – International Organization for Standardization shortened to ISO and name has the meaning which is equal. Headquarters of the ISO are located in Geneva, Switzerland and it is regulating in 163 countries.

Importance of ISO Standards

  • Filling the gap between private and public sectors: According to the ISO if there would be one member is registered per country then the gap between the public and private sectors can be filled easily and it will be fruitful as exchanging information between many controllers and businesses.
  • Standards: Standards really make a big impact on our lives and the significance of ISO standards can be more understood that what will happen if there is a lack of standards. Product should be made according to the expectations of the customers and then it must be taken for granted. People normally don’t prefer to go with product that does not met with the standards and there would be highly chance of poor quality in the products or services. Whether company deals with goods or services, standards should be the part of them since ISO ensures robustness, effectiveness, quality and many more.
  • Business Benefits: ISO standards are more beneficial for the businesses which include standardization of goods and products. Businesses can be well-appointed to and can deal goods in the foreign market. ISO makes and improves overall production of any business. Manufacturing and supplying gets improved with the help of ISO standards. When new technology gets introduced from the business then standards help them to reach global markets.
  • Assistance for Government: There are more benefits for governments and standards will help them to assess properly. Fair trade can be done with the help of standards and transactions of importer and exporter can be done with the help of ISO. Resources can be allocated accordingly like goods and services in different regions.
  • Significance in the society: Customers gets more relaxed by knowing that products, goods and services are coming to them after meeting the ISO standards. ISO matches and aligns businesses to cleaner and safer production approaches by laying down operational guidelines for diverse trades.

ISO- International Organization for Standardization can be easily understood with the above mentioned points and ISO can be really beneficial for the goods and services offered to the customers.

Guest Article by Mandeep Singh

Read On 0 comments

QTP Testing process/phases

(An Article for beginners and fresher testers)

Automated Software Testing with Quick Test Professional (QTP) involves many phases since there is a process to automate the software or any application. There are several steps which are discussed below:

  • Record Preparation: There are respective requirements which should match with Quick Test and see the environment is ok to record with. Tester should make sure that elements should be displayed in the application which you are going to test and purpose of your test is according to the expectations.
  • Record your application or software: One of the major and foremost things to perform with Quick Test is to record your application and when you start recording the application and each step will get recorded and gets displayed in the keyword view. All the actions can be recorded such as clicking on the image, entering data in the forms, login with credentials etc.
  • Enhancement in your recorded test: Recorded test can be enhanced with the help of checkpoints. With the help of checkpoints values can be inserted and functionality of your website or software can be easily checked with the help of these checkpoints. Customize your scripts with entering or replacing values with parameters and it can let you know about the application for the functioning properly or not. There are more options like to add the logic in terms of loop statements and conditions to your test.
  • Test Debugging: Debug your recorded test to check the operation that it’s working properly without any disruption.
  • Run your test: Running your test performs tasks to check your website or software for the defects. Quick Test will open your application and it will perform the test step by step which is recorded in QTP. Automating your software is one of the advantages where application is really big and it can be done smoothly with the help of Quick Test.
  • Analysis of results: Tester can easily check all the defects in the application if Quick Test has found at the time of running test scripts. This way nothing can be missed from the testers since tool is checking all the steps which you have recorded and added more logics.
  • Reporting of defects or bugs: All the defects which have been found with the help of Quick Test can be reported in the Quality Centre since there is a functionality in QTP to add the defects directly in to the database. Quality Centre is also the part of QTP.

Guest Article by Mandeep Singh

Read On 0 comments

Understanding the Testing Concepts

(An Article for beginners and fresher testers)

It is very important for any Software Tester to understand the motive behind testing of any product before carrying out the actual process. The first objective should be to look out for the behaviour of the application that it performs and requirement specification document doesn’t demand it. The other would be look out for the behaviour that it does not perform and requirement specification document demands. To obtain this, it is necessary to be thorough in the Software Testing Concepts.

The main purpose of software testing is Verification, Validation and Identification of Bugs. Verification is basically inspecting on the process and verifies if we are building the product right whereas validation is a process carried out after verification and determines if the product meets the user’s requirements. Bugs identification is vital to figure out discrepancy in Actual and Expected result.

There are several SDLC Models used to carry out effective development of software which includes V-Model, Waterfall Model, Spiral Model, Iterative Model and many more. Depending on the project requirements, the appropriate one is selected and deployed to meet the needs of the project.

To carry out effective testing, the most important thing is to create a test plan which is a mandatory requirement for any organization carrying out software testing. The things covered in this document includes the people assigned to the assignments, testing scope, schedule of testing, its priority, major items that needs to be tested, process to report or log the defects, technical environment used in testing and things such as who will be doing what, when and how. Activities such as Entry and Exit criteria are also a part of Test plan document.

There is another document known by the name of Test Case that defines the input data, high level conditions and expected results. Based on the test case, we design Test Script which incorporates a step-by-step detail of a particular functionality or requirement.

System Testing is the activity carried out to test all elements, modules that are new, modified or affected with the modification. The main focus is always on validating the functional requirements and verifying how all the modules behave together.

Integration Testing is the verification of interfaces with other applications and can also include the ones owned by outside vendors as well.

User Acceptance Testing (UAT) testing is carried out by the business users to ensure the quality of the product.

So it is very important to clear the Software Testing concepts in order to achieve heights of success in Software Testing field.

 

Guest article by Varun Arora.

Read On 0 comments

Understanding Testing Concepts- A Foundation for Successful Testing Phase

(An Article for beginners and fresher testers)

To be proficient in any domain, industry, it is necessary to go through its foundations that will lead you to the path of success. Same holds valid for Software Testing as well. In order to carry out efficient testing and meet the expectation of the business, it is necessary to have a strong foundation of Testing Concepts. You should be able to figure out the difference between the commonly used testing terminologies such as Verification, Validation, Entry-Exit Criteria, Test plan, Test Case, Test Script and many more such as what importance does each and every term holds, what is the objective behind carrying out Software testing etc.

The factors discussed above not only help the business grow in a manner that is expected by the company but turns out to be useful for individual’s career growth as well. With the clarity on the testing concepts, one can expect to figure out more scenarios and conditions required for the application to perform better. A tester strong in basics of software testing has the ability to think out of the box and can successfully come up with the ideas to improve the current software or application.

A strong hold on the Testing concepts can help a tester to identify the importance of testing in various phases of SDLC and apart from merely carrying out testing in testing phase, he will get himself involved right from the beginning of the project. This will help him to identify the gaps if any exists in the requirements specification document and accordingly will recommend the same to the leadership. This can help the business to make the gaps rectified and stop it from carrying it to the further phases where it would have been difficult or rather costly to get it resolved.

The accurate test plan, test case and test scripts are the outcomes of strong testing concepts. It helps to reduce the rework which can arise out of lack of testing skills. To decide on the entry and exit criteria, one needs to possess the entire product knowledge and a strong hold on the requirements so that a proper decision could be made on factors such as when to stop testing or when to move onto the next phase.

As discussed, thorough understanding of the testing concepts proves to be fruitful for business as well individual’s growth and each tester must work on it to deliver a bug free product to the client.

Guest article by Varun Arora.

Read On 0 comments

Role of Tester in Testing Life Cycle

(An Article for beginners and fresher testers)

The driving force behind any successful software is the process followed to attain the same and it is the key responsibility of each and every individual working on the project to give their best in obtaining the same. Likewise, the testing phase of SDLC holds its importance with the help of its testers as they play a major role in carrying out an efficient testing. Their role in testing life Cycle cannot be ignored to bring out a product of superior quality product. Some of the key roles that a tester must play to ensure a smooth product delivery are as follows.

  • The days are gone when a tester kept on waiting for the development phase to get completed so that the testing can be carried out on the developed application. Now the tester plays a key role in each of the phases of SDLC.
  • Tester should play a key role in reviewing and validating the Requirement Specification document if it is line with the needs of the client.
  • The same holds valid for Design phase as well since all these validations will help him to create test plan and test cases to the highest standards.
  • Defects, if any exists in any phase of SDLC need to be reported instantly to avoid it carrying further to the next phases else it will be a huge loss to the company in terms of revenue as well as reputation.
  • His role extends in carrying out the core activities of the testing ranging from execution of the Test Assets to identifying the bugs in the application and reporting it to the developer either through an email or get it logged in a particular bug tracking tool.
  • The job of a tester does not end merely by logging a bug in the bug tracking tool, he needs to make sure that it is resolved by the developer as per the requirements of the client. For this, he needs to effectively communicate with the developer to get it rectified timely.
  • Being a senior tester, your role also extends to review the Test Assets created by the Junior Testers so that no requirements are missed however minor or major.

The tester plays a vital role in carrying out SDLC activities accurately for the reason described above. His contribution in bringing out a high quality product is worth a value to appreciate.

Guest article by Varun Arora.

Read On 0 comments

Importance of following a Systematic Testing Process OR Testing Life Cycle Model

(An Article for beginners and fresher testers)

Importance of following a Systematic Testing Process OR Testing Life Cycle Model

Software Development Life Cycle which is a process of developing software with proper investigation, design, implementation, testing, operations & maintenance is a very tedious task for any IT industry. One of the major phases associated with SDLC is Testing Life Cycle. This phase holds its own importance to any organization for the following reasons.

  • Verification & Validation is one of the key goals of testing life cycle and can primarily use to calculate metrics. The outcome can give you a brief comparison on the performance of different modules.
  • Identifying & Reporting Bugs is the main aim of any testing life cycle. These bugs can exist at any phase of SDLC and has to be figured out to get it rectified as soon as possible to avoid it carry forwarding to next phase.
  • Company’s Pride is one another factor taken into consideration since the reputation of any company is defined by the quality of the products/projects it delivers to the clients.
  • High Quality Product delivery is the ultimate aim of any organization. Hence it is necessary to carry out rigorous testing in order to obtain the same.
  • Efficient testing and identifying of bugs in the early stages of SDLC can Reduce Fixation Costs as compared to if it is found in later stages or SDLC or if get caught in UAT.
  • Testing if carried out properly with the focus on the application keeping in view the customer vision of the product can help the organization to Win More Project Deals in the future.
  • To be Ahead of Competitors is the challenge for any organization that largely depends on the quality of its product. This can be achieved through proper development and more from an efficient testing so that when it is delivered to the client and ultimately to the users of the application, it is free of defects.
  • Testing Improves the Quality of the software under test. There may be bugs which if not caught in testing phase can bring a huge loss to the organization which can range from increase of fixation cost to the loss of a project deal.

As seen above, testing if carried out proactively can make the company’s business to grow to highest peak. It is an art which should be performed by the individuals of highest ability and must possess excellent analytical skills to come out with different scenarios.

Guest article by Varun Arora.

Read On 0 comments

Skill set of SOFTWARE TESTING Engineer

(An Article for beginners and fresher testers)

To be recognized as one of the efficient SOFTWARE TESTING’s, you need to incorporate in you a level of proficiency required to meet the business expectations and for your career growth as well. As a part of the regular job, a SOFTWARE TESTING Engineer has to write the test plans, participates in all the important discussions related to the project, includes all the test conditions in the Test Scripts so that it becomes easy during the time of Execution. The issues found by the SOFTWARE TESTING Engineer are reported either by mail or logged in a specific bug tracking tool.

To make sure that the SOFTWARE TESTING Engineer must be able to perform his above discussed responsibilities to the highest level, it is good to obtain a certain degree of skills. It is a must to obtain in depth knowledge on the product under test. The workflow of the application should be clearly understood so that he should be able to include the negative scenarios as well apart from merely meeting the client requirements. He should be able to recommend any changes or improvement required to make the product better to the client.

As every job demands, Software Testing Engineer should also possess excellent communication skills so that he should be able to communicate the issues effectively to the developers and above all the Client should be able to track the progress of his project. He should be able to make the development team understand the flow of steps which has led to the bug in the application so that it may be easy for the developer to work on it. Ability to find the hidden bugs from the application is one of the most required skills out of any SOFTWARE TESTING Engineer.

If one is working in an Automation testing, it is good to have basic understanding of programming skills required to code the automated tests. But the ultimate goal should be to find the bugs with the Automation tool you are using since it will be of no use to develop an Automation framework if it is not able to find any bug.

Looking at the above discussed, it is clear that a SOFTWARE TESTING Engineer must have the ability to not only find the bugs but to get them resolved as per the need of the Client. The only thing that would make it possible is his in-depth knowledge of product and effective communication skills.

Guest article by Varun Arora.

Read On 0 comments

Breakdown of Tester’s Skills – From Testing Engineer to Testing/QA Manager

(An Article for beginners and fresher testers)

The perquisite to take up any job irrespective of the Industry, domain and any other factor, it is imperative to have the required skills to give your best in the task assigned to you. We need to develop a level of proficiency for the Industry we are hired for whether it is IT, Banking or any other Industry. Quality Assurance & Software Testing  is nowhere an exception to this owing to its importance in the IT Industry. Depending on your experience, it is expected to form a certain level of expertise as far as QA activity is concerned and this can be breakdown into profile specific skills- QA/Testing Engineer & QA/Testing Manager.

As far as QA Engineer skills are concerned, the primary thing expected out of them is to have good communication skills and strong analytical approach which will help them to write the Test Assets in a more rigorous manner. They must be able to capture each and every condition from the Requirement document and incorporate them into the Test Assets. Issues however minor or major must be reported as per the process such as logging them in a particular bug tracking tool. These skills are imperative not only for the individual working on the application but for the business as a whole as well. Testing the Application keeping in view the demand of the Client and the users of the product helps the tester to understand the product better. There may be situations when it is expected out of a QA Engineer to program the Automated tests, so it good to have a basic programming skill as well.

QA Managers on the other hand have a more rigorous task to handle other than validating the application. Identifying the right candidates for the required position is the challenging job for any QA Manager. You need to place your best people to the project you are supposed to manage. From reviewing the test plans to selecting the appropriate tool required for testing, the QA Manager has to be proficient in making the correct judgement on these. He must be able to develop a work environment full of energy, motivation and that drives the people to reach business goals as well their own personal goals. Besides a good decision maker, he must have the skills to build the team with expertise in different domains.

It is imperative to have the required skills based on your experience as discussed above which is beneficial not only for the business but for your professional growth as well.

Guest article by Varun Arora.

===============================================================================================

You can also read this article, which states the responsibilities of a Software Test Engineer:

The responsibilities of a Software Test Engineer can be:
1. Go through the software requirements and get clarifications on one’s doubts
2. Become familiar with the software under test and any other software related to it
3. Understand the master test plan and/ or the project plan
4. Create or assist in creating own test plan
5. Generate test cases based on the requirements and other documents
6. Procure or create test data required for testing
7. Set up the required test beds (hardware, software and network)
8. Create or assist in creating assigned test automation
9. Test software releases by executing assigned tests (manual and/ or automated)
10. Report defects (usually in a defect database) to the stakeholders
11. Create test logs
12. Report test results to the stakeholders
13. Reply to returned bug reports (for example, when a bug report is returned as not reproducible)
14. Re-test resolved defects
15. Update test cases based on the discovered defects
16. Update test automation based on the updated test cases
17. Provide inputs to the team in order to improve the test process
18. Log own time in the project management software or time tracking system
19. Report work progress and any problems faced to the Test Lead or Project Manager as required
20. (If applicable) Support the team with testing tasks as required
21. Keep himself/ herself up-to-date on the overview of the development technology, the popular testing tools (e.g. automated testing tools and test management systems) and the overview of the business domain

 

You can also read this article, which states the responsibilities of a Software Test Lead:

Common responsibilities of a Software Test Lead include the ones given below.

1. Be updated on the latest testing techniques, strategies, testing tools/ test frameworks and so on

2. Be aware of the current and upcoming projects in the organization

3. Review and analyze the project requirements

4. Plan and organize the knowledge transfer to the Software Test Engineers and self

5. Collect the queries related to the requirements and get them resolved by the business person (e.g. the client, business analyst, product manager or project manager) assigned to the project

6. Plan, organize and lead the testing kick-off meeting

7. Scope the required tests

8. Design the required test strategy in line with the scope and organization standards

9. Create the software test plan, get it reviewed and approved/ signed-off by the relevant stakeholders

10. Evaluate and identify the required test automation and test management tools

11. Estimate the test effort and team (size, skills, attitude and schedule)

12. Create the test schedule (tasks, dependencies and assigned team members)

13. Identify the training requirements of the Software Test Engineers

14. Identify any test metrics to be gathered

15. Communicate with the client or on site/ offshore team members, as required

16. Review the test cases and test data generated by the Software Test Engineers and get them to address the review comments

17. Track the new/ updated requirements in the project and modify testing artifacts accordingly

18. Determine, procure, control, maintain and optimize the test environment (hardware, software and network)

19. Get information on the latest releases/ builds from the development team/ the client

20. Create and maintain the required test automation framework(s)

21. Administer the project in the test management system

22. Administer the Application under test (e.g. add users for the tests), as required

23. Assign tasks to the Software Test Engineers based on the software test plan

24. Check the status of each assigned task daily and resolve any issues faced by the team members with their tasks

25. Ensure that each team member is optimally occupied with work (i.e. each Software Test Engineer should not be too overloaded or too idle)

26. Re-assign the testing tasks, as required

27. Track the assigned tasks with respect to the software test plan and the project schedule

28. Review the test automation created by the Software Test Engineers and get them to address the review comments

29. Own and maintain the test automation suite of the project

30. Schedule and execute the test automation on the project

31. Review defect reports  and assign valid defects to the relevant developer/ development manager

32. Assign returned defect reports and assist the concerned Software Test Engineer, as required

33. Ensure the resolved defects are re-tested

34. Consolidate and report test results to the concerned stakeholders

35. Be approachable and available to the Software Test Engineers, as required by them

36. Update the software test plan, as required

37. Ensure that the test cases are updated by the Software Test Engineers, as required

38. Ensure that the test automation is updated based on the updated test cases

39. Gather the decided test metrics

40. Escalate and obtain resolution of the issues related to the test environment and team

41. Plan, organize and lead team meetings and ensure action is taken based on the team discussions

42. Plan and organize training for the Software Test Engineers

43. Review the status reports of the Software Test Engineers

44. Review the time logged by the Software Test Engineers for various activities

45. Report the status to the stakeholders (e.g. the client, project manager/ test manager and the management)

46. Keep the Software Test Engineers motivated

47. Improve the test process based on the suggestions by others and own judgment

48. Manage own energy level and time

Read On 0 comments

Benefits of Automation Testing with QTP

(An Article for beginners and fresher testers)

There are many reasons to choose the option as automation testing since there are many drawbacks which can be noticed while testing the applications. Testers need to put lots of efforts in testing manually the whole website and manual testing is time consuming and dreary task. Sometimes it’s get difficult to test each and every feature in the application in the time given. Therefore, there are high chances of leaving crucial bugs untested from the application.

Software Testing process can take can be done with fast process with the help of Quick Test Professional. Testing can be performed with the created scripts in the QTP and testers can easily run the scripts whenever testing is required. Changes can also be done in the tests if change in the functionality done. There are many benefits of automating your testing application with QTP like it detects all the objects, input data, mouse moments, GUI objects. This process is really effective and fast as compare to the manual testing.

Major benefits of automation testing with QTP are discussed below:

  • Automating your application can save huge amount of time which gets spent by doing manual testing. And this is best and fast process to perform the testing.
  • QTP is reliable tool and there is no chance of human error.
  • One of the best benefits is repeatable; tester can easily test the application for repeated executions.
  • Hidden information can be easily come out with the help of programming done in the QTP.
  • Every feature in the application can be tested with the help of QTP and extensive testing can be performed with by automating all the features.
  • Another benefit of the automation with QTP is that tests are reusable and changes can also be done.

Automation testing can be performed if the application is huge and time is less. QTP is one of the renowned functional automation tools and there are companies who are really relying on this tool.

Guest Article by Mandeep Singh

Read On 0 comments

How to be a Good Tester?

(An Article for beginners and fresher testers)

Every tester wants to know the answer for the above question. There are many other skills which really matters apart from having technical skills. Personal talents surely helps tester to show a good talent in the team itself. There are few lessons which I would like to share with you from my experience in the testing career:

  • Read Books – Like Lessons Learnt in Software Testing, Perfect Software and other illusions in Software Testing, Testing computer software, etc.
  • Be open with the development team and if they want you test the application before release then make sure you perform the testing cycle and give the proper feedback.
  • Make sure you design and send the test cases to the Business Analyst for the review including all the scenarios, positive and negative test cases. They can review the test cases and send you for the approval or they might tell you add the more functionality if you have missed it.
  • Testers normally report the bugs openly in the defect tracking tool that can really create the problems with the developers. Tester should personally talk to the developers after logging the bugs and give them the reason why you have logged it. Ask them what is the cause of this issue and what can be the impacted areas?
  • Tester should have some programming knowledge and this would really help in the process of testing.
  • Testers should have good knowledge on the testing tools and keep updating him with the help of tutorials available online and not to depend on any person or company to give you the trainings. Tester should at least master the functionality tool like in QTP and one in load testing like Load Runner or VSTS.
  • Application and domain knowledge is very significant for the testers to know and understand deeply.
  • Tester should be good in preparing the reports since this is the most crucial and important part for the testers to perform and send the appropriate reports after the testing. Tester should mention each and every thing clearly.
  • Testers should be updated with the all the files/documents/Specs since there are many times when changes gets done in the application. Testers should be aware of the testing environment, tools and with the database to perform well organized testing.

Guest Article by Mandeep Singh

Read On 1 comments

-