December 29, 2013
How to encourage testing within your organization
December 28, 2013
When Manual Testing is better than Automated Testing
December 25, 2013
How video game testers work?
Learn from my video, How to Test Games Software or read on.
Game Testing
The main objective of a game is to have fun. The definition of fun is different for different gamers. The game tester has to know the target users and what they find enjoyable. Other than the fun element, a game may have objectives like developing cognitive/ motor skills or gamer education. Moreover, a game may have a background, a timeline, a plot, characters, theme, graphics, events, scores, levels, paths and other elements. The game tester needs to test each of the above elements with respect to the game objectives and contemporary games in the market. From the first testable code through to release, the game developers provide game builds to the game tester. The game tester should run the following tests.Installation testing
Unless it is a (totally) web-based game or an embedded game, there is some software that the player needs to install on their device first. The installation process has a series of steps that need to be tested on each supported device configuration used by gamers. The game tester should run the steps on each supported device configuration. He should also check the completeness and accuracy of the content in the installation guide.
Feature and Functional testing
This is the most important game test. Typically, the game would have a number of features. The game tester should test the game features fully. The items that need to be tested include basic game play like start/ suspend/ resume/ stop/ start a saved game, game options, progression from one level to the next, correct scores and correct working of the controls. Then, the game tester should test if the game is true to its background, timeline, theme, plot, characters and other elements. The game tester should also test game events, if any and concurrency of multiple gamers in multi-player games.
In order to find the bugs, the game tester should be creative by taking different paths and performing unexpected actions in the game. In addition to finding the bugs, the game tester should estimate how well the game meets its objectives. Also, identify improvement opportunities in the game.
User Interface (UI) testing
This is also an important game test. UI testing includes testing of the graphic elements (e.g. characters in the plot, backgrounds, floors, objects and people) and the content (both viewable and audible). If the game is targeted for multiple languages and cultures, the game tester should test it in each supported language.
Performance testing
A novel story line, incredible graphics, sounds, music and numerous well-integrated features of a game may still fail to satisfy the player if the game is too slow or freezes. The game tester should test the speeds of operation of the game on supported device configurations. The game tester should also play the game at extremes, for example, run a complete game without any pauses at all or run a game continuously for 24 hours or keep on increasing the number of players if the game is multi-player. These tests show the performance bugs.
Alpha test and Beta test support
Once the game development is complete, it is released to few reviewers (alpha test). The game tester should explain the game details to the alpha testers and get their feedback. Then gather alpha test bugs or improvement opportunities, confirm these and pass the valid bugs and change requests to the developers. The game tester should test the game changes and bug fixes before the new build is given to the alpha group.
Once the game is released to a limited number of gamers for their review (beta test), the game tester should confirm the bugs reported by beta testers. Then provide these to the developers. The game tester should test the bug fixes before the final release of the game to market.
December 22, 2013
Software Testing Estimation
Software Testing Estimation Formula
Task | Usage notes | Cumulative Effort Estimate(hours) |
QA/test environment preparation | Estimate this based on hardware installation, software installation and deployment of builds as T1 | T1 |
Testing of n requirements | Estimate testing time per requirement, T2, based on the detail of requirements e.g. T2 can be 0.5 if requirements are detailed or up to 4 if the requirements are high level. | T1 + T2 * n |
Negative and exploratory testing | Use, say, 40% extra testing time per requirement, to cover the paths other than the “happy path”, and exceptional and invalid test data inputs. | T1 + T2 * n * 1.4 |
Re-testing due to requirement correction or changes | Estimate factor T3, based on requirement correctness and stability e.g. T3 can be 0.1 if requirements are well put and stable or 0.5 if requirements have multiple issues or are very dynamic. Let us use T3 as 0.2. | T1 + T2 * n * 1.6 |
Logging defects and re-testing fixes | Estimate the number of defects as T4. Estimate time to log defect, say 0.25 and time to re-test a fix, say 0.25 | T1 + T2 * n * 1.6 + T4 * 0.25 + T4 * 0.25 |
Regression testing | Estimate this effort based on the impact of requirements implemented, defects and depth needed as T5. | T1 + T2 * n * 1.6 + T4 * 0.5 + T5 |
Reserve | Having this reserve helps to provide time to complete unforeseen tasks. Estimate the reserve as T6 between 5 and 10% of overall effort | (T1 + T2 * n * 1.6 + T4 * 0.5 + T5) * (1 + T6) |
Communication | Estimate the daily effort in hours on meetings and reporting as T7. Multiply it by team members T8 and number of testing days T9. | (T1 + T2 * n * 1.6 + T4* 0.5 + T5) * (1 + T6) + T7 * T8 *T9 |
Now let us see an example. Assuming the following:
Test environment preparation time, T1 = 2 hours
Number of requirements, n = 100
Time to test each requirement, T2 = 0.5 hours
Number of defects, T4 = 10
Regression testing time, T5 = 8 hours
Reserve, T6 = 5% i.e. 0.05
Daily time spent on meetings and reporting, T7 = 0.5 hours
Number of testers, T8 = 2
Number of testing days, T9 = 5
(T1 + T2 * n * 1.6 + T4* 0.5 + T5) * (1 + T6) + T7 * T8 *T9 becomes
(2 + 0.5 * 100 * 1.6 + 10* 0.5 + 8) * (1 + 0.05) + 0.5 * 2 *5 = 104.75 hours
This time includes the time to set up the test environment, positive/ negative/ exploratory testing of requirements, re-testing requirement clarifications/ changes, logging defects and re-testing fixes, regression testing, meetings and reporting.
There are several ways to confirm your software testing effort estimate. Use your judgment to find if it looks too low, right or too high. Compare it with the actual testing efforts data for previous projects. Find out if it is 25% - 30% of development effort (do not know why but I have noticed that this range seems acceptable to project managers). You can also ask other managers to review your estimate. Once you have arrived at the test effort estimate for your project and have convinced the stakeholders that it is a reasonable estimate, track the actual progress in your project constantly to see if it is in line with your estimate.
Significant deviation from software testing effort estimate may have financial implications. If you end up charging for more testing effort, the client would not be happy. Alternatively, if it a fixed-price project, you company would not be happy with reduced profitability that comes with higher actual effort. Realistic estimation is important to pay attention to coming up with the suitable formula, estimate the factors realistically and confirm your estimate by using alternative approaches.
December 12, 2013
Tester role in agile software testing
October 31, 2013
Selenium IDE and Selenium WebDriver Training Videos - learn automated testing
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:
- Akim I enjoyed it a lot and learned a lot from your videos - specially on the java side. Once again, I greatly appreciate it.
- Alex I just want to say thank you for your great tutorials.
- 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.
- 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.
- 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.
- Farhod I watched your videos, very easy to understand, thanks, nice job.
- Guillermo I finished all your videos and I learned a lot. Thank you. I will continue practicing.
- Jetal you are very nice tutor and i must say would like to make u my mentor too.
- Karthik They (the training videos) are clear and audible.
- Linda I have been learning your classes, so far it's good. :)
- Marco first of all, congratulations, you're an awesome teacher...
- 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.
- 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.
- Paul cheers Inder its excellent so far, thanks for this, ur effort is awesome.
- Pooja everything is well understood. Great work & great stuff, should say. Also, I am practicing it everyday.
- 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.
- Renji ...The best videos for learning Selenium.
- Roshitha the way u teach is simply awesome.
- 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.
- Sujeet Your training videos are awesome and very much practical in itself. I am following your concepts and its is quite helpful.
- Siva I found training is very useful. Thanks make it effective. Thanks for your support as always.
- 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.
- Vani The videos are very informative and useful.
- 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.
Selenium IDE
Selenium WebDriver
Selenium Interview Questions and Answers
October 02, 2013
JMeter Web Performance Testing Training Videos
September 27, 2013
No Time to Test
Problem One is the only QA engineer for a large team of developers. The rate at which the developers build new features is far greater than the rate at which the QA engineer can test them. How would one ensure high quality is maintained in the application?
Here are the solutions to this common problem that were proposed by the expert group members:
- Involve the developers in the team for some testing.
- At first, test the high business priority features and then the high-risk features. Perform a regression test whenever time permits.
- Prioritize all features to be tested. Test the new features and important bug fixes first.
- Raise the problem to the team highlighting the limited test coverage due to lack of time. Make sure that the team understands and accepts the risk.
- Use test automation to automate sanity test and regression test cases. Build the test automation framework so that developers can easily build automated test scripts.
- Merge test cases or write workflow-based test cases that allow more coverage and take less effort to write and execute.
- Use Requirement and Risk based testing approach by defining the testing scope based on priority, impact and timelines.
Solution Ensure that the team is aware of the limitations of time and resources for testing new features and bug fixes and regression testing. The team needs to understand the risk due to these limitations. Always do your best. Ask and accept help from any team member with your testing tasks.
August 19, 2013
JMeter Web Performance Testing Training Course
JMeter short tutorial
JMeter detailed tutorial
You can see more details of these training videos at JMeter Web Performance Testing Training Videos.
August 06, 2013
Performance Test Reports - JMeter Listeners Tutorial
June 09, 2013
VBScript Questions and Answers
1. Which browser has built-in support for executing VBScript?
2. Which statement is true for VBScript names e.g. variable names or procedure names?
3. What is the datatype of a variable in VBScript?
4. What is the difference between the Sub procedure and Function procedure?
5. In the Select Case statement, which case is used for unknown cases?
6. Which loop is used to iterate till a condition becomes true?
7. What is the purpose of the Set keyword in VBScript?
8. Which VBScript function returns the day of the week for any date?
9. Which VBScript function converts an input string to all lowercase?
10. Which VBScript function can compare two strings?
Score is 0/ 10.
Mention your scores in the comments below.
May 27, 2013
Checkpoints in Automation Testing
April 30, 2013
Script test in TestComplete
April 26, 2013
How to create a keyword test in TestComplete (from SmartBear Software)?
April 20, 2013
How to send an email using VBScript?
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
To see the email message, use .Display method, otherwise processing will be happen in background.
objMail.Display 'To display message
Now fill Recipient email id, Copy email id, Subject and Body, using following commands:
objMail.to = "abc@example.com"
objMail.cc = "pqr@example.com"
objMail.Subject = "Mail Subject"
objMail.Body = "This is Email Body"
To add attachments, one can use following command (Repeat similar command to add more attachments):
objMail.Attachments.Add("C:\Attachment\abc.jpg")
Now email is ready, now use .Send method to send your message to recipient:
objMail.Send
Now open notepad and integrate all these to see how it works. Below is the complete script to send email message (I intentionally commented the objMail.Send line below, so you are not surprised. If you want to actually send the mail, just uncomment objMail.Send line):
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
objMail.Display 'To display message
objMail.To = "recipient@example.com"
objMail.cc = "copyrecipient@example.com"
objMail.Subject = "Test Mail Subject"
objMail.Body = "This is Email Body"
'objMail.Attachments.Add("C:\Attachment\abc.jpg") 'Make sure attachment exists at given path. Then uncomment this line.
'objMail.Send 'I intentionally commented this line
objOutlook.Quit
Set objMail = Nothing
Set objOutlook = Nothing
Save notepad file as .vbs extension. Double click .vbs file to execute VBScript.
To send a mail to multiple recipients, use following commands instead of objMail.To line:
objMail.Recipients.Add("recipient1@example.com")
objMail.Recipients.Add("recipient2@example.com")
objMail.Recipients.Add("recipient3@example.com")
Below is the complete script is to send mail to multiple recipients (I intentionally commented the objMail.Send line below, so you are not surprised. If you want to actually send the email, just uncomment objMail.Send line). Write below code in a notepad file, save it as .vbs extension and then double click to execute script.
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
objMail.Display 'To display message
objMail.Recipients.Add ("recipient1@example.com")
objMail.Recipients.Add ("recipient2@example.com")
objMail.Recipients.Add ("recipient3@example.com")
objMail.Subject = "Mail Subject"
objMail.Body = "This is Email Body"
'objMail.Attachments.Add("C:\Attachment\abc.jpg") 'Make sure attachment exists at given path. Then uncomment this line.
'objMail.Send 'I intentionally commented this line
objOutlook.Quit
Set objMail = Nothing
Set objOutlook = Nothing
Please provide your feedback. Thanks!
Note: This article has been contributed by Vinod Joshi, who is a test automation professional. Vinod is a respected test automation designer. He is very active in the software testing space community. Additionally, Vinod is the moderator of the Software Testing Space group in LinkedIn.
Want to learn VBScript in detail? Use my free VBScript tutorials. Thank you.
April 04, 2013
How to work the Command Window using VBScript?
March 31, 2013
Selenium RC Quiz Part 3
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?
2. How do you start the browser?
3. Do you need to have Selenium .jar files as a dependency of your tests?
4. How many parameters does the Selenium object take when using DefaultSelenium?
5. How do you start selenium rc server with user extensions?
6. Which Selenium command do you use to run commands in slow motion in Selenium RC?
7. Which command is used to get the alert box?
8. Which command is used for verifying if a web element exists?
9. Which command is used for typing in a textbox?
10. What is the command to load a page?
Score is 0/ 10.
Please remember to mention your scores in the comments below. Now answer the quiz on Selenium WebDriver (also known as Selenium 2).
March 16, 2013
Apache JMeter: How to build and run a web test?
If you are new to performance testing or JMeter, please see my video, JMeter Load Testing Beginner tutorial. I have explained performance testing in the first 40 minutes. In the next 40 minutes, I have demonstrated the important basic JMeter features.
Also, you can see a complete JMeter load test explained in my video, Learn JMeter Load Testing in 18 minutes.
March 06, 2013
Selenium IDE Quiz Part 2
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
February 25, 2013
How to keep your passwords secure?
February 24, 2013
Java Questions and Answers Part 2
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
February 06, 2013
Software Configuration Management (SCM) confusing terms explained
- Repository versus Project
- Trunk versus Branch
- Add versus Update versus Commit
- Delete versus Purge
- Checkout versus Lock
- Overwrite versus Merge
- Revision Number versus Message
- Label versus Baseline
February 04, 2013
JavaScript Quiz Part 2 (final part)
February 01, 2013
How to use application metadata for software test automation?
Until next time.
Image courtesy of fotographic1980 / FreeDigitalPhotos.net