Showing posts with label software testing jobs. Show all posts
Showing posts with label software testing jobs. Show all posts

December 20, 2016

XML Quiz


XML (eXtensible Markup Language) defines rules to create and store documents in a text format. It is extensively used to transfer encoded data over the internet between different applications. You can learn XML from my XML coding tutorial for beginners - Part 1 and XML coding tutorial for beginners - Part 2
 
If you are into web applications, it is important to know XML along with HTML, CSS and JavaScript. XML looks deceptively simple on the surface but it has many features. Try this quiz to find out how well you know XML.

December 28, 2014

Selenium WebDriver Quiz Part 4


Selenium is a popular open source test automation tool for web applications that is used for functional and cross-browser compatibility testing. You can learn from my video, Selenium WebDriver tutorial.

You may have already attempted the Selenium Quiz Parts 1, 2 and 3. If not, try those first. Now, attempt this short part 4 of this quiz to check your familiarity with Selenium WebDriver (also known as Selenium 2) basics. Selenium-WebDriver is the new Selenium tool that has a simpler and more powerful API than Selenium 1. Additionally, it addresses the limitations of Selenium RC. Each question in this quiz has four options with one best answer. The score is updated at the bottom left as you answer each question.

December 07, 2014

How to find out more software testing jobs positions?

View my video, Tips on how to get a job as a Software Tester or read on. The common ways to locate the available software testing job positions or projects are job websites, organizations' web sites, social media, campus assistance, freelance websites and crowd-sourced testing web sites. However, these are not the only means of finding the available jobs.

More software testing jobs

If you are looking for a suitable or better software testing position, consider the following options too. Software testing forums e.g. Software Testing Space, possible internal transfer within your organization and private referrals. These can be powerful options to discover your desired position because the information reaches far fewer interested people than the above common ways. For details, view the video, Top tips to get software testing jobs.


March 19, 2014

Example Test Strategy | Test Plan


Test strategy is the plan (that may exist at any level like project, program, department or organization level) that describes how the test objectives would be met effectively with the help of the available resources. If you have a test strategy, it is easier to focus effort on the most important test activities at the time. Moreover, a test strategy provides clarity on the test approach to the project stakeholders. First, view my Test Strategy video. Then read on.
Many readers have asked me for example software testing strategy document. I requested Varsha, who is a senior member of the Software Testing Space community, to create an example test strategy for a hypothetical agile project. First, view the video, Example Agile Test Strategy, Agile Test Plan. Then read on.
Below is the resulting sample test strategy document. The sections contain much information. Additional guidelines are given in italics. I hope that this sample test strategy document helps you create a really effective test strategy for your own project. - Inder P Singh

Example Test Strategy

Introduction to Agile
Agile is an iterative and incremental (evolutionary) approach to software development that is performed in a highly collaborative manner by self-organizing teams within a control framework. High quality and adaptive software is developed by small teams using the principles of continuous design improvement and testing based on rapid feedback and change. Agile is people-centric, development and testing is performed in an integrated way, self-organizing teams encourage role interchangeability, customer plays a critical role and Project Life-cycle is guided by product features.

How Agile is different from Waterfall model
1. Greater collaboration
2. Shorter work cycle and constant feedback
3. Need to embrace change
4. Greater flexibility
5. Greater discipline
6. The goal should be quality and not just speed
7. Greater stakeholder accountability
8. Greater range of skills
9. Go faster and do more
10. Courage
11. Confidence in design

Purpose of this document
The purpose of this Test Strategy is to create a shared understanding of the overall targets, approach, tools and timing of test activities. Our objective is to achieve higher quality and shorter lead times with minimum overhead, frequent deliveries, close teamwork with team and the customer, continuous integration, short feedback loops and frequent changes of the design. Test strategy guides us through the common obstacles with a clear view of how to evaluate the system. Testing starts with the exploration of the requirements and what the customer really wants by elaborating on the User stories from different perspectives. Testing becomes a continuous and integrated process where all parties in the project are involved. 
Copyright © Software Testing Space

Guiding standards
StandardDescription
Shared ResponsibilityEveryone in the team is responsible for quality.
Data ManagementProduction data must be analyzed before being used for testing.
Test ManagementTest cases, code, documents and data must be treated with the same importance as the production system.
Test AutomationAttempt to automate all types of testing (Unit, Functional, Regression, Performance, Security) as far as feasible.

Requirements strategy
1. Always implement highest priority work items first (Each new work item is prioritized by Product Owner and added to the stack).
2. Work items may be reprioritized at any time or work items may be removed at any time.
3. A module in greater detail should have higher priority than a module in lesser detail.

Quality and Test Objectives
FeatureDescriptionMeasure and TargetPriority
AccuracyFeatures and functions work as proposed (i.e. as per requirements)100% completion of agreed features with open
  • Severity 1 defects = 0
  • Severity 2 defects = 0
  • Severity 3 defects < 5
  • Severity 4 defects < 10
Must Have
IntegrityAbility to prevent unauthorized access, prevent information loss, protect from viruses infection, protect privacy of data entered
  • All access is via HTTPS (over a secured connection).
  • User passwords and session tokens are encrypted.
Must Have
MaintainabilityEase to add features, correct defects or release changes to the system
  • Code Duplication < 5%
  • Code Complexity < 8
  • Unit Test Coverage > 80%
  • Method Length < 20 Lines
Must Have
AvailabilityPercentage of planned up-time that the system is required to operateSystem is available for 99.99% for the time measured through system logs.Should Have
InteroperabilityEase with which the system can exchange information with other systems User interface renders and functions properly on the following (and later) browsers versions:
  1. IE version = 9.0
  2. Firefox version = 18.0
  3. Safari version = 5.0
  4. Chrome version 11.0
Must Have
PerformanceResponsiveness of the system under a given load and the ability to scale to meet growing demand.
  1. Apdex Score > 0.9
  2. Response Time < 200ms
  3. Throughput > 100 pm
Should Have

Test Scope (both business processes and the technical solution)
In Scope
Identify what is included in testing for this particular project. Consider what is new and what has been changed or corrected for this product release.
  • Automated) Unit testing
  • Code analysis (static and dynamic)
  • Integration testing
  • (Automated) Feature and functional testing
  • Data conversion testing
  • System testing
  • (Automated) Security testing
  • Environment testing
  • (Automated) Performance and Availability testing
  • (Automated) Regression testing
  • Acceptance testing
Copyright © Software Testing Space
Out of Scope
Identify what is excluded in testing for this particular project.

Testing Types
Testing typeDefinitionTest tool examples
Remove tools that will not be used.
Unit testingTesting that verifies the implementation of software elements in isolation Xunit test tools (Nunit, Junit), Mocking tools
Code analysis (static and dynamic)Walkthrough and code analysis1. Static code tool -> Java – Checkstyle, Findbugs, Jtest, AgileJ Structure views .Net – FxCop, stypeCop, CodeRush
2. Dynamic code tool ->Avalanche, DynInst, BoundsChecker.
Integration testingTesting in which software elements, hardware elements, or both are combined and tested until the entire system has been integratedVector Cast C/C++
Functional and Feature testingTesting an integrated hardware and software system to verify that the system meets required functionality:
  • 100% requirements coverage
  • 100% coverage of the main flows
  • 100% of the highest risks covered
  • Operational scenarios tested
  • Operational manuals tested
  • All failures are reported
UFT, Selenium WebDriver, Watir, Canoo webtest , SoapUI Pro
System testingTesting the whole system with end to end flowSelenium, QTP, TestComplete
Security testingVerify secure access, transmission and password/ session securityBFB Tester, CROSS, Flowfinder, Wireshark, WebScarab, Wapiti, X5s, Exploit Me, WebSecurify, N-Stalker
Environment testingTesting on each supported platform/ browserGASP, QEMU, KVM,Xen, PS tools
Performance and Availability testingLoad, scalability and endurance testsLoadRunner, JMeter, AgileLoad test, WAPT, LoadUI
Data conversion testingPerformed to verify the correctness of automated or manual conversions and/or loads of data in preparation for implementing the new systemDTM, QuerySurge, PICT, Slacker
Regression testingTesting all the prior features and re-testing previously closed bugsQTP, Selenium WebDriver
Acceptance testingTesting based on acceptance criteria to enable the customer to determine whether or not to accept the system Selenium , Watir, iMacros, Agile Acceptance Test Tool

Test Design strategy
1. Specification based / Black box techniques (Equivalence classes, Boundary value analysis, Decision tables, State Transitions and Use case testing)
2. Structure based / white box techniques (Statement coverage, Decision coverage, Condition coverage and Multi condition coverage)
3. Experience based techniques (Error guessing and Exploratory testing)

Test Environments strategy
NameDescriptionData SetupUsage
DevelopmentThis environment is local and specific to each developer/tester machine. It is based on the version/branch of source code being developed. Integration points are typically impersonated.Data and configuration is populated through setup scripts.Unit, Functional and Acceptance Tests.
Test tools e.g. Xunit test tools (Nunit, Junit), Mocking tools.
Source code management for version control
IntegrationThis environment supports continuous integration of code changes and execution of unit, functional and acceptance tests. Additionally, static code analysis is completed in this environment.Data and configuration is populated through setup scripts.Unit, Functional and Acceptance Tests.
Static code analysis
Continuous Integration tools e.g. Cruise control
StagingThis environment supports exploratory testingPopulated with post-analysis obfuscated production dataExploratory testing
ProductionLive environmentNew instances will contain standard project reference data. Existing instances will have current data migrated into the environmentProduction verification testing

Test Execution strategy
We will keep in mind the following points:
  1. Agile testing must be iterative.
  2. Testers cannot rely on having complete specification.
  3. Testers should be flexible.
  4. They need to be independent and independently empowered in order to effective
  5. Be generalizing specialists.
  6. Be prepared to work closely with developers.
  7. Focus on value added activities.
  8. Be flexible.
  9. Focus on What and Not How to test.
  10. Testers should be embedded in agile team.
  11. Flexible to contribute in any way then can
  12. Have wide range of skills with one or more specialties
  13. Shorter feedback cycles
  14. Focus on sufficient and straightforward situations.
  15. Focus on exploratory testing.
  16. Specify the meaning of "Done” i.e. when activities/tasks performed during the system development can be considered complete.
  17. Define when to continue or stop testing before delivering the system to the customer. Specify which evaluation criteria is to be used (e.g. time, coverage, and quality) and how it will be used.
Additionally, use this section to describe the steps for executing tests in preparation for deployment/release/upgrade of the software. Key execution steps could include:
1. Steps to build the system
2. Steps to execute automated tests
3. Steps to populate environment with reference data
4. Steps to generate test report/code metrics


Test Data Management strategy
Use this section to describe the approach for identifying and managing test data. Consider the following guidelines:
1. System and user acceptance tests – a subset of production data should be used to initialize the test environment.
2. Performance and availability test – full size production files should be used to test the performance and volume aspects of the test.


Test Automation strategy
Adopt a planned approach to developing test automation. Increase the quality of test automation code. Select the test cases for automation based on the following factors:
  • Risk
  • How long it takes to run the tests manually?
  • What is the cost of automating the test?
  • How easy are the test cases to automate?
  • How many times is the test expected to run in project?
Test Management
The Test Plan, test scenarios, test cases and bug report should be in a same system as in Bugzilla, Zira. Any agile tool can be used where User stories, Test Plan, Test scenarios, test cases and bug report can be stored in the same place.

Risks and Assumptions
Risks and assumptions raised in Daily stand up meeting (in front of all team members, scrum master and members) should be logged and addressed immediately.

Defect Management strategy
Ideally, defects are only raised and recorded when they are not going to be fixed immediately. In this case, the conditions under which they occur and the severity needs to be accurately recorded so that the defect can be easily reproduced and then fixed.

Defect Classification
SeverityDescription
CriticalDefect causes critical loss of business functionality or a complete loss of service.
MajorDefect causes major impact to business functionality and there is not an interim workaround available.
MinorDefect causes minor impact to business functionality and there is an interim workaround available.
TrivialDefect is cosmetic only and usability is not impacted.

Defect Lifecycle
StepDescription
Identify DefectEnsure defect can be reproduced. Raise in defect tracking system.
Prioritize DefectBased on severity defect is prioritized in team backlog.
Analyze DefectBased on analysis acceptance criteria and implementation details.
Resolve DefectImplement changes and/or remediate failing tests.
Verify ResolutionExecute tests to verify defect is resolved and no regression is seen.
Close DefectClose in defect tracking system.

Specify the shared defect tracking system.
Copyright © Software Testing Space
Note: This example test strategy has been contributed by Varsha Tomar. Varsha has 9 years experience in both manual and automated software testing. Currently, she works with Vinculum Solutions as Senior Test Lead. Her interests include software testing, test automation, training, testing methodologies and exploring testing tools.

Please put any questions that you have in the comments.

January 17, 2014

What is quality?

Let us understand the concept of Quality. View the video that explains What is Quality or read on. Simply put, "quality" is a property or a characteristic of an item, a product, a service or a system. A physical product has properties like dimensions, weight, price or life span. Notice that each of these properties is one of two types, tangible or intangible. Properties like dimensions and weight are tangible. Meaning that they are physical properties that we can measure easily. Properties like price and life span are intangible. Meaning that they are not obvious to our senses or measuring devices. Quality is an intangible property of a product or a system. That is why it is not trivial to estimate it. It is probably impossible to measure it accurately.

What is quality?

Quality is relevant when considering any kind of a thing like a pen, a smart-phone, a vehicle or a software application. The perception of quality depends on the individual's preferences. For some, it can be meeting the specifications. For some, it is a large number of features. For others, it is the combination of other properties like performance, reliability, maintainability, security, portability, usability or aesthetics. High quality is naturally desirable to people. High quality means that the thing is better than its substitutes. Therefore, people tend to prefer items, products, services or systems with high quality. Manufacturers and service providers understand the users' preference for things of high quality.

A system can be specified by laying out its external features, inputs, internal processes, workflows, usage and outputs. For example, if you want to purchase a new car, you could look at the specifications of the model that interests you. You may want to see the dimensions, power, torque, seating capacity, fuel, engine type, driving features and so on. Then, figure if these specifications meet your requirements or not. As another example, consider an email application. Here, the specifications could be the type of email address, read email, write email, send email to one or more email addresses, include attachments and so on. Based on these specifications, you could estimate if this email application is suitable for you or not.

Another way of estimating the system quality is to look at the features. You could determine if there are many useful features in the system or not. For example, consider a calculator application. You could find if it has the basic features like addition, subtraction, multiplication and division. Then find if it has other useful features like sine, cosine, log, square root and so on. Then, figure if these features meet your requirements or not.

Yet another way of finding the quality is to examine other properties of the system. You could determine if it is fast (performance), able to work for long time (reliable), easy to repair (maintainable), safe (secure) and easily shifted from one environment to another (portable).

It is common to use any or all ways of estimating the quality. If the system meets the specifications, has a large number of useful features and has good performance, reliability, maintainability, security, portability, usability and aesthetics, it is perceived to be of a high quality.

Testing a system gives us data to estimate the quality of that system. Testing a system lets us know if the system meets each of its requirement specifications or not. It gives us data about working features of the system. It also provides data about other relevant system properties like performance, security and usability. Testing provides this data when the system is actually used. This why testing is so important. Especially software testing to estimate software quality.

Note: Enjoy our free testing videos by subscribing here.

October 31, 2013

Selenium IDE and Selenium WebDriver Training Videos - learn automated testing

In the last few years, I have had the opportunity to interact with hundreds of testers who want to have more than just manual testing skills. They want to learn Automated Testing, or Test Automation as it is commonly called. I prefer to call it Automation because it is not restricted to testing something with a computer program. Automation can be used for other productive tasks like generating or setting up test data, log bug reports, prepare release notes and doing other administrative tasks.

The problem that I see (painfully) very often is that some testers feel that they can download a functional web testing tool, read a few blog posts or watch a couple of videos to see how it works and they will have test automation skills. Not quite. These folks have hardly done any coding or written any automation program. In many cases, they don't even recall basic HTML syntax. When they build some automation, they are at the mercy of web test recordings, which are very fragile. If there is something that cannot be recorded e.g. a condition or a loop, they search some source code on the web, which meets their exact requirement. They are afraid to modify this source code because they really don't understand it. Then the automation that they manage to hack together doesn't work too often. More seriously, it suffers from unknown issues. It's a big problem.

You can solve this problem by using our Selenium IDE and WebDriver training videos. The training videos start with training on HTML, CSS, XPath before training on Selenium IDE (the record/script and playback tool) all in detail. This builds a strong foundation in testing web apps using not only Selenium but also any other functional testing tool because the web technologies are the same. Then the training videos cover the relevant object-oriented programming (OOPS) concepts, programming logic and Java coding. These programming skills give the confidence to build the automated Selenium test scripts (or test scripts in any other tool) in real life. Then the training videos cover Selenium WebDriver code in detail, with data parametrization and page object pattern. Finally, the videos cover TestNG, which is a testing framework. All these languages, tools and technologies are covered in the videos from beginner level. The training videos are 25 hours in total. They have ample explanations of all relevant concepts and numerous practical demonstrations.

The training videos are private and there is a fee to view them. There is one month support to provide any clarifications or resolve your queries, if any, on the training material presented in the training videos. If you need access to the training videos, please email me @ isingh 30 at g mail dot com (with no spaces).

Here are the comments by few of the software testing professionals who have used these training videos to learn Selenium:
  1. Akim I enjoyed it a lot and learned a lot from your videos - specially on the java side. Once again, I greatly appreciate it.
  2. Alex I just want to say thank you for your great tutorials.
  3. Adarsh I am happy with the way you provide the training, its very easy to understand and concepts that are explained are crystal clear. Hats off to you!!!! I am enjoying learning Selenium from your training videos. I simply love the way you explain the concepts, you do it so well.
  4. Angela The training is going well thanks. Good thing with the videos is u can playback which is a great advantage. You explanations are very good and I'm sure when I get to the actual web driver it will be clear. Great foundation work.
  5. Brij Hi Inder, No questions nothing just wanted to say that I find your videos very very good and easy. In fact, no problems understanding till now i.e. firepath. It is really really easy. Thanks.
  6. Farhod I watched your videos, very easy to understand, thanks, nice job.
  7. Guillermo I finished all your videos and I learned a lot. Thank you. I will continue practicing.
  8. Jetal you are very nice tutor and i must say would like to make u my mentor too.
  9. Karthik They (the training videos) are clear and audible.
  10. Linda I have been learning your classes, so far it's good. :)
  11. Marco first of all, congratulations, you're an awesome teacher...
  12. Mike I am making good progress with the videos, so thank you. You do a great job presenting the material in a way that makes learning much easier than it would be otherwise.
  13. Niharika I have completed the training and it is really very helpful. Thanks a lot for sharing the knowledge, I am glad I took up this training.
  14. Paul cheers Inder its excellent so far, thanks for this, ur effort is awesome.
  15. Pooja everything is well understood. Great work & great stuff, should say. Also, I am practicing it everyday.
  16. Preeti I am going through the Selenium videos and its very clear and I am able to understand. So, I am very thankful for that.
  17. Renji ...The best videos for learning Selenium.
  18. Roshitha the way u teach is simply awesome.
  19. Simona You are an excellent tutor. I have been reading books and just watching your video I have learned more in a day. Your video are clean and clear.
  20. Sujeet Your training videos are awesome and very much practical in itself. I am following your concepts and its is quite helpful.
  21. Siva I found training is very useful. Thanks make it effective. Thanks for your support as always.
  22. Shwetha In one word i would say the course as "WOW". I could see that the you have put on a lot of effort in each training and have shared your knowledge extensively.
  23. Vani The videos are very informative and useful.
  24. Adarsh I did go through all the video sessions that you shared. It was a good learning experience. Infact, I am new to Java and that postponed me to learn webdriver. Your training sessions is helping me to understand on the concepts.
Please see these example Selenium training videos:
Selenium IDE
Selenium WebDriver
Selenium Interview Questions and Answers  

October 02, 2013

JMeter Web Performance Testing Training Videos


You can get trained in web performance testing with JMeter by using our training videos. These high definition videos are 13 hours long altogether. They cover many aspects of performance testing - performance testing process, using JMeter effectively, setup and execution of performance tests, analysis of results and much more.

June 09, 2013

VBScript Questions and Answers

VBScript is a scripting language used to create test automation in tools such as UFT and TestComplete. In addition, it is used to automate user tasks on Windows computers. Learn VBScript in detail using my free VBScript video tutorials. Then attempt the below quiz on VBScript.
 
Each question in this quiz has four options with one best answer. The score is updated at the bottom left as you answer each question. Try it.

1. Which browser has built-in support for executing VBScript?
Internet Explorer
Mozilla Firefox
Opera
None of these

2. Which statement is true for VBScript names e.g. variable names or procedure names?
They are case sensitive.
They are case insensitive.
They are case insensitive but should be written consistently for readability.
Only variable names are case insensitive.

3. What is the datatype of a variable in VBScript?
String
Variant
It is the datatype specified when that variable is declared.
None of the above

4. What is the difference between the Sub procedure and Function procedure?
Only the Sub procedure can perform actions
Both procedures can take arguments
Only the Function procedure can return a value
All of the above

5. In the Select Case statement, which case is used for unknown cases?
Else
Default
Unknown
Not

6. Which loop is used to iterate till a condition becomes true?
For Next loop
For Each Next loop
Do While loop
Do Until loop

7. What is the purpose of the Set keyword in VBScript?
Assign a value to any variable
Assign a value to an object variable
Declare an array
Configure the VBScript program

8. Which VBScript function returns the day of the week for any date?
Date
Day
Weekday
Now

9. Which VBScript function converts an input string to all lowercase?
LCase
LowerCase
Lower
There is no such function to directly convert to lowercase.

10. Which VBScript function can compare two strings?
StringCompare
Compare
StrComp
StrCompare

Score is 0/ 10.
Mention your scores in the comments below.

May 27, 2013

Checkpoints in Automation Testing

In the last two articles, we saw how to create keyword tests and script tests in TestComplete. In this article, we will learn the checkpoints available in TestComplete. First, what is a checkpoint? A checkpoint is an automated comparison that you can have within an automated test. When the test is run, the checkpoint compares the value stored in the test (i.e. the baseline value) with the actual value and reports success or failure depending on the comparison. A single checkpoint replaces a number of test steps or script statements that perform the same comparison. There are more than 10 checkpoints available in TestComplete. Let us visit them one by one.

April 30, 2013

Script test in TestComplete

In the last post, we learned how to create a keyword test in TestComplete. I had mentioned then that Script tests are more suitable for people who know a scripting language like VBScript or JScript and who have written test automation before. In this post, let us see how to build a script test to test the Windows Calculator. We will use data parametrization, external data sources, conditional statements and loops. Rest assured that it will not be simple at all.

April 26, 2013

How to create a keyword test in TestComplete (from SmartBear Software)?

TestComplete is a test automation tool that can test a variety of applications like Windows applications, web applications, web services, Adobe AIR applications and Java applications. Tests can be created as either Keyword tests or Scripts. The former are more suitable for beginners in test automation and the latter are more suitable for people who know a scripting language like VBScript or JScript and who have written test automation. It is very simple to build a keyword test in TestComplete. In this post, let us see how to build a keyword test in a browser based application quickly.

March 31, 2013

Selenium RC Quiz Part 3


Selenium is a popular open source test automation tool for web applications that is used for functional and cross-browser compatibility testing. You may have already attempted the Selenium Quiz Part 1 and 2. If not, try those first. Now, attempt the part 3 of this quiz to check your familiarity with Selenium RC (also known as Selenium 1). Selenium RC is the original Selenium tool. RC has the Selenium Server that controls the browsers and Client Libraries for the supported programming languages (Java, Ruby, Python, Perl, PHP or .Net). Each question in this quiz has four options with one best answer. The score appears at the bottom left. A score of 5 or less indicates low knowledge; 6 to 7 means a fair level of knowledge and 8 and above shows a good knowledge of Selenium RC.
Instead of this quiz, you may want to see my video on Selenium Questions and Answers where I have compiled all these questions.

1. What are the different modes that Selenium uses?
*iehta
*firefox and *iexplore
*chrome
All of the above

2. How do you start the browser?
selenium.Start()
get start()
selenium.server start()
None of the above

3. Do you need to have Selenium .jar files as a dependency of your tests?
Yes
No
Yes, but as a good practice only
No Selenium jar file is provided with Selenium RC.

4. How many parameters does the Selenium object take when using DefaultSelenium?
2
3
4
6

5. How do you start selenium rc server with user extensions?
java -jar selenium-server.jar
java -jar selenium-server.jar -userExtensions user-extensions.js
java -jar selenium-server.jar user-extensions.js
java -jar selenium-server.jar user-extensions.js -h

6. Which Selenium command do you use to run commands in slow motion in Selenium RC?
selenium.setSpeed()
selenium.speed()
selenium.serverSpeed()
None of the above

7. Which command is used to get the alert box?
assertequals(selenium.getAlert())
selenium.getAlert()
selenium.alertBox()
selenium.click()

8. Which command is used for verifying if a web element exists?
selenium.isElementPresent(String locator)
assertTrue(Selenium.isElementPresent())
selenium.ElementPresent()
None of the above

9. Which command is used for typing in a textbox?
selenium.input()
selenium.type(String locator, String value)
assertequals(selenium.getValues())
selenium.textInput()

10. What is the command to load a page?
selenium.waitForPageToLoad(String timeoutInMilliseconds)
selenium.waitForPageToLoadInt timeoutInMilliseconds
selenium.waitForPageToLoad(timeoutInMilliseconds)
selenium.waitForPageToLoad()
Score is 0/ 10.

I have written the JavaScript source code that runs the quiz. The questions and answers of this quiz have been contributed by Varsha Tomar.

Please remember to mention your scores in the comments below. Now answer the quiz on Selenium WebDriver (also known as Selenium 2).

March 06, 2013

Selenium IDE Quiz Part 2


As you know, Selenium is a popular open source test automation tool for web applications that is used for functional and cross-browser compatibility testing. You may have already attempted the Selenium IDE Quiz Part 1. If not, try that first. Now, attempt the part 2 of this quiz to check your familiarity with Selenium IDE. Some of the answer choices are quite similar so please read each answer carefully before selecting the best one. The score appears at the bottom. A score of 5 or less indicates low knowledge, 6 to 7 means a fair level of knowledge and 8 and above shows a good knowledge of the Selenium IDE.
Instead of this quiz, you may want to see my video on Selenium Questions and Answers where I have compiled all these questions.

March 01, 2013

Selenium IDE Quiz Part 1


Selenium is a popular open source test automation tool for web applications. It is used for functional and cross-browser compatibility testing. In addition, several other open source functional testing tools are based on Selenium. This quiz on Selenium IDE is the first part of my series on testing using Selenium. Attempt this quiz to check your familiarity with Selenium IDE. Each question has one best answer. The score appears at the bottom. A score of 5 or less indicates low knowledge, 6 to 7 means a fair level of knowledge and 8 and above shows a good knowledge of the Selenium IDE. Instead of this quiz, you may want to see my video on Selenium Questions and Answers where I have compiled all these questions. 
 
Note: You can learn Selenium WebDriver from my complete set of Selenium Python tutorials for Beginners.

February 24, 2013

Java Questions and Answers Part 2

As you know, Java is one of most popular object-oriented programming languages and has been in use since its release. It is interesting that test automation can be written in Java in certain automated testing tools/ frameworks. View the videos, Java Interview Questions and Answers - 1 and Java Interview Questions and Answers - 2. Or read on.

1. How can you add GUI elements to a Java application?
Java has an API called swing to provide GUI components such as textboxes, checkboxes, radiobuttons, comboboxes and so on. These components are available on importing javax.swing.*. The process to add a GUI element to a Java application involves creating a new object of the component class, adding the object to the container and attaching an event handler to the object.

2. How can you accept user input to a Java application?
This can be done by importing the java.util.Scanner class. The Scanner class has methods like nextInt, nextDouble, nextLine and so on to accept inputs of different data types from the user into a variable.

3. What methods are available to search within a string?
The String class in Java has a vast number of methods. There are many methods to search for characters within a string. Some of these methods include charAt, contains, indexOf, lastIndexOf, startsWith and endsWith.

4. How do you draw graphics in an application?
Java has a built-in Graphics object. This object has methods such as drawArc, drawImage, drawLine, drawRect (empty rectangle)/ fillRect (solid rectangle), drawPolygon/ fillPolygon and so on that can be invoked to draw the respective lines and shapes in any desired color.

5. How can you work with files and folders?
First, import the java.io.File library. Then create an object of the File class and point it to the required file or directory. This object will have the file's properties (e.g. length, isDirectory, lastModified) and methods (e.g. listFiles, createNewFile, getPath). A Scanner object can be created for the File object and used to fetch the contents in the file.

6. How do you handle exceptions?
There may be code which if executed may throw an exception. Such code is put inside a try block, which is followed by a catch block containing the exception handler. If the code throws an exception when it is executed, the control flows to the catch block. The try block may have one or more lines of code. Each line of code may have its own try block. There can be one or more catch blocks to handle different types of exceptions. All such catch blocks immediately follow the try block.

7. What is recursion?
A recursive method is one that calls itself. See the example below. For a given integer input that is greater than one, this method sums all integers from the input down to one. This method has the base case for input equal to one. The recursion exists where sumAll method calls itself in the last line.
public static int sumAll(int n){
    if (n==1)
        return 1;
    else
        return n + sumAll(n-1);}// recursion is in this line of code

8. What is the benefit of using a List instead of an array?
The Collections class has several useful methods that work on a List but not on an array. Examples of these methods are addAll, binarySearch, copy, fill, max, min, reverse, shuffle and sort.

9. What is the difference between Stack and PriorityQueue classes?
A new element can be added to the Stack by the push method. The new element is always added at the top of the Stack. In an existing Stack, the top element can be removed by the pop method. The Stack has other methods to add and remove elements at specified positions within the Stack.
In a PriorityQueue, a new element is added by the offer method. This new element is always inserted at the bottom of the queue. In an existing queue, the top element can be removed by using the poll method. The queue does not have methods to add and remove elements at specified positions within the queue.

10. How can different code in a program be executed concurrently?
This can be done using threads. A Java application can have multiple threads of execution running at the same time. A thread can be created by writing a class that implements the Runnable interface which means implementing the run method. Thereafter, a new thread can be created by instantiating a new Thread passing the new object of this class as parameter. A Thread object has a number of methods like setPriority and start.

February 13, 2013

Java Questions and Answers Part 1


As you would know, Java is one of the most popular object-oriented programming languages and has been in use since its release in 1995. What is particularly interesting is that test automation can be written in Java in certain automated testing tools/ frameworks. Here are some basic questions and answers related to the Java programming language. These questions and answers are excerpted from the notes that I created. View the videos, Java Interview Questions and Answers - 1

and Java Interview Questions and Answers - 2. Or read on.

February 04, 2013

JavaScript Quiz Part 2 (final part)


As you may know, JavaScript is the default scripting language of the browser. In addition, much test automation is also written in JavaScript. If you have not attempted the Part 1 of this Quiz, do that first. Then attempt this part of the quiz to find out how well you know JavaScript. If you can answer 8 or more questions correctly in each part, then you are a JavaScript expert :)

January 28, 2013

HTML (HyperText Markup Language) Quiz

HTML5 is the upcoming HTML standard. It introduces a number of new features like built-in video support, geolocation, drawing and so on. It also integrates XHTML, CSS and JavaScript. Check your awareness of HTML5 with this short quiz which is created using HTML5. Each question has one best answer. Your score will always be visible in the bottom left. Please use the latest version of an A-class browser like Chrome, Firefox or Internet Explorer to view this post. The latest versions of these browsers already implement a lot of HTML5 features.

January 24, 2013

Software Testing Effort Estimation: Questions and Answers

Software test effort estimation is a key skill required of a Test Manager (for multiple projects), a Test Lead (for the activities of the testing team) or a Tester (for own activities). In this post, I will not explain what software test effort estimation is or how to do it. If you need to know these things, view my video on Test Estimation techniques, formula example and Questions and Answers

In this post, I will pose relevant questions regarding effort estimation in software testing. These questions are useful to guide yourself when you do estimation. They help clarify thoughts during discussions among project stakeholders. Also, these questions are useful in interviews for various testing positions. I have also discussed these questions and their answers in the above video on Test Effort Estimation.


Now, you may know that once the effort estimates are agreed, there is a (sometimes unsaid) expectation of commitment to these estimates. Therefore, generating a fair effort estimate in software testing is a serious task. Get the effort estimate loose and the resources and time would be under-utilized. Get the effort estimate too tight and there is a risk of stressing the resources and, in extreme cases, even failure to meet project deadlines. With this in mind, let us see the questions.

1. What data would you gather and analyze before starting test effort estimation?
I would need the scope of work (i.e. the size of the system, types of testing required, test strategy, planned test cycles, "non-test" activities e.g. test data generation, defect logging and tracking, triage meetings etc.). The scope of work is better defined in a Work Breakdown Structure (WBS) for the project. Also I would need historical data of similar projects (as similar as possible in size, development life cycle, technology and team composition). This history data may be available in the company records or can be gathered from the team who worked in the similar project.
It is quite possible, in fact common, for some of the above data to be not available. But in any case, the scope of the work should be defined and agreed by the stakeholders (i.e. the client/ business, management and the project team) before test effort estimation is done.

2. What approach would you use to create a test effort estimate?
There are several approaches that can I can use for test effort estimation. It depends on the available data and the time in hand to generate the estimates (which, in turn, may or may not affect the accuracy of the estimates). Some of the common effort estimation approaches include the using the software size, using the WBS (include "non-test" activities in the WBS, if missing), use project history data or if available, use the company's estimation software and estimation models. If (some of) the above data is not available, I could use my expert judgment (or judgment of more than one person). It is better to use at least two approaches. This way, I can see and address any obvious problems in the effort estimate.

3. Which approach would you prefer if the test effort estimates are needed quickly?
There may be business situations requiring estimates to be generated quickly. In such a case, I would prefer estimating activities at a summary/ group level. Then use another estimation approach to know if the estimates seem okay. Further, I would add some buffer, of say 5%, of overall effort, to use just in case there are unforeseen tasks to perform in the test.

4. Which approach would you use to get accurate test effort estimates (for example, as required by a services company to quote in a fixed bid project)?
If possible, I would like to use the bottom-up approach for creating effort estimates for all tasks in the WBS. The individual effort estimates roll up to give the effort estimates for each group task. In order to refine the effort estimates further, some work items may be sampled and then executed. The actual effort spent on performing these work items can be used to improve the effort estimates.

5. What is the two-estimate approach?
It is possible that the client has a fixed budget for which they can be billed. Internally, the contracting person or company may have reasons to work more hours than for which they bill the client. In such a case, the effort estimates with the client and the contracting person/ company would be different.

6. What data would you analyze to confirm or revise your test effort estimate?
I would gather and analyze the actual time data logged by the team members against project tasks. It's quite possible that the team spends more or less time than estimated on individual project tasks. The reasons for doing so should be understood so that effort estimates of similar tasks yet to be performed can be refined, if required.

7. Is any supporting data required with your test effort estimate?
It is not possible to get buy-in for an effort estimate without giving the estimation approach used. Therefore, I would outline the effort estimation approaches used to generate and support the estimates. Further, I would provide the assumptions used while creating the estimates.

8. What risks do you see to render a test effort estimate inaccurate?
There are an infinite number of risks that could throw an effort estimate off. But the important risks include scope risks (e.g. important activities missed in estimation, feature creep, last minute system changes), resource risks (e.g. resource not committed to the project or not productive), quality risks (e.g. build rejects) and technical risks (e.g. test environment not available, test deliverables not accepted).
Despite risk mitigation measures in the testing risk management plan, if a particular risk turns true it should be communicated to the project stakeholders. It is possible that someone within the team or outside it has a solution to this issue. If there is no solution, the team has to absorb the risk impact.

9. When would you revise the test effort estimates?
I would revise the estimates Whenever there are material changes in the project. Examples of such changes are scope changes (e.g. new features added to the system under test, new types of testing like load testing needed) and resource changes (e.g. team member replaced in the team).

10. How do you improve your estimation skills?
Like other skills, practice makes perfect. Comparing effort estimate data and actual effort data leads to continuous improvement. A big opportunity for improvement is project reviews (gate/ phase-end reviews and project completion reviews). Lastly, my estimation skills improve with doing estimation on more and more projects.

Image courtesy of imagerymajestic / FreeDigitalPhotos.net

January 21, 2013

JavaScript Quiz Part 1

As you know, JavaScript is a very popular programming language used to create interactive websites. Also, much test automation is also written in JavaScript. Attempt this quiz to find out how well you know JavaScript and see how many questions you are able to answer correctly.

1. In javascript, what happens when two functions call each other recursively?
Javascript error
The two functions keep calling each other endlessly.
The recursive calls stop after some time.
The browser displays an alert asking the user to decide if the recursive calls should continue or not.

2. What is the result of applying an arithmetic operator on a string?
Javascript error
null
The program execution stops at the error.
NaN

3. How do you reduce the time it takes a javascript switch statement to execute?
Write all possible cases for the expression.
Write a break statement after every case.
Include a default.
Change the value of the expression within every case.

4. What is the difference between == and === operators in javascript?
There is no === operator in javascript.
There is no difference between the two.
== compares the value but === assigns first and then compares the value so it always returns true.
== compares only the value but === compares both the value and the datatype.

5. What happens when a javascript function is called with extra parameters? For example, the function is defined with 2 parameters but is invoked with 3 parameters.
All the extra parameters at the end are ignored.
All the parameters are turned undefined.
Javascript error
All the extra parameters at the beginning are ignored.

6. Which javascript loop runs at least once?
for loop
for in loop
while loop
do while loop

7. What is the result of running the following loop?
var i=1;
for(;;) {
if (i>5) {break;}
document.write(++i);
}
1234
12345
23456
Javascript error in the for statement

8. In javascript, what is the preferred way of creating just one instance of a user-defined object?
createObject function
Object constructor function
Object initializer
You cannot create user-defined objects in javascript

9. The concat method does which of the following tasks in javascript?
Creates a new array joining two or more existing arrays
Appends one array to another array
Appends one or more arrays to an array
Concatenates all the strings in the array elements

10. In javascript, the elements of an associative array can be referred by their number index. True or false?
true
false
Please now go to the Part 2 of this JavaScript Quiz by clicking here.