What makes a good test engineer?
A good test engineer has a 'test to break' attitude, an
ability to take the point of view of the customer, a
strong desire for quality, and an attention to detail.
Tact and diplomacy are useful in maintaining a
cooperative relationship with developers, and an ability
to communicate with both technical (developers) and
non-technical (customers, management) people is useful.
Previous software development experience can be helpful
as it provides a deeper understanding of the software
development process, gives the tester an appreciation
for the developers' point of view, and reduce the
learning curve in automated test tool programming.
Judgment skills are needed to assess high-risk areas of
an application on which to focus testing efforts when
time is limited.
What makes a good Software QA engineer?
The same qualities a good tester has are useful for a QA
engineer. Additionally, they must be able to understand
the entire software development process and how it can
fit into the business approach and goals of the
organization. Communication skills and the ability to
understand various sides of issues are important. In
organizations in the early stages of implementing QA
processes, patience and diplomacy are especially needed.
An ability to find problems as well as to see 'what's
missing' is important for inspections and reviews.
What makes a good QA or Test manager?
A good QA, test, or QA/Test(combined) manager should:
• be familiar with the software development process
• be able to maintain enthusiasm of their team and
promote a positive atmosphere, despite
• what is a somewhat 'negative' process (e.g., looking
for or preventing problems)
• be able to promote teamwork to increase productivity
• be able to promote cooperation between software, test,
and QA engineers
• have the diplomatic skills needed to promote
improvements in QA processes
• have the ability to withstand pressures and say 'no'
to other managers when quality is insufficient or QA
processes are not being adhered to
• have people judgement skills for hiring and keeping
• be able to communicate with technical and
non-technical people, engineers, managers, and
• be able to run meetings and keep them focused
What's the role of documentation in QA?
Critical. (Note that documentation can be electronic,
not necessarily paper.) QA practices should be
documented such that they are repeatable.
Specifications, designs, business rules, inspection
reports, configurations, code changes, test plans, test
cases, bug reports, user manuals, etc. should all be
documented. There should ideally be a system for easily
finding and obtaining documents and determining what
documentation will have a particular piece of
information. Change management for documentation should
be used if possible.
What's the big deal about 'requirements'?
One of the most reliable methods of insuring problems,
or failure, in a complex software project is to have
poorly documented requirements specifications.
Requirements are the details describing an application's
externally-perceived functionality and properties.
Requirements should be clear, complete, reasonably
detailed, cohesive, attainable, and testable. A
non-testable requirement would be, for example,
'user-friendly' (too subjective). A testable requirement
would be something like 'the user must enter their
previously-assigned password to access the application'.
Determining and organizing requirements details in a
useful and efficient way can be a difficult effort;
different methods are available depending on the
particular project. Many books are available that
describe various approaches to this task. (See the
Bookstore section's 'Software Requirements Engineering'
category for books on Software Requirements.)
Care should be taken to involve ALL of a project's
significant 'customers' in the requirements process.
'Customers' could be in-house personnel or out, and
could include end-users, customer acceptance testers,
customer contract officers, customer management, future
software maintenance engineers, salespeople, etc. Anyone
who could later derail the project if their expectations
aren't met should be included if possible.
Organizations vary considerably in their handling of
requirements specifications. Ideally, the requirements
are spelled out in a document with statements such as
'The product shall.....'. 'Design' specifications should
not be confused with 'requirements'; design
specifications should be traceable back to the
In some organizations requirements may end up in high
level project plans, functional specification documents,
in design documents, or in other documents at various
levels of detail. No matter what they are called, some
type of documentation with detailed requirements will be
needed by testers in order to properly plan and execute
tests. Without such documentation, there will be no
clear-cut way to determine if a software application is
'Agile' methods such as XP use methods requiring close
interaction and cooperation between programmers and
customers/end-users to iteratively develop requirements.
The programmer uses 'Test first' development to first
create automated unit testing code, which essentially
embodies the requirements.
What steps are needed to develop and run software tests?
The following are some of the steps to consider:
• Obtain requirements, functional design, and internal
design specifications and other necessary documents
• Obtain budget and schedule requirements
• Determine project-related personnel and their
responsibilities, reporting requirements, required
standards and processes (such as release processes,
change processes, etc.)
• Identify application's higher-risk aspects, set
priorities, and determine scope and limitations of tests
• Determine test approaches and methods - unit,
integration, functional, system, load, usability tests,
• Determine test environment requirements (hardware,
software, communications, etc.)
• Determine testware requirements (record/playback
tools, coverage analyzers, test tracking, problem/bug
• Determine test input data requirements
• Identify tasks, those responsible for tasks, and labor
• Set schedule estimates, timelines, milestones
• Determine input equivalence classes, boundary value
analyses, error classes
• Prepare test plan document and have needed
• Write test cases
• Have needed reviews/inspections/approvals of test
• Prepare test environment and testware, obtain needed
user manuals/reference documents/configuration
guides/installation guides, set up test tracking
processes, set up logging and archiving processes, set
up or obtain test input data
• Obtain and install software releases
• Perform tests
• Evaluate and report results
• Track problems/bugs and fixes
• Retest as needed
• Maintain and update test plans, test cases, test
environment, and testware through life cycle
Page Numbers : 1