Showing posts with label Pragmatic Software. Show all posts
Showing posts with label Pragmatic Software. Show all posts

Monday, July 19, 2010

Pragmatic Software is Now SmartBear Software

Pragmatic Software is Now SmartBear Software

You may have heard of the other sister company, the original Smart Bear Software, the peer code review company that created CodeCollaborator. The new SmartBear now includes the old Smart Bear and of course AutomatedQA, which is well known for its TestComplete automated testing and AQtime performance profiling tools. (You may also know that TestComplete works exceptionally well with SoftwarePlanner for test case management).

How will this benefit our users?

For one, our community of users has grown to more than 75,000 software developers and testers with the formation of the new company. We look forward to helping you take advantage of this much larger SmartBear community for expert advice, more support, knowledge sharing and of course improved software quality. Keep an eye out as we start to share tips and tricks, white papers, and other best practices that we hope will help you produce better software.

The combined company is also much better equipped to push product development forward. We are already working on a bunch of new ideas that will not only make it easier for our products to work together, but also put great new functionality in the hands of our users. Stay tuned – you will hear much more from us about automated testing, test management, code review, performance profiling, and development management.

Why did we change our name?

As AutomatedQA, Smart Bear Software and Pragmatic Software worked together to become one company, we had to select a name that we felt reflected our brand values: to be community-focused and offer innovative tools that are highly functional and at the same time actually affordable. Also, now that we have tools that support the immediate needs of both, developers and testers, we needed a name that wasn’t tied to one particular type of product. So we and our sister companies chose the name of one of our very successful existing brands to represent us all going forward. We also think the name is a lot more fun and interesting than using two or three letter acronyms. We hope you like our decision!

Here’s the new logo:

What do you think? Just a few minor adjustments of the original Smart Bear logo, which we thought was pretty cool to begin with as well.

Visit our existing Community page to learn how you can follow us and communicate and share with one another as we continue to add to our products, enhance our web site, and grow our community involvement.

If you want more details regarding the announcement, click here, and stay tuned for some exciting product news in the days and weeks ahead.

Are you curious about all the other tools that are now part of the SmartBear family? Ever needed to increase your test coverage or find those annoying performance issues or memory leaks? Or even find issues before they become bugs through fast and pain-free code review?

Tell your friends, give them a try and check out any of our tools for free:

What’s your take on the New SmartBear? Let us know, leave us a comment, Tweet us or drop us a line.


Monday, December 21, 2009

The Seven Habits of Highly Effective Testers

Published in 1989, The Seven Habits of Highly Effective People, written by Stephen R. Covey has helped millions establish great habits for achieving true interdependent effectiveness in their life and their jobs. This article discusses the 7 habits, framing the habits for highly effective testers. Below are the 7 habits:

  1. Be Proactive
  2. Begin with the End in Mind
  3. Put First Things First
  4. Think Win/Win
  5. Seek First to Understand, Then to be Understood
  6. Synergize
  7. Sharpen the Saw

Habit 1 - Be Proactive
A tester's goal in any software project is to ensure that the software is delivered with high quality. When software projects fail due to poor quality, you can either be proactive or reactive when analyzing what caused it. If you are reactive, you will blame other people and circumstances for problems or obstacles. If you are proactive, you will take responsibility for the failure and find ways to correct it in future projects. Upon completion of every project, your team should do a "post mortem" or "retrospective" where you openly discuss things that were done successfully in the project and things that were done poorly. Below are some ideas for being proactive on future projects:

  • Be Responsible for Great Requirements - Don't blame others for poor requirements. Instead, work with the team to fully analyze the requirements to ensure they are complete, accurate and testable.
  • Analyze Traceability - Creating a traceability matrix of test cases for each requirement allows you to analyze the test cases for coverage, testability, and completeness. Proactively hold team meetings to review your test cases to ensure you have fully understood the requirement and have adequate test coverage. Post your test cases for the development team to review before coding begins, this will reduce rework and QA time.
  • Communicate Effectively - During testing, it is imperative that everyone knows the status of the testing effort. Communicate daily status via email or a discussion forum. Include metrics like defect counts, requirement coverage, number of test cases run, passed, failed, and awaiting run, etc.
  • Describe Defects Effectively - When creating defects, spend time creating a good defect description, steps to reproduce and expected results. Include screen shots and as much information as needed to fully reproduce the issue. This will reduce QA rework.

Habit 2 - Begin with the End in Mind
Your end goal for a software project should be to deliver high quality software that meets the needs of the client. Before coding begins, you should make a list of success criteria that you judge the project on. For example, your success criteria may be that the software produces specific results, has no known defects (or a small number of low severity defects), is well documented, is easy to use, etc. By defining the success criteria up front, you can objectively evaluate whether the project met the criteria or not. Solicit help from all team members (project managers, product managers, testers, automation engineers, developers, documentation specialists, etc.) when defining the success criteria. By getting a team perspective of the success criteria, you will have better and more measurable criteria and you will get much better buy-in from the team.

Habit 3 - Put First Things First
Prioritizing your work effort is critical. You must apply effort to the most important things first, followed by less important things. For example, everyone agrees that negative testing is important to ensure that software gracefully handles scenarios where the user tries things that are not normally done and it was not designed to do. But when stacked up against positive testing, negative testing is definitely less important. So begin your testing effort by testing the software to ensure it works as designed and test it vigorously for this. Once that effort has been completed, then perform your negative testing (testing bounds, invalid data entry, overflow, injection, etc.).

Habit 4 - Think Win/Win
In many organizations, development and testing teams play a blame game and create tension between the teams. This can be very disruptive and can greatly affect the quality of the software project and the user experience. The development and testing teams should have a common goal -- to ensure that the client receives the software with the highest of quality. If this is a unilateral goal of the team, it makes sense for all team members to provide help and encouragement to each other so that when the software is shipped with high quality and the client is happy, everyone on the team basks in the joy of a happy client. If you want to encourage an environment of trust, respect and foster an win/win team, here are a few tips:

  • Share Knowledge - Don't hold your knowledge to yourself, share it with others.
  • Socialize - Eat lunch with members in different roles in your company. Learn more about them, take a general interest in their hobbies and personal goals.
  • Encourage Others - Offer congratulations and compliments to team members that you see are doing a great job. Tell your (and their) manager how well you think they are doing. Tell them how much you appreciate their efforts.
  • Help Struggling Team Members - If you see team members struggling, jump in and offer to help. If you offer, follow through and ensure they get the help they need. You may need help in the future so offering help can foster a win/win relationship for you in the future.

Habit 5 - Seek First to Understand, Then to be Understood
Many of us have a bad habit of blocking out a conversation and not listening because we so desperately want our opinion to be heard. Every tester and team member has a different experiences, different perspectives and motivations. Before you can solve any problem, it is important to first listen intently and diligently to fully understand the problem. Once you feel you have all the facts, solicit ideas for multiple solutions. Having several options can provide better discussions and allows team members to tweak initial solutions into solutions that are more far reaching and solve the problem in a more direct way. If you disagree with an approach, don't attack the person that offered the approach. Instead, explain based on your past experiences why you think there might be a better approach.

Habit 6 - Synergize
Team collaboration is the key to a synergized team. A synergized team is made up of divergent team members that have different strengths, different backgrounds and different perspectives. Encourage these differences but provide your team with tools
that allow you maximize their effectiveness. Highly collaborative teams communicate with each other by sharing their calendars, posting their statuses into discussion forums so that everyone is aware of what the other is doing and accomplishing. These teams keep track of all tasks they work on each day, the number of hours worked, the number of hours remaining and variances to plan. They also share documents that illustrate best practices and produce white papers that teach others what they have learned.

Habit 7 - Sharpen the Saw
Productive testers see the need to continue honing their skills and love learning new techniques, best practices and approaches. They have a thirst for knowledge, reading every testing book they can get their hands on. They learn how to make their jobs easier -- by automating test cases and applying best practices that reduce QA time and increase software quality. They stay in touch with the testing community by visiting testing sites like Sticky Minds, QA Guild and others. They also know when to have fun. They recharge their batteries by taking great vacations and by having outside hobbies and activities.

Helpful Resources
Below are some helpful resources and templates to aid you in developing software solutions:

Enabling Team Collaboration with Discussion Forums

Teams keen on improving team communication and collaboration can utilize discussion forums to ensure all team members are communicated with. This newsletter discusses:

  • Improving requirements via discussion forums
  • Improving coding via discussion forums
  • Documenting retrospectives via discussion forums
  • Where to find discussion forum tools

Improving Requirements via Discussion Forums
Software projects can be completed more quickly by collecting solid requirements because re-work can be minimized. A key to collecting solid requirements is to have all stakeholder review the requirements. Stakeholders includes product management, project management, programming and quality assurance team members. Once a requirement is created and ready for review, use discussion forums to communicate this to the stakeholders.

As the stakeholders review the requirement, they can post their comments, questions, and concerns via the discussion forum. Things stakeholders should look for when reviewing requirements are completeness, correctness, adherence to your existing architecture, and testability. By keeping these discussions in a discussion forum, everyone is involved in the discussions and a complete history of questions, issues and answers are documented for later review. Below is an example of someone asking a clarifying question about a requirement and another team member providing guidance:

Improving Coding via Discussion Forums
When in the coding phase, it is wise to create a discussion forum for the release you are working on. Teams can use discussion forums to ask clarifying questions regarding requirements and test cases. Teams can also post a brief summary each day with their status. This can include a short description of code modules affected in each day's coding effort, defects fixed, etc. Below is an example that shows that the developer is posting his status for the day, identifying code modules changed and defects fixed:

Documenting Retrospectives via Discussion Forums
Once a software project is completed, it is important to document what went right and what went wrong with the project -- this is called a retrospective. Below is an example of a retrospective that was posted via a discussion forum:

Where to find Discussion Forum Tools
The screen shots above were from Software Planner (
http://www.SoftwarePlanner.com). If you would like to see how Software Planner's discussion forum tool works, navigate to http://www.pragmaticsw.com/GuidedTours/Default.asp?FileName=DiscussionBoard. If you wish to find free discussion forums, here are a few:

1. Google Groups - http://groups.google.com
2. Yuku -
http://www.yuku.com
3. My Free Forum -
http://www.myfreeforum.org

Helpful Templates
Below are some helpful templates to aid you in developing software solutions on-time and on-budget: