Saturday, 26 May 2012

Mobile Websites -- WHY?

Mobile devices are gaining momentum. Companies of all types and sizes are developing and implementing mobile applications to increase productivity, help their distributed teams stay connected and allow customers to access essential services even when they are away from their computers.

If your goals are primarily related to marketing or public communications, a mobile website is almost always going to make sense as a practical first step in your mobile outreach strategy. This is because a mobile website has a number of inherent advantages over apps, including broader accessibility, compatibility and cost-effectiveness.

Immediacy – Mobile Websites Are Instantly Available
A mobile website is instantly accessible to users via a browser across a range of devices (iPhone, Android, BlackBerry etc). Apps on the other hand require the user to first download and install the app from an app marketplace before the content or application can be viewed - a significant barrier between initial engagement and action/conversion.

Compatibility – Mobile Websites are Compatible across Devices
A single mobile website can reach users across many different types of mobile devices, whereas native apps require a separate version to be developed for each type of device. Furthermore, mobile website URLs are easily integrated within other mobile technologies such as SMS, QR Codes and near field communication (NFC).

Upgradability – Mobile Websites Can Be Updated Instantly
A mobile website is much more dynamic than an app in terms of pure flexibility to update content. If you want to change the design or content of a mobile website you simply publish the edit once and the changes are immediately visible; updating an app on the other hand requires the updates to be pushed to users, which then must be downloaded in order to update the app on each type of device.

Findability – Mobile Websites Can be Found Easily
Mobile websites are much easier for users to find because their pages can be displayed in search results and listed in industry-specific directories, making it easy for qualified visitors to find you. Most importantly, visitors to your regular website can be automatically sent to your mobile site when they are on a handheld (using device-detection).  In contrast, the visibilities of apps are largely restricted to manufacturer app stores.

Shareability – Mobile Websites Can be Shared Easily by Publishers, and between Users
Mobile website URLs are easily shared between users via a simple link (e.g. within an email or text message, Facebook or Twitter post). Publishers can easily direct users to a mobile website from a blog or website, or even in print. An app simply cannot be shared in this fashion.

Reach – Mobile Websites Have Broader Reach
Because a mobile website is accessible across platforms and can be easily shared among users, as well as search engines, it has far greater reach capability than a native app.

LifeCycle – Mobile Websites Can’t be Deleted
The average shelf-life of an app is pretty short, less than 30 days according to some research, so unless your app is something truly unique and/or useful (ideally, both), it’s questionable how long it will last on a user’s device. Mobile websites on the other hand are always available for users to return to them.

A Mobile Website can be an App!
Just like a standard website, mobile websites can be developed as database-driven web applications that act very much like native apps. A mobile web application can be a practical alternative to native app development.

Time and Cost - Mobile Websites are Easier and Less Expensive
Last but certainly not least, mobile website development is considerably more time and cost-effective than development of a native app, especially if you need to have a presence on different platforms (requiring development of multiple apps).

Support and Sustainability
The investment considerations of app vs. website don’t end with the initial launch; properly supporting and developing an app (upgrades, testing, compatibility issues and ongoing development) is more much more expensive and involved than supporting a website over time


Friday, 25 May 2012

misConception about TESTING


Have you heard people saying “Testing doesn’t provide much value to the organization”, “anybody can do Testing”, “Testing is a boring, repetitive job with no creativeness involved”, “hire some out of school kids to test applications” or “Testers are in reality ‘developer wannabees’, can really have an impact on your team’s morale.

There are so many misconceptions that are out there but actuality is-

Testing is a skilled activity that requires the ability to think, explore and follow logic while questioning and reasoning at the same time. Sorry, you just can’t take anybody off the street to do Testing. It takes a skilled, intelligent professional who understands the needs of the organization and is ready for the task!

Your applications are a critical company asset. Depending on the nature of your business, direct profit and revenue can be impacted if an application goes down or performs poorly. And of course, a company’s reputation can also be seriously damaged when things don’t “work” right. Think about it. Will you hire an inexperienced, out of college kid to take care of your critical investments and financial assets? If you answer yes, then I would say sure, go ahead and hire an out of school kid to test your applications.

While it is true that some Testing engineers like to get into the code, and enjoy using automated scripts, there are other folks that prefer a “thinking & building test cases while executing manual tests” type of approach.

Testers represents the heterogeneous users of the products that your company produces, so they are there to improve product quality, ensure a better user experience and reduce support costs. To top it all, QA teams assess product conformance to specifications and standards, while checking interoperability with infrastructure, complementary products and/or third party vendor products.

Well, this one could be partially true, depending on the internal processes that you have in place. For example, if Tester is not involved with a project from the beginning, there is not much room to bring new ideas or feedback to product’s requirements. And this could translate into lack of empowerment, and not feeling appreciated.

Here are few points which can be used to improve/motivate your testing team without increasing the budget-


  • Take a look at internal atmosphere of organization and try to understand the internal atmosphere. And identify the areas which require improvement in terms of Process, Attitude or anything.
  • Brag about your team to stakeholders and peers – Show off your team in front of the Customer/Client/Stakeholders and don’t let any chance to go for this.
  • Improve relations with the development team - try building a personal relationship between Dev and testing, and try to understand the point of view from both when discussing issues. Frequent Team Building could be a good option to success it.
  • Enhance your testing JD – A job description leaves an impression about the organization before any one actually joins. So that JD should be attractive and should leave a positive message about the Company
  • Involve testing in your development cycles from the beginning – Identify and Try to get involve testers at the very beginning of projects and let the give opportunity with responsibilities to understand and make a hold on the whole project.
  • Gaze the ways to automate – to be part of Automation Team is always a dream for a tester who is working in a Dev-Testing Project. Run a drive to identify the people who are skilled and can be fit for automation and let them research and discover the new tools and systems for their current projects/clients, and if there is success you can get a lot advantage by selling them to the customer.
  • Consider rotating projects and responsibilities across team – anyone will be bored by doing the same/monotonous job after a significant time, to avoid this make it in practice to change the teams/responsibilities or project if feasible. Let them explore the different projects domains.
  • Engage your team in customer interactions - If there is an interest within the team look for opportunities to engage your team in customer interactions (customer visits, demos, conference calls, booth duties at conferences, etc). It will translate into increased job satisfaction among your team, and more job security 


Tuesday, 22 May 2012

Static Testing vs Dynamic Testing


Static testing is performed using the software documentation. The code is not executing during static testing. 

The Verification activities fall into the category of Static Testing. During static testing, you have a checklist to check whether the work you are doing is going as per the set standards of the organization. These standards can be for Coding, Integrating and Deployment. 

Review's, Inspection's and walkthrough's are static testing methodologies

Dynamic testing requires the code to be in an executable state to perform the tests

Dynamic Testing involves working with the software, giving input values and checking if the output is as expected. These are the Validation activities. 

Unit Tests, Integration Tests, System Tests and Acceptance Tests are few of the Dynamic Testing methodologies

Following points would help to understand-

  • Static testing is about prevention, dynamic testing is about cure
  • Static testing is many times more cost-effective than dynamic testing
  • Static testing beats dynamic testing by a wide margin
  • Static testing gives you comprehensive diagnostics for your code
  • Dynamic testing finds fewer bugs than static testing
  • Static testing achieves 100% statement coverage in a relatively short time, while dynamic testing often often achieves less than 50% statement coverage, because dynamic testing finds bugs only in parts of the code that are actually executed
  • Dynamic testing usually takes longer than static testing. Dynamic testing may involve running several test cases, each of which may take longer than compilation.
  • Static testing can be done before compilation, while dynamic testing can take place only after compilation and linking
  • Static testing can find all of the followings that dynamic testing cannot find: syntax errors, code that is hard to maintain, code that is hard to test, code that does not conform to coding standards, and ANSI violations


Verification vs Validation


The terms ‘Verification‘ and ‘Validation‘ are frequently used in the software testing world but the meaning of those terms are mostly vague and debatable. You will encounter (or have encountered) all kinds of usage and interpretations of those terms, and it is our humble attempt here to distinguish between them as clearly as possible.

Verification ensures that the system (software, hardware, documentation, and personnel) complies with an organization’s standards and processes, relying on review or non-executable methods.

Validation physically ensures that the system operates according to plan by executing the system functions through a series of tests that can be observed and evaluated.

Verification answers the question, “Did we build the right system?

while 

Validations addresses, “Did we build the system right?

Keep in mind that verification and validation techniques can be applied to every element of the computerized system. You’ll find these techniques in publications dealing with the design and implementation of user manuals and training courses, as well as in industry publications.

Quality Assurance vs Quality Control


There is often confusion in the IT industry regarding the difference between quality control and quality assurance. Many “quality assurance” groups, in fact, practice quality control. Quality methods can be segmented into two categories: preventive methods and detective methods.

Quality has two working definitions:

Producer’s Viewpoint – The quality of the product meets the requirements
Customer’s Viewpoint – The quality of the product is “fit for use” or meets the customer’s needs

There are many “products” produced from the software development process in addition to the software itself, including requirements, design documents, data models, GUI screens, programs, and so on. To ensure that these products meet both requirements and user needs, both quality assurance and quality control are necessary.

Quality Assurance

Is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meet user needs.

Quality assurance is a staff function, responsible for implementing the quality policy defined through the development and continuous improvement of software development processes.

Quality assurance is an activity that establishes and evaluates the processes that produce products.

If there is no need for process, there is no role for quality assurance. For example, quality assurance activities in an IT environment would determine the need for, acquire, or help install:

  • System development methodologies
  • Estimation processes
  • System maintenance processes
  • Requirements definition processes
  • Testing processes and standards

Once installed, quality assurance would measure these processes to identify weaknesses, and then correct those weaknesses to continually improve the process.

 Quality Control

Is the process by which product quality is compared with applicable standards, and the action taken when non-conformance is detected. Quality control is a line function, and the work is done within a process to ensure that the work product conforms to standards and requirements.

Quality control activities focus on identifying defects in the actual products produced. These activities begin at the start of the software development process with reviews of requirements, and continue until all application testing is complete.

It is possible to have quality control without quality assurance. For example, a test team may be in place to conduct system testing at the end of development, regardless of whether that system is produced using a software development methodology.

The following statements help differentiate quality control from quality assurance: 
  • Quality control relates to a specific product or service.
  • Quality control verifies whether specific attribute(s) are in, or are not in, a specific product or service.
  • Quality control identifies defects for the primary purpose of correcting defects.
  • Quality control is the responsibility of the team/worker.
  • Quality control is concerned with a specific product.
  • Quality assurance helps establish processes.
  • Quality assurance sets up measurement programs to evaluate processes.
  • Quality assurance identifies weaknesses in processes and improves them.
  • Quality assurance is a management responsibility, frequently performed by a staff function.
  • Quality assurance is concerned with all of the products that will ever be produced by a process.
  • Quality assurance is sometimes called quality control over quality control because it evaluates whether quality control is working.
  • Quality assurance personnel should not ever perform quality control unless it is to validate quality control.