Professional Documents
Culture Documents
A: We, test engineers are engineers who specialize in testing. We create test cases, test procedures, test
scripts; execute test procedures, and test scripts; generate test data and test results; analyze standards
of measurements; evaluate the results of testing, system testing, integration testing, and regression testing.
We, software test engineers, create software test cases, software test procedures, software test scripts;
execute software test procedures, and software test scripts; generate software test data, and software
test results; analyze standards of measurements; evaluate the results of software testing, system testing,
software integration testing, system integration testing, software regression testing, and system regression
testing.
A: We, test engineers, speed up the work of your development staff, and reduce the risk of
your company's legal liability. We give your company the evidence that the software is
correct and operates properly. We also improve your problem tracking and reporting. We
maximize the value of your software, and the value of the devices that use it. We also assure
the successful launch of your product by discovering bugs and design flaws, before users get
discouraged, before shareholders loose their cool, and before your employees get bogged
down. We help the work of your software development staff, so your development team can devote its
time to build up your product. We also promote continual improvement. We provide
documentation required by FDA, FAA, other regulatory agencies, and your customers. We
save your company money by discovering defects EARLY in the design process, before failures
occur in production, or in the field. We save the reputation of your company by discovering
bugs and design flaws, before bugs and design flaws damage the reputation of your
company.
3. What is a QA engineer?
A: We, QA engineers, are test engineers but we do more than just testing. Good QA
engineers understand the entire software development process and how it fits into the
business approach and the goals of the organization. Communication skills and the ability to
understand various sides of issues are important. We, QA engineers, are successful if people
listen to us, if people use our tests, if people think that we're useful, and if we're happy
doing our work. I would love to see QA departments staffed with experienced software developers
who coach development teams to write better code. But I've never seen it. Instead of
coaching, we, QA engineers, tend to be process people.
4. What is quality?
A: Quality software is software that is reasonably bug-free, delivered on time and within budget,
meets requirements and expectations and is maintainable. However, quality is a subjective
term. Quality depends on who the customer is and their overall influence in the scheme of
things. Customers of a software development project include end-users, customer
acceptance test engineers, testers, customer contract officers, customer management, the
development organization's management, test
engineers, testers, salespeople, software engineers, stockholders and accountants. Each type of
customer will have his or her own slant on quality. The accounting department might define
quality in terms of profits, while an end-user might define quality as user friendly and bug
free.
A: Software failure occurs when the software does not do what the user expects to see.
Software fault, on the other hand, is a hidden programming error.
A software fault becomes a software failure only when the exact computation conditions are
met, and the faulty portion of the code is executed on the CPU. This can occur during normal
usage. Or, when the software is ported to a different hardware platform. Or, when the
software is ported to a different complier. Or, when the software gets extended.
A: The QA engineer's role is as follows: We, QA engineers, use the system much like real
users would, find all the bugs, find ways to replicate the bugs, submit bug reports to the
developers, and provide feedback to the developers, i.e. tell them if they've achieved the
desired level of quality.
A: Software life cycle begins when a software product is first conceived and ends when it is
no longer in use. It includes phases like initial concept, requirements analysis, functional
design, internal design, documentation planning, test planning, coding, document
preparation, integration, testing, maintenance, updates, re-testing and phase-out.
A: It depends on the size of the organization and the risks involved. For large organizations
with high-risk projects, a serious management buy-in is required and a formalized QA
process is necessary. For medium size organizations with lower risk projects, management
and organizational buy-in and a slower, step-by-step process is required. Generally speaking,
QA processes should be balanced with productivity, in order to keep any bureaucracy from
getting out of hand. For smaller groups or projects, an ad-hoc process is more appropriate. A
lot depends on team leads and managers, feedback to developers and good communication
is essential among customers, managers, developers, test engineers and testers. Regardless
the size of the company, the greatest value for effort is in managing requirement processes,
where the goal is requirements that are clear, complete and testable.
A: Generally speaking, there are bugs in software because of unclear requirements, software
complexity, programming errors,
changes in requirements, errors made in bug tracking, time pressure, poorly documented code
and/or bugs in tools used in
software development.
* Software complexity. All of the followings contribute to the exponential growth in software
and system complexity: Windows
of applications.
* Programming errors occur because programmers and software engineers, like everyone else,
can make mistakes.
life. Sometimes customers do not understand the effects of changes, or understand them
but request them anyway. And the
changes require redesign of the software, rescheduling of resources and some of the work
already completed have to be redone
A: Bug life cycles are similar to software development life cycles. At any time during the
software development life cycle errors can be made during the gathering of requirements,
requirements analysis, functional design, internal design, documentation planning,
document preparation, coding, unit testing, test planning, integration, testing, maintenance,
updates, re-testing and phase-out.
Bug life cycle begins when a programmer, software developer, or architect makes a mistake,
creates an unintentional software defect, i.e. bug, and ends when the bug is fixed, and the
bug is no longer in existence.
What should be done after a bug is found? When a bug is found, it needs to be
communicated and assigned to developers that can fix it. After the problem is resolved, fixes
should be re-tested.
12. Give me five common problems that occur during software development.
1. Requirements are poorly written when requirements are unclear, incomplete, too
general, or not testable; therefore
2. The schedule is unrealistic if too much work is crammed in too little time.
3. Software testing is inadequate if none knows whether or not the software is any good
until customers complain or the
system crashes.
4. It's extremely common that new features are added after development is underway.
For larger projects, or ongoing long-term projects, they can be valuable. But for small
projects, the time needed to learn and implement them is usually not worthwhile.A common
type of automated tool is the record/playback type. For example, a test engineer clicks
through all combinations of menu choices, dialog box choices, buttons, etc. in a GUI and has
an automated testing tool record and log the results. The recording is typically in the form of
text, based on a scripting language that the testing tool can interpret.If a change is made (e.g.
new buttons are added, or some underlying code in the application is changed), the
application is then re-tested by just playing back the recorded actions and compared to the
logged results in order to check effects of the change.
One problem with such tools is that if there are continual changes to the product being
tested, the recordings have to be changed so often that it becomes a very time-consuming
task to continuously update the scripts.
Another problem with such tools is the interpretation of the results (screens, data, logs, etc.)
that can be a time-consuming task.
A: Software Configuration Management (SCM) is the control and the recording of changes
that are made to the software and documentation throughout the software development life
cycle (SDLC).
SCM covers the tools and processes used to control, coordinate and track code,
requirements, documentation, problems, change requests, designs, tools, compilers, libraries,
patches, and changes made to them, and to keep track of who makes the changes.
Rob Davis has experience with a full range of CM tools and concepts, and can easily adapt to
an organization's software tool and process needs.
A: QA/Test Managers are familiar with the software development process; able to maintain
enthusiasm of their team and promote a positive atmosphere; able to promote teamwork to
increase productivity; able to promote cooperation between Software and Test/QA Engineers,
have the people 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; able to
communicate with technical and non-technical people; as well as able to run meetings and
keep them focused.
A: A software project test plan is a document that describes the objectives, scope, approach and
focus of a software testing effort. The process of preparing a test plan is a useful way to
think through the efforts needed to validate the acceptability of a software product. The
completed document will help people outside the test group understand the why and how of
product validation. It should be thorough enough to be useful, but not so thorough that none
outside the test group will be able to read it.
A: A test case is a document that describes an input, action, or event and its expected
result, in order to determine if a feature of an application is working correctly. A test case
should contain particulars such as a...
Please note, the process of developing test cases can help find problems in the requirements or
design of an application, since it requires you to completely think through the operation of
the application. For this reason, it is useful to prepare test cases early in the development
cycle, if possible.
A: Configuration management (CM) covers the tools and processes used to control,
coordinate and track code, requirements, documentation, problems, change requests,
designs, tools, compilers, libraries, patches, changes made to them and who makes the
changes. Rob Davis has had experience with a full range of CM tools and concepts, and can
easily adapt to your software tool and process needs.
A: This can be difficult to determine. Many modern software applications are so complex and run in
such an interdependent environment, that complete testing can never be done. Common
factors in deciding when to stop are...
21. Why do you recommend that we test during the design phase?
A: Because testing during the design phase can prevent defects later on. We recommend
verifying three things...
2. Verify the design meets the requirements and is complete (specifies all relationships
between modules, how to pass
data, what happens in exceptional circumstances, starting state of each module and how to
guarantee the state of each
module).
3. Verify the design incorporates enough memory, I/O devices and quick enough runtime for
the final product.
A: Black box testing is functional testing, not based on any knowledge of internal software design
or code. Black box testing are based on requirements and functionality.
A: White box testing is based on knowledge of the internal logic of an application's code.
Tests are based on coverage of code statements, branches, paths and conditions.
A: Unit testing is the first level of dynamic testing and is first the responsibility of developers
and then that of the test engineers.
Unit testing is performed after the expected test results are met or differences are
explainable/acceptable.
A: Parallel/audit testing is testing where the user reconciles the output of the new system to
the output of the current system to verify the new system performs the operations correctly.
A: Usability testing is testing for 'user-friendliness'. Clearly this is subjective and depends on
the targeted end-user or customer. User interviews, surveys, video recording of user sessions
and other techniques can be used. Programmers and developers are usually not appropriate
as usability testers.
A: Upon completion of unit testing, integration testing begins. Integration testing is black
box testing. The purpose of integration testing is to ensure distinct components of the
application still work in accordance to customer requirements.Test cases are developed with
the express purpose of exercising the interfaces between the components. This activity is
carried out by the test team.Integration testing is considered complete, when actual results
and expected results are either in line or differences are
explainable/acceptable based on client input.
A: System testing is black box testing, performed by the Test Team, and at the start of the
system testing the complete system is configured in a controlled environment.The purpose
of system testing is to validate an application's accuracy and completeness in performing
the functions as
designed.System testing simulates real life scenarios that occur in a "simulated real life" test
environment and test all functions of the system that are required in real life.System testing
is deemed complete when actual results and expected results are either in line or
differences are explainable or acceptable, based on client input.
A: Similar to system testing, the *macro* end of the test scale is testing a complete
application in a situation that mimics real world use, such as interacting with a database, using
network communication, or interacting with other hardware, application, or system.
A: The objective of regression testing is to ensure the software remains intact. A baseline set
of data and scripts is maintained and executed to verify changes introduced during the
release have not "undone" any previous code. Expected results from the baseline are
compared to results of the software under test. All discrepancies are highlighted and
accounted for, before testing proceeds to the next level.
A: Sanity testing is performed whenever cursory testing is sufficient to prove the application
is functioning according to specifications. This level of testing is a subset of regression
testing.It normally includes a set of core tests of basic GUI functionality to demonstrate
connectivity to the database, application servers, printers, etc.
A: Load testing is testing an application under heavy loads, such as the testing of a web site
under a range of loads to determine at what point the system response time will degrade or
fail.
A: Recovery/error testing is testing how well a system recovers from crashes, hardware
failures, or other catastrophic problems.
A: Comparison testing is testing that compares software weaknesses and strengths to those
of competitors' products.
A: Acceptance testing is black box testing that gives the client/customer/project manager
the opportunity to verify the system functionality and usability prior to the system being
released to production.The acceptance test is the responsibility of the client/customer or
project manager, however, it is conducted with the full support of the project team. The test team
also works with the client/customer/project manager to develop the acceptance criteria.
A: Beta testing is testing an application when development and testing are essentially
completed and final bugs and problems need to be found before the final release. Beta
testing is typically performed by end-users or others, not programmers, software engineers,
or test engineers.
A: The Test/QA Team Lead coordinates the testing activity, communicates testing status to
management and manages the test team.
A: Test Configuration Managers maintain test environments, scripts, software and test data.
Depending on the project, one person may wear more than one hat. For instance, Test
Engineers may also wear the hat of a Test Configuration Manager.
A: One software testing methodology is the use a three step process of...
This methodology can be used and molded to your organization's needs. Rob Davis believes
that using this methodology is important in the development and ongoing maintenance of
his clients' applications.
A: The general testing process is the creation of a test strategy (which sometimes includes
the creation of test cases), creation of a test plan/design (which usually includes test cases
and test procedures) and the execution of tests.
* Test cases and scenarios are designed to represent both typical and unusual situations
that may occur in the
application.
* Test engineers define unit test requirements and unit test cases. Test engineers also
execute unit test cases.
* It is the test team that, with assistance of developers and clients, develops test cases
and scenarios for integration
* The output from the execution of test procedures is known as test results. Test results
are evaluated by test engineers
to determine whether the expected results have been obtained. All discrepancies/anomalies
are logged and discussed with the
software team lead, hardware test lead, programmers, software engineers and documented
for further investigation and
resolution. Every company has a different process for logging and reporting bugs/defects
uncovered during testing.
* A pass/fail criteria is used to determine the severity of a problem, and results are
recorded in a test summary report.
The severity of a problem, found during system testing, is defined in accordance to the
customer's risk assessment and
tested and flawless fixes are migrated to a new baseline. Following completion of the test,
members of the test team prepare
a summary report. The summary report is reviewed by the Project Manager, Software QA
Manager and/or Test Team Lead.
A: The test strategy is a formal description of how a software product will be tested. A test
strategy is developed for all levels of testing, as required. The test team analyzes the
requirements, writes the test strategy and reviews the plan with the project team. The test
plan may include test cases, conditions, the test environment, a list of related tasks,
pass/fail criteria and risk assessment.
A: Load testing simulates the expected usage of a software program, by simulating multiple users
that access the program's services concurrently. Load testing is most useful and most
relevant for multi-user systems, client/server models, including web servers.
For example, the load placed on the system is increased above normal usage patterns, in
order to test the system's response at peak loads.
52. What is the difference between stress testing and load testing?
During stress testing, the load is so great that the expected results are errors, though there
is gray area in between stress testing and load testing.
Load testing is a blanket term that is used in many different ways across the professional software
testing community.
The term, load testing, is often used synonymously with stress testing, performance testing,
reliability testing, and volume testing.