What is software testing

IEEE definition states “testing is the process of exercising or evaluating a system or system component by manual or automated means to verify that it satisfies specified requirements” as such, there are many published definitions of software testing, however all of these definitions boils down to essentially the same thing:

software testing is the process of executing software in a controlled manner, in order to answer the question “does the software behave as specified?” on a whole, testing objectives could be summarized as:

  • testing is a process of executing a program with the intent of finding an error.
  • a good test is one that has a high probability of finding an as yet undiscovered error.
  • a successful test is one that uncovers an as yet undiscovered error.

 

Types of website Testing

Functionality Testing

Functionality testing involves making Sure the features that most affect user interactions work properly.

These include:

  • forms
  • searches
  • pop-up windows
  • shopping carts
  • online payments

Usability Testing

Many users have low tolerance for anything that is difficult to use or that does not work. A user’s first impression of the site is important, and many websites have become cluttered with an increasing number of features. For general-use websites frustrated users can easily click over a competitor’s site.

Usability testing involves following main steps

  • identify the website’s purpose
  • identify the indented users
  • define tests and conduct the usability testing
  • analyze the acquired information

Navigation Testing

Good Navigation is an essential part of a website, especially those that are complex and provide a lot of information. Assessing navigation is a major part of usability Testing.

Forms Testing

Websites that use forms need tests to ensure that each field works properly and that the forms posts all data as intended by the designer.

Page Content Testing

Each web page must be tested for correct content from the user perspective for correct content from the user perspective. These tests fall into two categories: ensuring that each component functions correctly and ensuring that the content of each is correct.

Configuration and Compatibility testing

A key challenge for web applications is ensuring that the user sees a web page as the designer intended. The user can select different browser software and browser options, use different network software and on-line service, and run other concurrent applications. We execute the application under every browser/platform combination to ensure the web sites work properly under various environments.

Reliability and Availability Testing

A key requirement o a website is that it Be available whenever the user requests it, after 24-hours a day, every day. The number of users accessing web site simultaneously may also affect the site’s availability.

Performance Testing

Performance Testing, which evaluates System performance under normal and heavy usage, is crucial to success of any web application. A system that takes for long to respond may frustrate the user who can then quickly move to a competitor’s site. Given enough time, every page request will eventually be delivered. Performance testing seeks to ensure that the website server responds to browser requests within defined parameters.

Load Testing

The purpose of Load testing is to model real world experiences, typically by generating many simultaneous users accessing the website. We use automation tools to increases the ability to conduct a valid load test, because it emulates thousand of users by sending simultaneous requests to the application or the server.

Stress Testing

Stress Testing consists of subjecting the system to varying and maximum loads to evaluate the resulting performance. We use automated test tools to simulate loads on website and execute the tests continuously for several hours or days.

Security Testing

Security is a primary concern when communicating and conducting business- especially sensitive and business- critical transactions – over the internet. The user wants assurance that personal and financial information is secure. Finding the vulnerabilities in an application that would grant an unauthorized user access to the system is important.

 

Use of VMWARE for Software Testing

Using VMWARE for Software Testing

In addition to language or script, one of the key features of VMWare that makes this application a perfect use of VMWare virtualization is in a persistent manner. In non persistent mode, disk operations are simply forgotten when the machine stops and the image returns to its original state. This is a great advantage in a test environment, where they always want to start in a known good.

Same gives another use for the farm, which is not yet enforced, is proof of updates. Very easy to have a surrounding that represents each edition of its software and updates automatically applied to them as part of regression testing.

This is a great article about using virtually as division of a software testing environment even better by her hands on nature. If you do software testing and have not started using virtualization, this article will help you understand why you should.

Example -

A test team to test an application that supports Microsoft applications (of course first they will get support from Windows OS). Equipment testing it in a machine that is running Windows XP Prof.

In the next building (after development) application has the Mac and Linux too.

1. They have enough hardware to install 3 OS (Windows, Mac, and Linux)

2. For Mac users who need an Apple computer for the homogeneous environment.

Now test lead test team suggests that the use of virtualization technology, which has just expanded RAM (4 GB) of the basic machine, installed 2 virtual machine alias VMM administrators (for Linux and Mac). Now Mac and Linux installed on the VMM respectively.

After the test team can test the application on 3 SO (Homogenious environment for heterogeneous hardware). No need to say about saving costs.

What is real Software testing?

Software testing is not just limited to bug finder but more importantly, it is concentrated to find defects in the outcome of the final product. The purpose of testing can vary according to requirements and complexities of the project but in general, it revolves around quality assurance, verification and validation, or reliability estimation.

Testing can involve in some or all of the following factors:

  • Business purpose
  • Functional design needs
  • Technical design requirements
  • Programmer code
  • Corporate standards
  • Professional or trade association best practices
  • Systems administration standards and restrictions
  • Regulatory requirements
  • Hardware configuration
  • Cultural issues and language differences

Manual and Automated testing are the two imperative part of software testing. Manual is actually an oldest way of testing and interesting around 80% of all testing carried out today is manual.

Manual testing is actually an initial process of every software activities and a developer has to perform manual test operations without any sort of automated assistance. This make manual process is a cumbersome activity, as it requires several stages such as: Unit Integration, System and User Acceptance Testing and such process needs certain set of qualities; patient, observant, speculative, creative and innovative skills.

Manual process if done properly can figure out and record any software bugs or discrepancies related to the functionality of the product. Manual testing can be replaced by automation. In fact, automation is usual done when same process is required repeatedly. Manual process is time consuming and takes lot of time and cost than automated to write and run. Such process requires lot of skills and test the quality of developers as it provides limited visibility. Compare to manual process automated may require less complex setup and teardown. Automated testing can actually enforce and driven clean design decisions. It provides a safety net refactoring and such process do not create clutter in code/console/logs.

In order to get high quality Auto and Manual Testing services Outsourcing to Zest Infotech would be the smart option for you to choose and when it comes to a testing, Gateway TechnoLabs is the right place to be. It has a strong team of testing professionals to take challenges and deliver most complicated and time pressure jobs.

WordPress as Web Application Framework

wordpress WordPress, at its core is a blogging platform. However, the way WordPress have evolved over the time, it can surely be seen differently. There are people who use WordPress as a publishing software (and not just a a blogging platform). With the right kind of theme and plugins, using WordPress in this way can produce great results. But there are plenty of other features in WordPress, that take it beyond “just a web publishing platform”, and make it a full-fledged Web Application Framework.

But, what is a Web Application Framework?

According to Wikipedia, a Web Application Framework is:

A web application framework is a software framework that is designed to support the development of dynamic websites, Web applications and Web services. The framework aims to alleviate the overhead associated with common activities used in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse.

Wiki also lists some key features that may be found in Web Application Frameworks:

  • Web template system – Allows for different data sets to reuse templates
  • Caching – Can speed up generation or loading times by caching frequently requested data
  • Security – Providing user logins and access levels
  • Database access and mapping – Easy access methods that abstract out database access to higher level functions
  • URL mapping – Allows replacing complex URLs with query strings with cleaner looking URLs that are parsed in the framework
  • AJAX – Frameworks to make working with AJAX easier can be packaged as part of the Web Application Framework
  • Web services – Offers an externally-usable API for machine to machine communication

How does WordPress fit in this definition?

If you are familiar with WordPress, you would agree that it have all these features!

WordPress themes are nothing but templates, where your front-end design is separated out from your contents. The contents we see on site are actually rendered by standard WordPress loops. One can convert any HTML template into WordPress themes.

WP_Cache is WordPress’ built-in object caching system that offers execution speed improvements by caching frequently-needed objects. Via the plugin functionality, WP Cache and WP Super Cache can offer a large variety of caching options that can increase site performance by an order of magnitude or more.

WordPress offers user logins, and by default, these logins can belong to one of five different access levels. It also have internal logic that determines access to 31 different capabilities in the entire system.

The wpdb class class provided by WordPress hides logic to connect to the database server and makes running queries more simple. Moreover, the options storage mechanism is provided that stores and retrieves data in simple manner.

Pretty Permalinks options allow you to easily modify and manage how the site URLs look like. The WordPress Rewrite API “generates” all the URLs on your site using the format you specify, so you can use this option to expose Google-friendly links.

Offered indirectly,  but jQuery AJAX functionality is included and easily used by WordPress and plugins.

WordPress also supports publishing via Atom, XML-RPC, and email. It also provide automatic pinging facility, so that you can notify other web apps about your newly published contents. It also have default support for RSS feeds.

Thus, bottom line is, almost all of those features listed in section above are included by default with WordPress (WP Cache and WP Super Cache are exceptions, though).

Conclusion

Why we prefer to use a Web Application Framework is because it can make the project quicker to complete and can make maintenance easier long term. That are exactly the reasons why we should think of WordPress as a solution for new web application development.

If you are looking at developing a custom web application and have experience with creating WordPress plugins and/or themes, WordPress is recommended! It may not exactly provide what you are looking for, but you can strip out what you don’t want and leave what you do want, rather than developing everything right from the scratch.

Since WordPress is in active development, code updates come out frequently that improve on security, introduce new functionality, and thus, the overall performance. This also means that you get the benefit of improving the foundation of your web apps without having to actually code all of it.

Webbots? What are they?

Internet bots, also known as web robots, WWW robots or simply bots, are nothing but the software applications that run automated tasks over the Internet. Typically, bots perform tasks that are both simple and structurally repetitive, at a much higher rate than would be possible for a human alone.

In general, web bots can do almost everything what a human can do over the Internet. They can simply:

  • browse the web
  • read the web pages
  • fill up and submit the forms
  • read the emails and respond automatically
  • notice the changes in contents
  • update their knowledge about something (like prices etc.)
  • download something that satisfies particular criteria
  • … and many other actions!

The largest use of web bots is in web spidering, in which an automated script fetches, analyzes and files information from web servers at many times the speed of a human. These programs are also called as web crawlers.

Where can I use them?

The web has become a way of life and is carrying virtually all important data of this world now-a-day. Utilities that bring specific target data to your computer are a vital tool for business of these days. Web bots can address this very need. The web scraping, web aggregation, web crawling and web automation activities are important and useful in many cases – and all of these can be carried out with the help of bots (with minimal human supervision).

Web Scraping
Sometimes we need to use some data available publicly on some web site. For example, prices of some products. But copy-pasting it each time to update our copy is not at all a good idea. We can make use of web scraping bots to do this task for us. Just seat back relaxed, and this scrapper will do everything on behalf of you.

Web Aggregation
Whenever it comes to decision making, we must compare something with the other. So, how do we do this – by visiting all the web pages which are at different locations and noting down the values? Why not to aggregate these?! Web aggregation bots can fetch the contents you bother about, from different web pages and give you a consolidated view of them. The contents from different sources will look exactly same as seen on the original site! Moreover, fetching the contents will be a live, runtime activity. So whenever source gets updated, you are also updated!

Web crawlers
Want a repository of particular type of resources over the web? Use a web crawler! Web crawlers will go and collect whatever you want from the web. The criteria can be anything: get me all mp3 files, or make a list of all pages which have phrase “social media marketing” in the contents, … literally anything! These bots are generally aided by regular expressions, and hence work very effectively. They can give you the list of locations where resources you want are, and they can even download them for you!

Web Watcher
One cannot avoid competition when it comes to business. To stay a step ahead of your competitors, one must keep a watch on them. Every business proudly publishes its Press Releases, Media Coverage, Product Introductions, White Papers, Customer Wins, Upcoming Events, Promotions, Price Changes, Job Openings etc. This information can tell you a lot about what going on at your competitor’s end. But do we need to invest any time to watch our competitors? No! Web bots are also applicable for this. These bots will eventually go and check whether anything has changed on your competitors’ web page. If yes, it will immediately let you know by an email alert!

Automation based on Emails

This is really interesting wing of web bots. You can set email-automation bots to read the emails on your behalf. They can forward the emails to others based on the subject line or sender account or email contents. Moreover, these bots can even reply back to the sender with some predefined message, if they find particular word/phrase/information in mail body or subject line!

Link Verifiers

These bots are basically meant for verifying whether all the links on the web page point to valid, existing and reachable web resource. These bots generally start with the home page, and go on following each link present on each web page. (avoiding the duplications, of course!) Whenever they find the resource being pointed is missing or out of reach (for example, web page cannot be seen, or video file not readable) they notify the user in some or the other way.

These are some of the major uses of web bots, but the list is not limited to! You name the activity over the Internet and most of the times it is doable with web bots. Yes, most of the times… There are still some cases where web bots fail to perform some action, especially when working with dynamically generated links – the one’s which have pseudo session id in the URL. The session ID never remains the same and bots fail in this case.

There are many ethics and other precautions needs to be followed by each web bot (at least expected to do so). Good web bots developers always follow these ethics – most important being to respect robots.txt file on each web server. If this file denies you from crawling/visiting any directory, then you should not! (I would write on this topic in a separate post.)

But overall, web bots are becoming really important factors in the world of the web!

Salesforce.com cloud offerings

Salesforce.com made its name with the success of its flagship Salesforce.com automation
application. Today, the company has three primary areas of focus:

The Sales Cloud

The popular cloud computing sales application

The Service Cloud

The platform for customer service that lets companies tap into the power of customer conversations no matter where they take place

Your Cloud

Powerful capabilities to develop custom applications on its cloud computing platform, Force.com
The company has made its platform available to other companies as a place to build and
deploy their software services.

Force.com offers,

  • A relational database
  • User interface options
  • Business logic
  • Apex, an integrated development environment
  • Workflow and approvals engine
  • Programmable interface
  • Automatic mobile device deployment
  • Web services integration
  • Reporting and analytics

Using Apex, programmers can test their applications in Force.com’s Sandboxes and then
offer the finalized code on Salesforce.com’s site.

Force.com

It is Salesforce.com’s on-demand cloud computing platform—billed by Salesforce
.com as the world’s first PaaS. Force.com features Visualforce, a technology that makes it
much simpler for end customers, developers, and independent software vendors (ISVs) to
design almost any type of cloud application for a wide range of uses. The Force.com
platform offers global infrastructure and services for database, logic, workflow, integration,
user interface, and application exchange.

Visualforce

It essentially a framework for creating new interface designs and enables
user interactions that can be built and delivered with no software or hardware infrastructure
requirements.

Salesforce.com CRM

Salesforce.com is a leader in cloud computing customer relationship management (CRM)
applications. Its CRM offering consists of the Sales Cloud and the Service Cloud and can be
broken down into five core applications:

  • Sales
  • Marketing
  • Service
  • Collaboration
  • Analytics
  • Custom Applications

How Amazon AWS S3 works?

How Amazon S3 Works?

Amazon aims to provide scalability, high availability and low latency at commodity costs through Amazon S3. S3 stores arbitrary objects at up to 5GB in size, and each is accompanied by up to 2KB of metadata. Objects are organized by buckets. Each bucket is owned by an AWS account and the buckets are identified by a unique, user-assigned key. Buckets and objects are created, listed, and retrieved using either a REST-style or SOAP interface. Objects can also be retrieved using the HTTP GET interface or via BitTorrent. An access control list restricts who can access the data in each bucket. Bucket names and keys are formulated so that they can be accessed using HTTP.

Requests are authorized using an access control list associated with each bucket and object, for instance:

http://s3.amazonaws.com/examplebucket/examplekey
http://examplebucket.s3.amazonaws.com/examplekey

The Amazon AWS Authentication tools allow the bucket owner to create an authenticated URL with a set amount of time that the URL will be valid. For instance, you could create a link to your data on the cloud, give that link to someone else, and they could access your data for an amount of time you predetermine, be it 10 minutes or 10 hours.

Bucket items can also be accessed via a BitTorrent feed, enabling S3 to act as a seed for the client. Buckets can also be set up to save HTTP log information to another bucket. This information can be used for later data mining.

“Amazon S3 is based on the idea that quality Internet-based storage should be taken for granted. It helps free developers from worrying about where they are going to store data, whether it will be safe and secure, if it will be available when they need it, the costs associated with server maintenance, or whether they have enough storage available. Amazon S3 enables developers to focus on innovating with data, rather than figuring out how to store it.”

S3 lets developers pay only for what they consume, and there is no minimum fee. Developers pay just $0.15 per gigabyte of storage per month and $0.20 per gigabyte of data transferred.

This might not seem like a lot of money but storing 1TB would be $1800 per year alone, whereas an internal 1TB drive these days costs about $100 to own outright. So it’s really not so much about the cost of storage as it is about the total cost to serve.

Some applications that use amazon S3,

http://stardustathome.ssl.berkeley.edu/

Nirvanix Storage Delivery Network

Amazon cloud offerings

Here is extremely short version of various products from amazon for “cloud computing”. For anybody who is working with AWS this is very basic but for newcomers like me, this should give an idea.

Disclaimer: This is complied from various sources and not written by me.

Amazon Elastic Compute Cloud (Amazon EC2)

Amazon Elastic Compute Cloud (Amazon EC2) is a web service that offers resizable compute capacity in the cloud and is designed to make web scaling easier for developers. Amazon EC2 provides a simple web interface that allows you to obtain and configure capacity with little difficulty. It allows you control of your computing resources. Amazon EC2 cuts the time it takes to obtain and boot new server instances to a few minutes, allowing you to change scale as your needs change. For instance, Amazon EC2 can run Microsoft Windows Server 2003 and is a way to deploy applications using the Microsoft Web Platform, including ASP.NET, ASP.NET AJAX, Silverlight, and Internet Information Server (IIS).

Amazon EC2 allows you to run Windows-based applications on Amazon’s cloud computing platform. This might be web sites, web-service hosting, high-performance
computing, data processing, media transcoding, ASP.NET application hosting, or any other application requiring Windows software. EC2 also supports SQL Server Express and SQL Server Standard and makes those offerings available to customers on an hourly basis.

Amazon SimpleDB For database services

Amazon offers its Amazon SimpleDB. It provides core database functions of data indexing and querying. This service works closely with Amazon Simple
Storage Service (Amazon S3) and Amazon EC2. This provides the ability to store, process, and query data sets in the cloud.

Amazon offers the feature because traditional relational databases require a sizable upfront expense. They are also complex to design and often require the employment of a database administrator. Amazon SimpleDB is—as the name says—simpler. It requires no schema, automatically indexes data, and provides a simple API for storage and access. This makes the process easier to manage and eliminates the administrative burden of data
modeling, index maintenance, and performance tuning.

Amazon Simple Storage Service (Amazon S3)

Amazon Simple Storage Service (Amazon S3) is Amazon’s storage solution for the Internet. It is designed to make web-scale computing easier for developers.
Amazon S3 utilizes a simple web services interface that can be used to store and retrieve any amount of data from anywhere on the Web. It gives developers access to the same data storage infrastructure that Amazon uses to run its own retail empire.

Amazon CloudFront

Amazon CloudFront is a web service for content delivery. It works in conjunction with other Amazon Web Services to give developers and businesses an easy way to distribute content to clients. Amazon promises low latency, high data transfer speeds, and no commitments. The service delivers content using a global network of edge locations. Object requests are automatically routed to the nearest edge location, so content is delivered with the best performance possible.

Amazon Simple Queue Service (Amazon SQS)

Amazon Simple Queue Service (Amazon SQS) offers a scalable, hosted queue for storing messages as they travel between computers. Developers can move data between distributed components of their applications that perform different tasks, without losing messages or requiring each component to be always available. Amazon SQS allows an automated workflow to be created and works closely with Amazon EC2 and other Amazon Web Services.
Amazon SQS exposes Amazon’s web-scale messaging infrastructure as a web service. As such, any computer on the Internet can add or read messages without any specially installed software or special firewall configurations. Amazon SQS components can run independently, and need not be on the same network, developed with the same technologies, or running at the same time.

Elastic Block Store (Amazon EBS)

Amazon also launched its Amazon Elastic Block Store (Amazon EBS), a persistent storage feature for the Amazon EC2. Amazon EC2 is an infrastructure service that provides resizable compute capacity in the cloud. With Amazon EBS, storage volumes can be programmatically created, attached to Amazon EC2 instances, and if even more durability is desired, can be backed with a snapshot to the Amazon Simple Storage Service (Amazon S3).
Prior to Amazon EBS, storage within an Amazon EC2 instance was tied to the instance itself so that when the instance was terminated, the data within the instance was lost. With Amazon EBS, users can choose to allocate storage volumes that persist reliably and independently from Amazon EC2 instances. Additionally, for even more durable backups and an easy way to create new volumes, Amazon EBS provides the ability to create point-intime, consistent snapshots of volumes that are then stored to Amazon S3. “For over two years, we’ve focused on delivering a cost-effective, web scale infrastructure to developers, giving them complete flexibility in the kinds of solutions they deliver,” said Peter De Santis, general manager of Amazon EC2. “Persistent block storage has been among the top requests of developers using Amazon EC2, and we’re excited to deliver Amazon Elastic Block Storage designed specifically for our cloud-based, elastic computing environment.”

Amazon EBS is well suited for databases, as well as many other applications that require running a file system or access to raw block-level storage. As Amazon EC2 instances are started and stopped, the information saved in your database or application is preserved in much the same way it is with traditional physical servers.

 

Programming with Microsoft Windows Azure

Azure is similar to Google App Engine where you have to download SDK but it has many more features. You develop applications within Visual Studio which you can publish in Windows cloud. The Azure Services Platform is designed to help you quickly and easily create, deploy,manage, and distribute web services and applications on the Internet.

Something about Windows Azure again,

Windows Azure is an operating system for the cloud that serves as the development,
run-time, and control environment for the Azure Services Platform. Windows Azure
provides developers with on-demand compute and storage to host, scale, and manage web
applications on the Internet through Microsoft data centers.

Prerequisite

To get started developing applications for Azure, you must first download the SDK which is located at http://www.microsoft.com/downloads/details.aspx?familyid=AA40F3E2-AFC5-484D-B4E9-6A5227E73590&displaylang=en

You need to check if you have supported Operating system. Supported operating systems are,

  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Windows Vista Business
  • Windows Vista Business 64-bit edition
  • Windows Vista Home Premium
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Ultimate
  • Windows Vista Ultimate 64-bit edition

Note: If you have 64 bit OS, download 64 bit version. 32-bit will not work.

Other software requirements include

  • Windows Vista SP1 (when installing on Windows Vista)
  • .NET Framework 3.5 SP1
  • IIS 7.0 (with ASP.NET and WCF HTTP Activation)
  • Microsoft SQL Server Express 2005 or Microsoft SQL Server Express 2008

Microsoft also recommends that you have the Windows Azure Tools for Microsoft Visual Studio installed.

Once you install the Azure SDK, it will add new templates:

  • Blank Cloud Service
  • Web Cloud Service
  • Web and Worker Cloud Service
  • Worker Cloud Service

CLIs from SDK
Windows Azure SDK includes two development utilities. This helps us develop our Windows Azure application in our local machine:

  • The Development Fabric This tool helps us to run and test Windows Azure application locally before deploying into Cloud.
  • The Development Storage This simulates the Blob, Queue, and Table Storage services available in the cloud.

Creating the App

Creating cloud apps with Windows Azure is accomplished through Microsoft Visual Studio
2008. To start making your apps, follow these steps:

  1. Run Visual Studio 2008 as an administrator.
  2. Create new project, select Cloud Services from the Visual C# project type.
  3. In the Templates list, click Web Cloud Service. This creates a web role.
  4. Enter the names for your project and solution, and make sure that the Create Directory for Solution box is checked.
  5. In the Solution Explorer, you’ll see that the solution structure was created. You’ll see two projects, a Cloud Compute project and an ASP.NET project. The ASP.NET project will contain your code.
  6. The Cloud Compute project contains a reference to the ASP.NET project, as well as the service definition file (.csdef) and service configuration file (.cscfg).
  7. Change the Default.aspx page to display some custom text for this example like “Hello World”

Running the App Locally

You can test the application locally before publishing it to the Azure cloud. You can do that by following these steps:

  1. Press F5. This starts the service in the development fabric.

I liked Google App Engine because it has python which is close to Perl so decided to explore it more instead of continuing with Windows Azure. Well I will also try Amazon and salesforce.com but some other day.