What a QA engineer does
- Write test plans from the requirements, specifications and test strategies
- Use versioning systems to code test scripts
- Create and perform test campaign whenever it is necessary to fit in the overall planning
- Use bug tracking database to report bugs
- Analyses test results
- Reports results to the QA manager
- Raise an alert when an important issue is likely to put in jeopardy the whole project
The practical type of job tasks and required possibilities
- Understanding of documentation of all project’s products, including the json format protocols and data interactions specification.
- Understanding of main business logic of product’s services, roles and behaviors of compounds.
- Writing and execution of functional, installation, configuration, deployment, crash, load-balancing, durability and another kind of tests for services using public documented API with bush scripting (possible the php or the Python languages can be used too) and regular cli utilities for Linux OS.
- Analyzing the results of tests and applications logs, reconstruction of behavior of main objects of business logic of the application services, seeking on misconfiguration and lacks of correspondence of real product behavior and documented specification.
What makes a good QA Engineer
Broad understanding of the product
To test efficiently a product, the QA engineer must know it well enough. This sounds obvious must unfortunately, this is often under-estimated. Knowing well the product includes also knowing how end-users expect it to work. Again this may sound obvious but remember that the biggest part in testing is black-box testing. The QA engineer must have a “customer-focus” vision.
But a good QA engineer must also know how the product is designed because the more you know the product, the better you’re able to test it. However, the QA engineer will have to analyse the design only after his black-box testplan is completed. Indeed, knowing the design can widely influence the test strategy. It is better to first write the test plan with a high-level vision, then getting more and more information to refine the testing.
Communication is an extremely important skill for a QA engineer. Of course, meetings (stand-up etc.) and status reports are part of the communication but more importantly, a QA engineer must be particularly efficient in the following tasks:
- Direct communication with both Development and Product definition teams
- Capability to communicate with technical and non-technical people
- Having the diplomacy to say “no” when a bug is considered as not fixed
- Having the diplomacy to communicate about a bug without “offensing” the developer. Developers may often feel offensed when a bug is submited. This is 100% natural. This is why the QA engineer must have the ability to “criticize without offensing”
- Do not rely on “bug tracking” database for communication! there is nothing better that a bug tracking system to create “misunderstanding” between Development and QA teams
Testing requires a lot of creativity. Bugs are often hidden and just performing the obvious positive tests will have only a few chances to actually find bugs. Hence, the QA engineer must use its creativity to figure out all the scenarios that are likely to detect a bug. In other words, the QA engineer must be able to “see beyond the obvious”.
Quality Assurance requires knowledge about software development for two basic reasons:
- Development capabilities are required to eventually code automated tests
- If you know how to develop, you have better ideas on what is “dangerous” to code, so what to test more thoroughly
Driving for results
A good QA engineer never forgets that the ultimate goal is not only to find bugs but also have them fixed. Once a bug has been found and has been “acknowledged” by the development team, the QA engineer may be required to “convince” people to fix it.
Additionally, getting a nice automation framework with smart tools does not bring anything if it does not find any bug at the end.
- Ask yourself if the automation is going to help to find more bugs and when
- Prioritize your testing tasks on the only important criteria
- How many bugs is this likely going to find?
- How major will be the found bugs (detecting thousands of cosmetic bugs is irrelevant/useless – and often easy – until all major/show-stopper bugs have been found)?
Job Description Senior Quality Assurance Engineer
Develops, publishes, and implements test plans for complex, multi-tier, distributed, applications throughout the full life-cycle of the software. Works on all ASM applications, including new and in production. Writes and maintains test automation. Publishes test results. Develops quality assurance standards. Defines and tracks quality assurance metrics such as defect densities and open defect counts.
- Defines, develops and implements quality assurance practices and procedures, test plans and other QA assessments.
- Establishes standards and best practices for the use of the Rational Unified Process (“RUP”).
- Develops automated testing systems using commercial tools, scripts and data set.
- Ensures that all items follow the change management process and are entered and tracked through the change management software.
- Works directly with appropriate ASM personnel to understand project concept, objectives and approach of software development projects.
- Act as a consultant to ASM on quality methods, processes, and tools.
- Able to work independently.
- Defines scope and objectives of all levels of QA testing.
- Participate in all aspects of testing, including functional, regression, load and system testing.
- Responsible for the overall success of testing. Manages assigned projects from IT Quality Testing through final User Acceptance Testing.
- Establishes the purpose and deliverables of the test effort.
- Provides resource planning, management and resolution of issues that impede the test effort.
- Assures the appropriate level of quality by the resolution of important defects by working with developers to ensure the software development process has an appropriate level of testing.
- Creates effective manual and automated test plans, using a variety of toolsets, including Rational Test Manager. Rational Robot, and other automated tools.
- Performs black box testing as required.
- Senior Quality Assurance Engineer
- Works collaboratively with development during all stages of projects to provide in process testing results.
- Coordinates groups of business personnel who test, evaluate and validate new functions and applications, and identify issues in software or services.
- Records and reports on testing metrics.
- Obtains final signoff for code releases to production from the appropriate Project Sponsor.
- Track and report defects using appropriate tools such as Rational ClearQuest
- Works under the general supervision of the Application Development Specialist III. This position does not supervise other personnel.
Proven success in the following job competencies:
- Analysis and Reporting
- Business Planning and Management
- Communication and Presentation
- Customer Focus and Relationship Building
- Champion for Change
- Information and Technology Proficiency
- Problem Solving and Decision Making
- Technical Industry and/or Profession Expertise
- Demonstrated ability to work well with business analysts, programmers and end users in a cross functional team.
- At least one years minimum of software test experience.
- At least one years experience testing multiple software projects simultaneously with J2EE or MS.NET applications.
- At least one years experience working with a structured software methodology and software test experience.
- Experienced user of Rational Test Manager/Robot/Requisite Pro or other automated testing and defect tracking applications.
- Experienced user of SQL to create data sets.
- Experience creating scripts for automating processes.
- Thorough knowledge and understanding of Rational Unified Process (RUP) used for the software development life cycle including requirements definition, initial application design, testing, final implementation and operations.
QA Manager Required Skills
What a QA manager does
- Planning, prioritization of all the test-related tasks (use proven project management tools such as the V-Cycle or Scrum methodology)
- Writing the test strategies
- Reviewing the test plans
- Taking the responsibility of certain designs if people have not the required competencies
- Code reviewing
- Spreading expertise and good usage of tools such as bug-tracking database or versioning systems
- Having people judgment skills to hire the right people
- Writing performance review
What makes a good QA Manager
Being a good QA engineer
Of course, a good QA Manager is first of all a good QA engineer. It requires additional skill, though.
A QA Manager must be an extremely good communicator. This includes:
- Report global status and risk analysis to top management
- Capability to communicate with technical and non-technical people
- Having the diplomacy to say “no” when global quality is not acceptable for release
Part of the communication is also the not so well appreciated “meetings”. Meetings are useful to a good organization, though.
- For large teams, privilege:
- Formal meetings
- Scheduled and iterated on a regular basis
- Production of agendas (pre-meeting) and minutes (post-meeting)
- For small teams, privilege:
- Stand-up meetings
- Not necessarily planned
- Agendas an minutes not necessarily needed
Having and spreading the “customer-focus” vision.
To have the QA engineers efficient in their work, they must have the desire to see customers happy.
Developing people in a QA team as in any team is essential. The main goal is to improve the learning curve and this can be achieved by:
- Spreading best practises you’ve learn along your whole career as QA engineer/manager
- Organizing trainings (external as well as internal)
- Working in group to share competencies
- Leaving some time to people to let them learn by themselves
Bringing out creativity in others
This can be achieved by:
- Organizing brainstorm sessions on a regular basis
- Discussing a lot with QA engineers to lead them to have the “idea” instead of exposing directly the idea (if you’ve got it before them). A good QA manager teaches the “way of thinking” before anything else
- Explaining any decision you take so that the team get the intellectual process that led to that decision
- Working in group
Motivating people is also necessary. To do that:
- Be motivated yourself
- Share your motivation to the others
- Explain why QA is an interesting job:
- Too often, people are reluctant to do QA because:
“QA = finding problems = people (dev.) don’t like me”
The good way of seeing the job is:
“QA = avoid future problems = people (dev./support/customers) like me”
- The result of QA activities is immediately seen by the end-user which is quite valorising
- Seeing a “manual operation” becoming a completely automated job is demonstrating how talented people can use machines to improve life
- Thoroughly testing a feature A is often more complex than developing the feature A. It’s then a challenging (so enhancive) task.
- Too often, people are reluctant to do QA because:
A “dream” team is a team where all people are technically very good in their job but also like to work together and appreciate each others. To improve the chances to have this happening, a QA manager shouldn’t hesitate to:
- Organize events (these do not necessarily require expensive activities!)
- Have some chats together on the working hours about non-technical subjects when the whole team is present
- Have QA people cooperating more with other teams (especially with Development team)
- Have a beer together sometime 😉
Changing for changing is a bad concept. Conversely, when something does not work, change is mandatory. The process of changing must go through 3 steps:
- Making an audit to see what’s wrong in the process (i.e. difficult to maintain very similar test scripts)
- Determine with the team what has to be changed (i.e. setup data-driven testing)
- Implement the change
In QA manager there is “manager”, which means that this includes making decisions.
- Not being overwhelmed by stress
- Not hesitating to recognize a mistake soon – it is much better than trying to workaround for years the issue
- Taking innovative (or risky) initiatives
- Not hesitating to change the processes at risk to destabilize some people if you think it is necessary
Sources about QA: