Monthly Archives: January 2012

Smoke Testing

When I joined my first organisation and first project, I was put into testing by my manager. The idea behind making me a part of the testing team was to get me familiar with the functionalities in a better manner which would help me understand and work with the application better.
Slowly I started getting familiar with terms like System testing,Functional Testing,Load Testing,Regression Testing etc.But the testing term that made me curious was “Smoke Testing”. It was almost everyday when I used to hear the same term again and again and sentences like “Lets do the smoke testing”,”We have to finish the smoke in 20 mins”,”We have a new build in place,so we need to carry out a smoke testing” were common. I started getting more and more curious and thought why do they call it “Smoke Testing” when there is no smoke at all? Is it something related to cigarettes? And finally I got the answer through the most trusted/beloved/loyal/awesome friend of any software professional – GOOGLE 🙂 :). The description that why it is called Smoke Testing was as interesting as the name itself. They have taken this name from an ancient testing process where wooden boxes were tested for holes by filling them up with smoke.If smoke comes out from any leakage present in the box,they used to mend it. It also refers to tests made to closed systems of pipes to test for unseen leaks.
So when we go for this Important Testing Process everytime we have some change in the system or a new enhancement gets added, we should also know what are the things those should be tested during the smoke test. At the same time it is also important to decide what are to be put in the smoke testing process and what are to be excluded.

What is done and how a Smoke Test is implemented:

In general, to implement smoke tests/smoke testing procedures, the test team prepares a set of test cases those are executed everytime a new release or build is provided from the development team. These set of tests are used to test the major functional areas of the application. They generally  do not test in detail/ in depth by going to the low level details of the system. Rather they are high level tests those test that the overall functionality is working fine.
It is a good practice to make the developement team aware of the functionalities tested during the Smoke Test process to ensure quality awareness.

Now how do you determine what to include and what to exclude in a smoke testing process? The following points might be helpful for taking the decision.

– First of all decide that what are the critical/main/important/’most frequently used by users’  functionalities  those need to be working.
– Then look into the types of changes that have taken place since the last testing process/test cycle and what you need to cross check again to ensure that these changes as well as the other modules  which might get affected by these changes are working fine. In testing terms we call it “to check whether any of the changes have any regression impact or not”.
–  Finally, check some other areas in the system where a more detailed check is necessary which a tester should perform going beyond the steps mentinoed in the testcase. Of course this action needs to be prioritised as there might be a lack of time.

3 Major characteristics of Smoke Testing

– It generally follows an end-to-end testing process for the system. Testers should focus on stressing/loading the application to find the errors/bugs which may result in malfunctioning of the application further.
– Smoke Testing should not be exhaustive but it should be able to find out major defects.
– The main idea behind the Smoke Testing process is to make sure that the main functionalities of the application are working fine and the system is stable enough for further thorough testing process.

Advantages of Smoke Testing

1. It minimizes the risks associated with integration: It has always been a headache for developers and testers when 2 separate modules worked on by different people are combined/integrated. It happens quite often that the integrated code does not work properly.The daily build and smoke testing process manage to make the integration problems small and manageable and thus prevent problems with the integration process.

2. It reduces the risk of low quality: Timely smoke tests ensure that the system does not run down or fall into a state where there would be quality problems which would take more time to be fixed.

3. Uncover major problems: The probability of finding bugs/major bugs increases with a well designed smoke test. It also helps a tester to uncover defects/bugs earlier in the testing cycle.

4. Saves money and time: With all the above 3 advantages,a good smoke test ensures that a lot of cost and time is saved.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
decision making

Nature of Decision Making

decision makingDecision making is believed to be an art than a science. The reason is that very fundamental decisions are taken at the planning stages which are difficult to conceive and later implement.

One cannot lay down a structure and say this is how you can solve a problem. In fact the nature of decision, the circumstances in which these are taken and the variety of ways in which these can be implemented are so spread that we can pinpoint certain aspects to think in decision making. The endeavor of this is to build a structure around decision making so that one can understand its nature, function and implementation more clearly and help in decision making.

Some of the guidelines of decision making are listed below: Continue reading Nature of Decision Making

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Content Management Evolution

What is Content Management System?

A Content Management System is a tool which allows a various & variety of centralized and de-centralized staffing to create, edit, manage and finally publish various types of content such as text, graphics, video, documents etc.

CMS supports or allows the creation, management, distribution, publishing, and discovery of corporate information. It covers the various lifecycle of the pages on your site i.e. from providing simple tools to create/manage the content, tools for publishing the content and finally archiving. It sometimes also provides the ability of managing the structure of the site, the appearance of the published pages, and the navigation provided to the users.

There are a wide variety of business benefits which can be achieved by implementing a CMS. Few examples are;

– Improved & increase site navigation & site flexibility.

– Greater consistency and streamlined authoring process

– Support faster turnaround times for pages

– Increase security and reduce duplication of information

– Integrate with Social Media

– Easy to Monetize & greater capacity for growth and reduce site maintenance cost.

A Small Case study;

Some years ago, a software developer working in a company used to have personal web page space and to add the pages he had to use a tool called “GBuilder”. GBuilder allows anyone to create a web page from a template and put it up on our Web server but it didn’t require any knowledge on HTML and you could build a page quickly and effortlessly.

The same company after this saw that this could be useful within an organization. For example if a Public relation department needs to get a press release up on the Website, often it has to go through numerous steps like; Writing the release and getting it approved followed by   Send the release out on the wire and then Send the release to the Web group. After this the Web group converts the document to HTML and puts it on the Website. Larger companies have some sort of staging server where Web documents sit until they are pushed live and if a press release has sensitive information then it can’t be released to the Web group until it has been sent to the wire but often upper management wants it on the Website immediately

Thus such situation causes a lot of stress for both the Web group and the Public Relation team. It would be a lot easier if the Public relation team could post the release to the Web at the same time that they post it to the wire services. But often they don’t know HTML or don’t have access to the Web site and so this is where a content management system comes into play.

When do we need to use Content Management System (CMS)?

Websites need content management if;

–  There is a lot of content (1,000 pages plus)

–  There is a high velocity of content change (a change a day or more)

–  If the content needs to change quickly (needs to be live in minutes or hours, not days or weeks)

–  If there are a lot of content contributors (20+), or if the company needs to have an archive of previous versions of the site for regulatory or legal reasons

Simple Guidelines on why we choose a perfect CMS:

1. Determine the purpose of the Content Management System and what we expect to gain from it. Choose your CMS based on your site’s primary function for example; if blogging is the main focus of your site then use a blog platform and if images and video are the main focus then choose a CMS that either has great support for media built-in or has great plug-in for enabling those functions. Also if your site is going to focus on an online store then the platform you choose needs to be able to seamlessly integrate that online store without a extra work.

2.Figure out what functionality you require from the CMS i.e. some CMS platforms have limited plug-ins, so the list of typical features of some of the CMS platforms can be Captcha, Tag Clouds, Polls, Ratings, Wysiwyg Editor, Forums and Gallery.

3. It is quite advisable to choose particular CMS that is easy-to-use and highly customizable as per business requirement of online portal market player. On the other hand, the CMS should so perfect that provides complete flexibility which led to great accessibility.

4. A good CMS comes with multiple websites and languages support which a person can easily target different markets without any language issue as most people go for online CMS to create, edit, manage, delete as well as organize web pages.

5. One of the major advantages of choosing a CMS is that it simplifies the updating and management of a website. So the pages it produces should also be simple and shouldn’t be a lot of extra code for unused functionality in the final page code. All that serves to do is slow the load times for the page and increase the likelihood that something will render wrong or throw an error.

6. Select the CMS that best suits you and always check how easy it is to move your website to another host without retaining the ability to edit your own web site. Some CMS products are dependent on you hosting your web site with a specific hosting company, if you ever need to move your web site you may need to have a whole new website design done for you.

7. Try to figure out how your website and CMS content is protected and what happens if there is a problem with the server that hosts your web site. Does the company provide backups and does this backup also cover a full restore of your web site if something goes wrong, or does it just restore the CMS but not your content.

Some common advantages of a CMS:

– Decentralized maintenance i.e. based on a common web browser. Editing anywhere, anytime removes bottlenecks.

– People with average knowledge of word processing can create the content directly. No HTML knowledge needed.

– The Users are assigned some roles and permissions which prevent them from editing content that they are not authorized to change.

– Central storage system which allows the content to be reused in many places on the website and formatted for any device (web browser, mobile phone/WAP, PDA, print).

– Dynamic content encourages faster updates, generates accountability for authored content (logs) and cooperation between authors.

– Content scheduling and content publication can be time-controlled and sometimes hidden for later use or require user login with password.

References;

  1. http://www.noupe.com/php/choosing-cms-tips.html
  2. http://ezinearticles.com/?Tips-to-Choose-Right-Content-Management-System-%28CMS%29-for-Your-Project&id=5130581
  3. http://growthspur.wordpress.com/2010/01/21/tips-for-picking-a-content-management-system-for-your-site/

Thanks,
Pinaki Mohapatra
Mindfire Solutions

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

18 things to keep in mind while testing any application

In the world of software QA testing, mastering the best practices is the key to success. This article presents 18 essential tips for QA professionals. From thorough test result analysis to maximum coverage and negative scenario testing, it covers a range of critical aspects. It emphasizes the importance of dividing applications into modules, early test case preparation, and involving testers from the start. The significance of regression testing, performance testing, and thinking beyond requirements is highlighted. Effective communication, prioritization, and continual learning round out the best practices, ensuring QA testers excel in their field and deliver high-quality software products.

1) Thorough Analysis of the Test Results:
As a software QA testing professional, it is crucial to go beyond reporting bugs and provide a comprehensive analysis of the test results. Error logs can reveal valuable insights into the nature and root causes of defects. By including this analysis in the bug report, testers make it easier for developers to understand and address the underlying issues. This not only expedites the bug-fixing process but also fosters effective collaboration between testers and developers, leading to improved software quality. problem.

2) Attain Maximum Coverage:
While achieving 100% test coverage may be impractical, testers should strive to cover as many combinations and scenarios as possible. By employing a systematic and strategic approach, testers can maximize test coverage. This involves identifying key functionalities, critical paths, and representative data sets to ensure that the most critical aspects of the software are thoroughly tested. Additionally, testers can leverage techniques such as equivalence partitioning and boundary value analysis to optimize coverage and prioritize test cases.

3) Divide and Conquer:
To achieve maximum test coverage, it is beneficial to divide the application into smaller modules and write separate test cases for each module. This approach facilitates focused and detailed testing of individual components, ensuring comprehensive coverage across the entire system. By breaking down the testing effort into manageable units, testers can effectively address complexities, identify defects, and maintain a high level of quality throughout the software development lifecycle.

4) Emphasize Negative Scenarios:
In addition to testing positive scenarios, it is crucial to include test cases for negative scenarios or invalid conditions. This ensures that the software behaves correctly when exposed to unexpected inputs or error-prone situations. By deliberately testing edge cases, boundary conditions, and invalid inputs, testers can validate the system’s robustness, error-handling capabilities, and adherence to specifications. Thorough negative testing helps uncover vulnerabilities and ensures that the software remains stable, secure, and user-friendly in all scenarios.

5) The Right Mindset
Approach QA testing with the mindset of discovering defects and identifying areas for improvement. Instead of assuming the software is defect-free, maintain a critical perspective and actively seek out potential bugs. This mindset encourages a thorough examination of the software and motivates testers to conduct comprehensive tests, resulting in higher-quality products. A vigilant and inquisitive approach to testing helps uncover issues that may have otherwise gone unnoticed, promoting a culture of continuous improvement and defect prevention.

6) Early Test Cases preparation :
To optimize the testing process, it is beneficial to start test case preparation during the analysis and design phase. Involving testers early on enables a better understanding of the requirements and facilitates the creation of comprehensive test cases. By actively participating in requirements discussions, testers can gain insights into the system’s intended functionality, identify potential test scenarios, and ensure that test cases align with the expected outcomes. Early test case preparation contributes to improved test coverage and enhances the overall effectiveness of the testing effort.

7) Ready with Test Cases before the completion of development :
Rather than waiting for the completion of development, testers should aim to have test cases ready in advance. Providing developers with test cases during the development process allows them to analyze and validate their work against the expected outcomes. This proactive approach enables early defect detection, smoother collaboration between testers and developers, and reduces rework efforts. It also enhances the overall development process by ensuring that quality considerations are integrated from the outset.

8) Address “Regression” effectively:
Regression testing plays a critical role in ensuring that modifications or enhancements to the software do not introduce new defects or cause regressions in existing functionality. By including regression test steps within test cases, testers can perform quick regression checks during system testing itself. This approach saves time and effort by identifying and addressing regression issues early on, minimizing the risk of functional regression and maintaining the stability of the software.

9) Test the “Performance”:
For applications where response time is crucial, thorough performance testing is essential. Testers should design and execute performance tests to assess the application’s behavior under various load conditions, stress scenarios, and unfavorable environments. By simulating realistic workloads and analyzing performance metrics, such as response times, resource utilization, and scalability, testers can identify performance bottlenecks, optimize system performance, and ensure a seamless user experience.

10) Leave full spectrum Testing to QA:
To maintain objectivity and ensure a fresh perspective, it is generally advisable for testers not to test the code they have developed themselves. When individuals test their own code, there is a higher likelihood of overlooking mistakes or biases due to familiarity. Instead, encourage collaboration among developers and testers, enabling independent verification and validation of the software. This approach promotes rigorous testing and helps identify defects that may have been overlooked by the developer.

11) Think beyond Requirements:
While testing based on specified requirements is essential, testers should also explore scenarios that may not be explicitly mentioned in the documentation. By thinking creatively and applying domain knowledge, testers can identify potential risks, edge cases, and scenarios that may not have been considered during requirements gathering. This broader approach to testing helps uncover hidden defects, enhances software robustness, and contributes to a more comprehensive testing strategy.

12) Leverage Past Experiences and Data:
Learning from past experiences is invaluable in software QA testing. Testers can refer to historical data, statistics, graphs, and previous test results to identify defect-prone areas, determine common patterns, and allocate testing efforts accordingly. By leveraging this knowledge, testers can focus on critical areas, allocate resources effectively, and adapt their testing approach based on past trends and insights. This data-driven approach enhances the efficiency and effectiveness of the testing process.

13) Continuous Learning:
The field of software QA testing is continuously evolving, and testers should actively seek opportunities for learning and skill development. Throughout the testing process, testers encounter new terms, concepts, and technologies. Keeping a record of these learnings and documenting them in a personal knowledge base helps build a repository of valuable insights. These learnings can contribute to the preparation of test closure reports, facilitate knowledge sharing, and ensure continuous improvement in testing practices.

14) Early Involvement of the Testing team:
To achieve optimal results, it is advisable to involve testers from the early stages of the software development lifecycle. Engaging testers during requirements analysis and design phases allows them to gain a deep understanding of the application’s functional and non-functional aspects. This early involvement facilitates proactive test planning, identification of potential testing challenges, and the formulation of effective testing strategies. By participating in requirements discussions and design reviews, testers can contribute their expertise and ensure the development process is aligned with quality goals.

15) Share Best Practices:
To foster a culture of excellence and continuous improvement, testers should share their best practices with other QA testing professionals. By sharing insights, techniques, and lessons learned, testers can contribute to the growth and development of the testing community. This exchange of knowledge promotes collaboration, inspires innovation, and ensures that industry-wide best practices are shared and implemented consistently.

16) Effective Communication and Collaboration:
Testers should actively engage in discussions and maintain effective communication with developers, business analysts, and other stakeholders. Direct interaction helps clarify requirements, resolve conflicts, and ensure that everyone is on the same page regarding the expected behavior of the software. When conflicts or misunderstandings arise, timely face-to-face discussions or written communications (such as emails) should be used to address and resolve them. Effective communication fosters collaboration, reduces misunderstandings, and ensures a shared understanding of quality objectives.

17) Prioritization and Risk Management:
To optimize testing efforts, testers should prioritize their work based on risk analysis and project constraints. By identifying critical functionalities, high-risk areas, and potential showstoppers, testers can allocate their resources effectively. Prioritization ensures that testing efforts are focused on the most critical areas, reduces the risk of major defects slipping through, and facilitates risk-based decision-making throughout the project lifecycle..

18) Effective Bug Reporting:
Writing clear, concise, and detailed bug reports is crucial for effective communication between testers and developers. A well-crafted bug report includes not only the symptoms and steps to reproduce the bug but also provides the impact of the bug on the application. Testers should analyze the bug, include possible causes, and provide any additional information that aids in reproducing and fixing the issue. Well-documented bug reports expedite the debugging process, enable efficient collaboration between testers and developers, and ensure that issues are resolved accurately and promptly.

By implementing these practices, software QA testing professionals can enhance their effectiveness, improve the overall quality of the software, and contribute to the success of projects.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •