Tuesday, December 30, 2014

How to create test automation faster

Two of the common approaches to create test automation are Record/ Run and Scripting. But, each of these approaches has associated problems. What is a better approach to build test automation? View my video, How to create test automation fast or read on.

How to create test automation faster

Record and Playback approach
This approach is easy to use, quick and generates self-explanatory steps. However, it hard-codes the input and output test data, the test is fragile. Also, modifying the recorded test needs the recording to be repeated.

Scripting or Descriptive Programming approach
If designed well, the test automation scripts can be robust and input and output test data can be parametrized. Also, modifying the script is easier because the entire script need not be re-written; only the relevant part can be modified. However, this approach needs more skills and takes more time to create the test automation.

Since both the above approaches have problems in isolation, I decided to combine them in a recent Selenium test automation project. I call this approach the Hybrid approach.

Hybrid approach
I used the recording feature of Selenium IDE. Then, exported the Selenium IDE test case to Selenium WebDriver code. After editing the automatically generated WebDriver code, I implemented input and output test data parametrization and exception handling. Much faster than writing all the WebDriver code by hand.

Using the Hybrid approach, I was able to save time while still enjoying the benefits of Scripting or Descriptive Programming approach. If your chosen test automation tool provides recording and export to script, you should consider the hybrid approach. You can see my presentation with an example of the Hybrid approach here.

Happy testing!

Sunday, December 28, 2014

Software Testing

Software testing is an analysis that gives us data to estimate the quality of a system. Testing a system lets us know if the system meets each of its specified requirements or not. It gives us data about the working features of the system. It also provides data about the other relevant system properties like performance, security and usability. Testing provides this data when the system is actually used, not just viewed. This why testing is so important. Especially software testing to estimate software quality. In order to learn more about quality, read my article, What is quality. View my video, Software Testing Introduction - What is it? Why test? to understand what is testing and why is testing needed. Or read on.

Software Testing

Testing requires operation of the system on behalf of the users. The basic aim of testing is to find out if the software works or not. If the software does work, find out if each of its expected features exist in the software or not. If each feature does exist, find out if each feature works or not.

An important aim of testing is to find out if the software meets each of the stated requirements or not. It is common to have the requirements specified in detail. Testing finds if each detail of each requirement is satisfied or not. Each requirement must be correctly implemented in the software. Meaning, there should be no problems observed with respect to any requirement.

Testing commonly generates defects, which are problems for the users with any aspect of the software. These defects are reported to the software developers. The developers fix the defects and the test is repeated to confirm that the defects have gone.

Testing gives us data about the system on the relevant system quality parameters. Like completeness, correct operation, working features, performance, reliability and so on. This helps us in forming our judgment about the system quality. This is an objective judgment because the data to support it is provided by testing. The data provided by testing helps to estimate the risk if the software is provided as is to the end users. Based on this risk estimate, it can be decided whether to ship the software as is OR develop further/ fix defects before shipping the software.

In summary, testing let us know if the system and its features work, if each requirement is met fully and correctly and any defects in the system. Based on this data, the team can form a judgment about system quality and the risk in shipping the software to end users. Then, based on the risk estimate, the team can decide either to ship the software or improve it before shipping.

See also:

Saturday, December 27, 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.

Sunday, December 7, 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.

Thursday, September 4, 2014

VBScript Tutorial - Free

Learn VBScript quickly by using these video tutorials. VBScript is a powerful scripting language developed by Microsoft. Click on the links below to start learning.
VBScript Introduction - tutorial 1: This video introduces VBScript, which is simple and fun to use. It explains variables. It also shows how to write and run a simple script.

VBScript Sub and Function Procedures - tutorial 2: This video explains VBScript procedures, their advantages (save scripting time and testing time) and how to write them. It describes both sub procedures and function procedures.

VBScript If Then statement - tutorial 3: This video explains VBScript conditional statements. Conditional statements control the flow in the script. They contain a condition that can be true or false. If the condition is true, one set of statements is run. If the condition is false, another set of statements is executed.

VBScript Select Case Statement, string functions - tutorial 4: This video explains VBScript conditional statement called the Select Case statement. This Select Case statement finds out the value of an expression at the start of the statement. Different VBScripts statements are run depending on the value of this expression. This is implemented in Case statements within the Select Case statement. If the expression value is not given in any Case statement, the Case Else block is executed. It also explains the many useful functions in VBScript that we can use to manipulate strings.

VBScript For Next statements - tutorial 5: This video explains VBScript looping statements, For Next statement and For Each Next statement. The For Next statement runs a block of code repeatedly depending on the initial and final value of a variable and the step. The For Each Next statement runs a block of code once for each item in a collection or an array.

VBScript Do Loop and While Wend statements. Working with HTML, Excel file - tutorial 6: This video explains VBScript looping statements, While Wend statement and Do Loop statement. These statements are useful when we do not know the number of times a block of code is to be executed. They execute the block of code while the given condition is true. This video also explains how to create HTML (hypertext markup language) file or a web page and Excel file using VBScript.

VBScript Arrays - tutorial 7: This video explains the array variable. An array can be used to store multiple data values. An array can have a fixed size or be dynamic. It is possible to go through each element of the array in order of their index. It is possible to sort an array in a logical order.

VBScript Working with Databases and SQL - tutorial 8: This video explains how to work with databases using VBScript. ADO (ActiveX Data Objects) are COM objects available in VBScript. We can work with the connection and recordset ADO objects. The recordset object is useful when the VBScript needs a copy of the data result set from the database. It is also possible to execute commands directly on the connection object. This video demonstrates VBScript that connects to a Microsoft SQL Server Express dummy database. This script fetches data from the database table, adds a new record, updates an existing record and deletes the added dummy record.

Saturday, August 23, 2014

Demo web application

Demo web application - Journey Planner

This is a simple web application. You should enter the total distance to travel, the average travel speed and the time to travel every 24 hours. Then click on the Calculate Travel Days button.
- If any data entered by you is invalid, you will get an error message in red color.
- If the data you entered is valid, you will get the number of travel days rounded off to 4 decimal places and in black color.
- If you click the Reset Values button, you will empty the distance to travel and average travel speed values and reset the time to travel every 24 hours to 1 hour.
Note: This web app needs a HTML5 and JavaScript-enabled browser in order to display and function correctly.

Enter the distance to travel (max. 10 digits with decimals):         mile(s)

Enter the average travel speed (max. 10 digits with decimals):  mile(s)/ hour

Select the time to travel every 24 hours: 

Tuesday, April 1, 2014

Free Software Testing Tutorials

Several people who are starting out in software testing have inquired about software testing tutorials. Here is the complete list of free software testing tutorials that you can use to train yourself in the concepts of software testing. The link is:

You should view these software testing training videos in the following order:
  1. What is software testing? Why test software?
  2. Waterfall SDLC and V Model in testing
  3. Requirements analysis
  4. Software test strategy
  5. Agile test strategy and Agile test plan
  6. Test cases
  7. Writing test cases effectively
  8. Test data
  9. System testing
  10. Regression testing
  11. Requirements Traceability Matrix
  12. Testing reports
  13. Bug reporting
  14. Test status report
  15. Software tester roles and responsibilities
  16. Equivalence Partitioning and Boundary Value Analysis
  17. Decision Table Testing
  18. Use Case Testing
  19. State Transition Testing
  20. How to design Test Ideas quickly
  21. How to get Domain Knowledge
  22. How to Test Software without Requirements
  23. Top tips to get software testing jobs
  24. Building software testing skills
  25. How to become Software Testing Expert
  26. Test Estimation with formula example and Questions and Answers
  27. Test Lead Interview Questions And Answers
  28. How to Identify Risks?
  29. Risk Management in Software Projects
  30. Severity and Priority in Software Testing
  31. Defect Density
  32. Cause and Effect Analysis
  33. Cyber Security Basic Terms and Concepts
  34. Introduction to Software Architecture
  35. Memory Leak explained
  36. Race Condition in Software
  37. Off-by-one Errors
Hope that you find these software testing tutorials useful :)

Next, learn from the free Test Automation Tutorials.

Monday, March 31, 2014

What is Traceability Matrix?

In software testing, an important document is called Traceability Matrix (TM) or Requirements Traceability Matrix (RTM). This is the document that connects the requirements to the test cases. The connection or mapping of the requirements to test cases is many-many. This means that one requirement is tested by one or more test cases. Conversely, it is possible to have one test case addressing one or more requirements.

If you don't understand the RTM, view the video, Requirements Traceability Matrix that explains the RTM with an example.
Next, let us see some useful points about the Requirement Traceability Matrix.
  1. A well-designed TM has the Req Ids and Test Case Ids. However, it should not have any text from the requirements or test cases because it is just a mapping. The TM could also contain module/ component/ sub-system Ids against each Req Id (see point no. 9).

  2. A TM can be as simple as Req Ids on one axis and Test Case Ids on the other axis. For example, a TM implemented in MS Excel could have Req Ids in a single column (vertically) and Test Case Ids in multiple columns (horizontally). A symbol could mark which requirement maps to which test case.

  3. The TM should be created as early as possible in the project. It becomes tedious to create if there are already numerous requirements and test cases.

  4. The TM should be updated for every requirement change. New requirement is added or an existing requirement is changed or an existing requirement is deleted.

  5. The TM should be updated when a new test case is written. This update could be the final step of completing the test case. If an existing test case is updated or enhanced, the TM should be reviewed for accuracy. The TM should be updated if any test case is retired.

  6. One should be careful with workflow changes because they can impact multiple requirements and therefore multiple test cases.

  7. It is simpler to update the TM if the requirements and test cases are modular and contain no repetitions.

  8. TM is only a document which can become corrupted. Especially if multiple people write to it in an uncontrolled way. Therefore, the TM should be stored in a revision control system with locking and backup/ restore features.

  9. If the TM contains module/ component/ sub-system Ids, it becomes simpler to identify the impacted modules whenever a requirement changes.

  10. Some project management software or test management software provide automatic generation of TM based on requirements and test cases stored in the system. It is even possible to run the queries against the TM because all its information lives in a database.

Happy testing!

Wednesday, 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
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
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
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.

Thursday, January 30, 2014

Learn HTML and Style sheets in one hour - Free training

HTML or Hyper Text Markup Language is the language of the web pages and a basic test automation skill. If you haven't done so, you can learn HTML and CSS/ style sheets using our three free tutorials.  These tutorials cover HTML structure, important tags like links, images, tables, div and span, tag attributes, SEO (basic search engine optimization) and internal style sheets. You can view the tutorials here.
HTML Tutorial 1: This tutorial explains the HTML basics to create simple web pages. What is HTML? How to create the structure of a web page with tags like html, head, body and heading tags? How are tags paired? What is the difference between paired tags and single tags? How to use line breaks?

HTML Tutorial 2: This tutorial explains the important HTML tags. How to implement title, lists, links, images, div, span and tables? What are HTML entities? How to work with tag attributes? What are the important attributes of each HTML tag?

HTML Tutorial 3: This tutorial explains basic SEO (Search Engine Optimization). How to make your web pages more visible to search engines with simple steps? This tutorial also explains internal style sheets i.e. style sheets that affect all the elements of your web page. How to apply style to HTML web elements? How to apply more than one style to the same HTML web element?
Already know HTML really well? Try our HTML Quiz.

Saturday, January 25, 2014

Types of Software Testing

Software testing is categorized into various types. This categorization is based on the focus, approach or method used. Let us see the software testing types.

White box testing - This testing needs the knowledge of the code and data structures of the software. It involves code coverage and testing interfaces. It is mostly performed at the unit level. Also known as clear box testing or glass box testing.

Black box testing - This testing does not require the knowledge of the internal code and data structures of the software. It is based on the inputs given by and outputs obtained by the user. It involves testing the requirements and exploratory testing.

Manual testing - This testing is done by human testers using their knowledge, creativity and intellect. The testers may use a few tools but the majority of the testing is done by hand.

Automated testing - The testing is executed by a computer running test automation code. The test automation is designed by a human tester. The test automation code is generated automatically by a tool (record and playback) or written by the tester by hand.

Friday, 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.

Tuesday, January 14, 2014

Software Defect Prevention

As software testers, we focus on defect detection. In this post, let us see different ways to prevent defects in software. Preventing defects is preferred to detecting defects and removing them. The following guidelines may take us out of our comfort zone. However, they help us connect better with other team members (developers, designers and analysts).
  1. Keep the requirements as simple as possible.
  2. Review the requirements for clarity, completeness, no conflicts and testability.
  3. Use design standards.
  4. Review the software design.
  5. Keep the software code as simple as possible.
  6. Use coding standards.
  7. Unit test the code.
  8. Review the code.
  9. Refactor code to make it simple to understand.
  10. Always communicate well within the team about requirements, design and code.

Wednesday, January 1, 2014

Software Programming and Software Testing videos

This blog has a YouTube channel now. It is called Software and Testing Training. The goal of this channel is to provide self-paced online training in Programming, Scripting, Software Testing, QA, Automation Testing with Selenium, Performance Testing and Load Testing using JMeter, LoadRunner, test automation with QTP, TestComplete, Database testing with SQL Structured Query Language, Java and other programming languages, JavaScript, VBScript and other scripting languages and other technologies like HTML, CSS and XML used in software applications and software systems.

The objective of Software and Testing Training channel is to make available software development training, testing training, qa training, software testing tutorial, automation videos, automated testing tutorial and quality assurance training with details and examples. So that the material is very clear to the viewer. The training topics range from software development and testing fundamentals to advanced programming concepts, advanced scripting, database queries, advanced test methodologies and test automation.

Software and Testing Training channel has thousands of subscribers looking for software programming and testing online training. You too can benefit from it. In order to avail the latest videos with exciting software development and software testing content, please subscribe to Software and Testing Training channel by clicking on this link.