Software QA/Testing Technical FAQs
Part:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
If you don't have requirements specification, how will you go about testing the application?
Answer1:
if there is no requirement specification and testing is required
then smoke testing or Gorilla testing is a best option for it in this
way we can understand the functionality and Bugs of the application
Answer2:
As a thumb rude, never test or signoff on undocumented (applications
without complete functional specifications) applications. Its quite similar
to swiming in unknown waters - you never know what you could encounter. In
the case of software testing, its not what you will encounter, but its what
you will not encounter. There is a very high possibility that you could
completely miss out some functionality or even worse, misunderstand the
functionality.
Software Testing is closely associated with the Program management Team or
the requirment analysis team rather than the Development Team. When you test
an application without the knowledge of the requirments, you only see what
the developer wants you to see and not what the customer want to see. And
customers / end users are our prime audience.
In the case of missing requirments,
you would try out something what is called 'Focused Exploratory Testing',
identifying every piece in the application, its functionality and gradually
dig deeper.
Smoke Testing or Gorilla Testing (Monkey Testing) is a different type of testing and the purpose of
same is very diffferent.
Smoke Testing or Sanity Testing is used, only to certify builds and is no
measure for quality. It only ensures that there are no blocking issues in
the build and ensures that the same can undergo a test pass.
Gorilla Testing or Monkey Testing (Gorilla being the smarter among the
Monkey kind) is all about adhoc testing. You would probably try hitting the
'ENTER' key 100 times, or try a 'SUBMIT' followed by 'CANCEL' followed by
'SUBMIT' again.
The idea of 'Exploratory Testing' is to identify the functionality of the
application along with Testing the same.
How can I start my career in automated testing?
To start your career in automated testing:
1. Read all you can, and that includes reading product descriptions, pamphlets, manuals, books, information on the Internet, and whatever information you can lay your hands on.
2. Get some hands on experience in using automated testing tools. e.g. WinRunner and many other automated testing tools.
What should test in BANKING DOMAIN application ?
You would like to test:
Banking Workflows
Data Integrity issues
Security and access issues
Recovery testing
All the above needs to be tested in the expected banking environment
(hardwares, LAN, Op Sys, domain configurations, databases)
Collaboration between dev and testing
Unit testing is entirely the responsibility of the developer. A tester
is not in as knowledgable a position to write meaningful unit tests as
the developer who did the feature. I would push back hard against a
development team that tried to do this. A feature is not 'done' (as in
'ready for test') until
- the requirements are met (be they specifications or use case)
- the code has all be checked into revision control
- it has been verified that the newly checked in code does not break
the compile/existing tests
- a comprehensive suite of feature specific unit tests has been created
and integrated into the build process
- there are no TODO's (or similar watermarks) left in the new code
- all FIXME's (or similar watermarks) have bug numbers assigned to them
in the new code
Is there any common testing framework or testing best practices for
distributed system? For example, for distrbuted database management
system?
A distributed database management based on mysql.
It has three components.
1. A jdbc driver providing services for user's applications, including
distributed transaction management, load balancing, query processor,
table id management, etc.
2. A master process, which manages global dirstributed transaction id,
load balancing, load balancing strategy, etc.
3. An agent running on the same box with mysql, which get mysql
server's balance statistic info.
AN OPERATIONAL ENVIRONMENT FOR TESTING DISTRIBUTED SOFTWARE
Distributed applications have traditionally been designed as systems whose data and processing capabilities
reside on multiple platforms, each performing an assigned function within a known and controlled
framework contained in the enterprise. Even if the testing tools were capable of debugging all types of
software components, most do not provide a single monitoring view that can span multiple platforms.
Therefore, developers must jump between several testing/monitoring sessions across the distributed
platforms and interpret the cross–platform gap as best they can. That is, of course, assuming that comparable
monitoring tools exist for all the required platforms in the first place. This is particularly difficult when one
server platform is the mainframe as generally the more sophisticated mainframe testing tools do not have
comparable PC– or Unix–based counterparts. Therefore, testing distributed applications is exponentially
more difficult than testing standalone applications.
To overcome this problem, we present an operational environment for testing distributed applications
based on the Java Development Kit (JDK) as shown in Figure 1, allowing testers to track the flow of
messages and data across and within the disparate platforms.The primary goal of this operational environment is an attempt to provide a coherent, seamless
environment that can serve as a single platform for testing distributed applications. The hardware platform
of the testbed at the lowest level in Figure 1, is a network of SUN workstations running the Solaris 2.x
operating system which often plays a part in distributed and client–server system. The widespread use of
PCs has also prompted an ongoing effort to port the environment to the PC/Windows platform. On the top
of the hardware platform is Java Development Kit. It consists of the Java programming language core
functionality, the Java Application Programming Interface (API) with multiple package sets and the
essential tools such as Remote Method Invocations (RMI), Java DataBase Conncetivity (JDBC) and Beans
for creating Java applications. On top of this platform is the SITE which secures automated support for the
testing process, including modeling, specification, statistical analysis, test data generation, test results
inspection and test path tracing. At the top of this environment are the distributed applications. These can
use or bypass any of the facilities and services in this operational environment. This environment receives
commands from the users (testers) and produces the test reports back.
Part:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|