Thursday, August 18, 2011

Linux Basics - I

Now a days Linux/Unix has become the most popular OS and most of the companies are expecting testers to have basic Linux knowledge. So I thought it would be good to share few tips while working on linux for no voice testers.


  • Many web servers are said to have a "LAMP" configuration - an acronym for Linux, Apache, MySQL, PHP 
  • "TUX" the penguin is the logo of the Linux operating system. It commemorates and incidet in which Linus Torvalds, while on vacation in southern hemisphere was bitten on the hand by a penguin
  • In Linux Commands are space and case sensitive
  • Do not log in as root, unless you must do so to administer the system. Instead, use the 'su' command to assume root status. 
  • Directories and sub directories are the same thing as folders in Windows
  • Notice that the slashes that seperate directories in Unix are forward slashes (/), not backward slashes (\).
  •  You can display the last few commands you entered by repeatedly pressing the up and down arrows. This way, you can avoid typing in long commands or filenames over again. You can edit the command on the command line, then press Enter again to issue it again
  • There is no Undo button in Unix! Once you have deleted a file, it's gone
  • / contains the mount point for the major filesystems
  • /bin contains the basic commands that are used by all users, such as cat, cp, ping, vi, su and ls
  • cd isn't in the /bin directory. cd is a special command that is built right into the kernal
  • /boot contains the files used by the boot loader, such as LILO, to boot the system
  • /dev contains the special files for different hardware devices.
  • /etc contains the system configuration files that are used by all users
  • /home contains home directories for all users
  • /lib contains the shared libraries that are needed to run the programs
  • /mnt contains the mount point for the external hard drives such as CD ROM, Floppy or Zip drives
  • /proc is a pseudo-file system, which is used as an interface to the kernal
  • /root is the home directory for the root user
  • /sbin contains special commands that are generally used only by root
  • /tmp is for temporary files
  • /usr contains all the commands, applications, documentation and libraries that are needed to operate the system. The files in /usr is meant to be shared by all users and are generally read-only. /usr is often the largest partition
  • /var contains files that regularly change. Log files and other temporary files such as mail and print spools, are usually kept in /var
  •  If you get and error called a segmentation fault, along with a crashed application, that means that the application tried to access a part of memory outside of its address space, so the kernal shit the application down before it could do damage. When this happens you should report bug to the maintainer of the application
  • bash is an acronym for Bourne-Again Shell, which is the traditional shell that was written by Stephen Bourne. All of the Bourne shell built-in commands are available in all versions of bash
  • There are three kinds of variables in bash and most of the other shells: User variables, Environment variables, Built-in variables
  • You can monitor your system on a frequent basis if you are running GNOME click on the mail menu, and select System, System Monitor. This is a wonderful graphical interface that will let you monitor what system processes are running and other useful information
Some useful commands:

cd             - change directory
ls              - list contents of directory
rm            - delete a file (no undelete!)
cp            -  copy a file
mv           - move a file
vi             - edit a file
cat           - dump contents of a file
more        - display file contents in paged format
find          - search file system for files/directories 
grep         - scan file(s) using pattern matching
man          - read/search a man page (try ’man man’)
mkdir       - create a directory
rmdir        - remove directory (’rm -r’ has the same effect)
pwd          - print current absolute working directory
cmp          - show differences between two files
lp             - print a file
df             - show disk usage
du            - show space used by directories/files
mail         - send an email message to another user
passwd    - change password 
clear        - clear the screen
exit         - close the prompt window
date        - display the date and time
free        - show memory usage
chmod   - set permissions on files or directories
top         - dymanically displays process status

Thursday, January 27, 2011

Usability Testing

Earlier there was a time when the very people who designed hardware and software were the only ones to use them. But as the time changed by now the only thing that everyone believes is

"Customer is  God" !!

Meeting customer requirements and gaining customer satisfaction is the only goal for any software.

In house customer for any developer is a 'TESTER'.

What he sees and what he feels is what the end user feels.

In this blog i would like to share the 'User Rights' shared by IBM ease of use. This is how the testers perspective should be while doing usability check.

1. Perspective:

 The user is always right. If there is a problem with the use of the system, the system is the problem, not the user.

2. Installation:

The user has the right to easily install and uninstall software and hardware systems without negative consequences.

3. Compliance:

The user has the right to a system that performs exactly as promised.

4. Instruction:

The user has the right to easy-to-use instructions  (user guides, online or contextual help, error messages) for understanding and utilizing a system to achieve desired goals and recover efficiently and gracefully from problem situations.

5. Control:

The user has the right to be in control of the system and to be able to get the system to respond to a request for attention.

6. Feedback:

The user has the right to a system that provides clear , understandable, and accurate information, regarding the task it is performing and the progress toward completion.

7. Dependencies:

The user has the right to be clearly informed about al systems requirements for successfully using software or hardware.

8. Scope:

The user has the right to know the limits of the system's capabilities.

9. Assistance:

The user has the right to communicate with the technology provider and receive a thoughtful and helpful response when raising concerns.

10. Usability:

The user should be the master of the software and hardware technology, not vice versa. Products should be natural and intuitive to use.

Ref: IBM User Rights

Wednesday, October 27, 2010

Cloud - Cloud computing





Cloud, Cloud computing the buzz words heard everywhere now a days. But what is it?   I started googling about it as we do for most of the things. The first opinion when most of them heard about the word "Cloud Computing" is working from the cloud (Be it while travelling through the clouds or working from the clouds.. :) Of course nothing is impossible for a man. He even can create a workstation in a cloud ;) ) . 



As per Wikipedia the Definition of cloud computing is : 


Cloud Computing is an internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand, like the electricity grid.



Why Cloud Architectures?

1) It address key difficulties surrounding large-scale data processing. In traditional data processing it is difficult to get as many machines as an application needs.
2) It is difficult to get the machines when one needs them.
3) It is difficult to distribute and co-ordinate a large-scale job on different machines, to recover if one machine fails
4) it is difficult to auto-scale up and down based on dynamic workloads. 
5) It is difficult to get rid of all those machines when the job is done.

What are the Business benefits?

1) Almost zero upfront infrastructure investment
2) Just-in-time Infrastructure
3) More efficient resource utilization
4) Usage-based costing
5) Potential for shrinking the processing time

Cloud based services can be broadly divided into: 

  •  Infrastructure as a service (IaaS) (Data as a Service (DaaS) is a subset of IaaS)
  •  Platform as a Service (PaaS)
  •  Software as a Service (SaaS)
IaaS is all about hardware, data storage, networking and bandwidth
 i.e. Server, Routers, Switches etc. Amazon and Rackspace are good examples.

PaaS is OS+Application Server stack like .Net framework, VS.Net, SQL Server etc. Best examples of PaaS are Microsoft's Azure & Google AppEngine.

SaaS is simply order an application & start consuming in minutes. Salesforce.com is the best example for this category.




Top 10 cloud Providers:



  1. Amazon (Specialized in IaaS)
  2. Google (Specialized in PaaS & SaaS. As SaaS it offers Google Apps a web based communication, collaboration & security apps which incudes Gmail, Google calender, Google talk, Google Docs, and Google Sites. As PaaS it offers Google App Engine a platform for developing and hosting web applications in Google-managed data centers. Currently the supported programming languages are Python and Java)  
  3. VMware (Offers vCloud)
  4. Rackspace (Offers Rackspave Cloud)
  5. Salesforce.com (Leader in SaaS)
  6. Microsoft (Specialized in PaaS.It offers Azure, a Windows-as-a-service platform consisting of the operating system and developer services that can be used to build and enhance Web-hosted application.)
  7. Joyent (The only cloud provider company that delivers all the three layers of the Cloud stack.)
  8. IBM 
  9. NetSuite (Specialized in SaaS)
  10. 3Tera (Offers CloudWare. Cloudware is a big step towards bridging the clouds, and creating standards which will lead to open environment for clouds. With this Consumers will be able to move around with their application and data that will span multiple clouds.)
The key concept is that serveral people, companies or organizations can use the same common services, software, hardware and other infrastructure components. By using common components, the costs are driven down, effieciencies go up and everyone is happy :)




Thursday, October 14, 2010

Important Mobile apps testing links

Android:


IPhone:

 IPhone: http://developer.apple.com/library/ios/navigation/
Human Interface Guidelines: http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Introduction/Introduction.html

Palm:

Palm Information: http://developer.palm.com/
Installing Palm SDK: http://developer.palm.com/index.php?option=com_content&view=article&layout=page&id=1545
Command line Tools: http://developer.palm.com/index.php?option=com_content&view=article&id=1552

Blackberry:

Blackberry Dev Zone: http://na.blackberry.com/eng/developers/
Blackberry Simulator: http://na.blackberry.com/eng/developers/resources/simulators.jsp


In case if you are developing an application that needs to play a video (for eg: Scanner application which scans the barcode of a prodcut, fetch the upc of it and displays the ads related to it) following are the links to check the supported video formats on the devices:

Android supported Media formats: http://developer.android.com/guide/appendix/media-formats.html

Apple supported Media Formats: http://developer.apple.com/library/ios/#documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/MediaLayer/MediaLayer.html

Blackberry supported Media Formats: http://supportforums.blackberry.com/t5/BlackBerry-Curve-BlackBerry-8300/Supported-media-files-attachment-files-multimedia/m-p/25917





Tuesday, August 17, 2010

My Views in Testing Mobile Application

In this blog I would like to share my views on how can the testing approach be with respect to mobile applications. I have first categorized it as:

  • Porting/Installation of an application
  • Interruption to an application with other supported functions in mobile
  • Functional testing of an application
  • Error handling

In Detail:

Porting/Installation

  1. Porting the build onto mobile/device should be tested. Unloading and reloading of an app also.
  2. Porting (.jad/.jar) file or other build mechanism testing should be successful. As an example Incase of Palm it is through command line we need to build first and then install it. If URL based download is supported, that should also be tested properly. Eg: For an Android Application the build can be directly installed from the Email.
  3. After successful porting of application delete the icon and check how you can get it back easily. Eg: If it is in case of iPhone app deleting icon is just the uninstallation of app. In case of Android it is not that case.
  4. Try to install application when there is no enough memory in the phone.
Its basically verifying against all the supported options for porting apps to mobile/device



Interruption:

  1. Blue tooth, Infrared interruption
  2. Call (Accept/Reject/Establish) interruption
  3. Voice sms/simple sms interruption
  4. Key press (Eg. when one of the screen in app is opened and when the Del key in the mobile key board is pressed what happens..)
  5. Low Memory
  6. Charger effect
  7. Battery consumption, Removal etc..




Functional:

  1. Menu navigation: check if all the links there, are taking you to the right page or not.
  2. How the page is placed in landscape view and portrait view
  3. Application or page loading time
  4. Logo and background colour should be in sync across the application
  5. Giving interrupts at each screen (loading screen, main menu etc.). Eg: Call to the mobile while the application is loading and check what happens

Error Message handling:

  1. If your application runs only with Internet,  access the application when Internet is down and check if your getting proper error message
  2. when the application is taking lot of time to load
  3. when there are interrupts how is the behavior

Saturday, August 7, 2010

Mobile Applications and Testing it - Part I



The buzz words heard now a days are iPhone, HTC, Motorola, Samsung, Android, Blackberry etc.., all the internet and multimedia enabled smart phones.Now its just your mobile which has almost all the necessary features such as Camera, Visual voice mail, Portable media player, an Internet client with e-mail and web browsing, Wi-Fi connectivity, Bluetooth etc..apart from the basic features of calling and text messages. Almost all these devices have virtual key board or a QWERTY keyboard which just looks like your handling a palmtop and not a mobile



Apart from all the features users are always given the best chance to add Apps to their mobile as per their interest, be it games, reference, GPS navigation, social networking etc.



When I started thinking of mobile applications, many questions came to my mind...

  •  How are the applications developed for mobiles?
  •  Is test driven development possible for mobile applications?
  •  If so how the testing should be done?
  •  From QA what are the steps I need to take care to ensure that the application is working fine?
  • Does the same test cases which I write for the application functional testing on portal/website (cross browser supported) holds good for mobile testing as well?
  • And lot more....
  Most of the mobile platforms are not mutually compatible i.e. most of the applications developed on one platform does not support the other platform. So it's up to the application owner's choice to decide on what platform his application should support. For more information on mobile application development click here
As my focus is mostly on testing, here are my understandings on the same.
Can test driven development be done for mobile applications?
Yes Test driven development is possible for mobile apps as well. 

Do we need to port the application daily into mobile and then test it? No. There are Emulators/Simulators which can be used for testing. They simulate the actual device environment in our computer as shown above. All the functional aspects can be tested in the emulators. 

The major change that I have observed while testing the application on emulator and the actual device is the view of the application. Now a days most of the mobiles have both landscape and portrait views. In emulators we can only check the portrait view. So at the end when we start testing on actual device, you might find lot of resizing issues. This is again if your application supports both Landscape and Portrait views. Most of the applications now are days are strictly developed for portrait view.


Some useful links:

Palm Emulator: Steps to install Palm emulator are given here

Android SDK:  Follow the steps mentioned in the following link to install Android SDK. For more info on how the Android Emulator works click here

In my next blog I will share my experiences on testing an application on actual device.


Tuesday, July 6, 2010

Defect Tracking Tools

After a long time got a good chance of writing on my interesting experience.

Can you imagine a Testers job without a Bug Tracking System?
I can just say it would be this way!!


Earlier i use to work for a project where everything is systematic and we have a well maintained Defect tracking tool called DSolver (The customized version of the Bugzilla). Now i am into a project where we don't have any bug tracking tool. As am the only QA, and after getting used to the well maintained tool it has been really a tough time for me to report and then track the bugs.

Finally i started installing Bugzilla the famous open source defect tracking tool.

Seriously started following step by step procedure mentioned here 

Bugzilla installation needs the following to be installed:

  • Apache
  • MySQL
  • Pearl
Good to see almost all the open source tools use Apache as the webserver and My SQL as the Database. So thought of installing all one after another. But luckily came to know from my collegues about another open source tool  XAMPP.
XAMPP's name is an acronym for:


kool luckily with the installation of XAMPP two steps (installation of Apache and MySQL) reduced to one. :)

Even after lot of struggle could not make Bugzilla up.In parallel we have started searching for another open source tool and as this is a short term project we are looking for easy web based tool.

Then came across another tool FlySpray
Now this again need 
  • Apache
  • MySQL
  • PHP
As i already installed XAMPP i was able to reuse the same Apache and MYSQL and with minimal setup i was able to get a bug tracking tool in the team.

Now All izz well..

So for a short term projects we can use the open source tool called FlySpray and for the larger projects i would say try  Bugzilla.



Thursday, October 29, 2009

Software Testing Principles (GLENFORD J.MYERS)

  1. A necessary part of a testcase is a definition of the expected output or result.
  2. A programmer should avoid attempting to test his or her own program.
  3. A programming organization should not test its own program.
  4. Thoroughly inspect the results of each test.
  5. Test cases must be written for input conditions that are invalid and unexpected, as well as for those that are valid and expected.
  6. Examining a program to see if it does not do what it is supposed to do is only half the battle; the other half is seeing whether the program does what it is not supposed to do.
  7. Avoid throwaway testcases unless the program is truly throwaway program.
  8. Do not plan a testing effort under the tacit assumption that no errors will be found.
  9. The probability of the existence of more errors in a section of a program is proportional to the number of errors already found in that section.
  10. Testing is extremely creative and intellectually challenging task.

Tuesday, July 21, 2009

FURPS+ for Software Testing

The following is the acroynm for the FURPS model and what it covers:

Functionality- Feature set, Capabilities, Generality, Security

Usability- Human factors, Aesthetics, Consistency, Documentation

Reliability- Frequency/severity of failure, Recoverability, Predictability, Accuracy, Mean time to failure

Performance- Speed, Efficiency, Resource consumption, Throughput, Response time

Supportability-Testability, Extensibility, Adaptability, Maintainability, Compatibility, Configurability, Serviceability, Installability, Localizability, Portability

But now a days in software industry FURPS+ Model is widely used:

The '+' includes:

Design requirement: Eg: If you specify that DB, Web server etc. are required its a design constraint

Implementation requirement: Eg: This includes reuired coding standards, Implementation languages and resource limits

Interface requirement: Specifies the external item with which the system must interact

Physical requirement: What hardware must the system be deployable on?

Wednesday, June 24, 2009

Multibyte Testing


MultiByte Testing!!!!!! hmm What it is? Do we need to do this for all kind of products? Why should we do this?

Hey We all say proudly that we work for a MNC. Haa MNC, a Multi National Company. If any of our friends or relatives ask us we say, we have our company in Netherlands, China, Germany, UK, US etc..(the list goes on).

But did we ever think on how your product works on a Chinese environment or a German Environment ?

Yup that's what we do as part of Multibyte testing. We test our software compatibility with respect to other languages.

You might get a doubt on what i mean by Chinese environment and German Environment etc..

let me explain with an exmaple.

Microsofts Windows OS is very popularly known OS and is used almost world wide.

As English is the common language used world wide we generally see the machines in English.

But one of my chinese customer want my software to be seen in Chinese charecter support as shown in the image. For a typical business software, it may even extend to even the Chinese DataBase server also, where as chinese charecters might be considered as some special charecters in normal DB server (English).

This kind of testing is done in this typical kind of environments where your business software is installed in that respective environment, it might be either chinese or german or french etc..
and the functionality of the software remains unchanged.

Saturday, June 20, 2009

Interesting Video on Exploratory Testing



Friends,
I found an interesting video on Exploratory Testing in you tube and thought of sharing with you. :)
Go through it.. damn gud

















Documentation Testing

From the childhood we are used to learn things from books. Hope all of you agree with me. :)

The enthusiasm in leaning new things will grow in us as we growup.

In this software era, how will we be learning about the softwares which hits our eye attention?

Documentation (ofcourse Soft copy of the BOOK again) helps us in doing this.

The Basic three questions which come into our mind when we think of Documentation testing:

What is Documentation?
Why should it be tested?
How should it be tested?


The general user's perspective:

Say One of my hobby is photo editing.

Hey!!! There is a new software, photo editer 1.0 released into the market with all good features like adding Beautiful frames to our image,making the image more attractive with different special effects etc.. and now i can create an album of my own and suprise everyone with my new album..

Now there comes many questions to the users mind.

How should i install this software? "Installation guide" helps me in doing this

oh great installation is successful :) but now...

How should i use it?? "Product Documentation/Help"

wow here this product has a very big documentation.. i think every feature is explained clearly..
and they had a search feature also..

let me check on "how to add frame to my photo".

hey its very clear and easy to use.. now let me try the remaining features..search -> Special effects to the photo.

kool my album is ready with all what i have expected.. All Happies!!!!! :D

Here ends the story of User.

While using the Software, the user does not think on who had developed the software and how did he develop it.. he just thinks of "HOW CAN I USE THIS?" to put it in other words "HOW IS THIS SOFTWARE USEFUL TO ME?"

This is the general tendency of the End User.

It might be a simple software like picasa, vlc media player or complex softwares like Java, any Business softwares..the user will just check how userfriendly and useful it is for him or his Business?

Finally the only thing that matters for us is "Customer/EndUser Satisfaction"

Regarding testing of Documentation:

The test engineers should keep in mind the following things:

User Perspective:
  • Whether the user who does not have any idea on the product but wants to try it will be able to use the software easily with the documentation help provided?
  • Are there any broken links in the documentation? etc..
Product Perspective:

  • Did we document all the features that our product has? so that end user can make use of it use it fully.
Documentation should be tested thouroughly, as this also plays a primary role in selling the software/Gaining the user attention.

Friday, May 29, 2009

Migration

Migration Testing:

Migration testing also includes up gradation testing.

After reading the first statement most of us get a doubt on what i mean by Migration / Up gradation?  

Let me explain my view with an example.

Say i have developed a software and named it as SW1
and now after i release it into the market, good that i got few customers for it. Happy Happy!!! :)

Now as my customers started using it.. they even started reporting the issues.. As there it is a fact that there is no bug free Software in this world.

and after giving some fixes to the customer, to make him happy i got another idea. let me now Compile all fixes into a pack and now give it as a fix pack release. This fix pack may again have only the fixes or may include simple feature which helps customer to enhance his business.

and finally now the fix pack say "FP1" is released.

As business keeps on growing up day by day there will be many more new business requirements.

Now gathering all the new business requirements i planned to release another version of my SW1. And now here is SW2 ready for customers.

again Fix packs on SW2...... so on.. the story continues...

Now coming to the testing side of it

There are two aspects:

  • Up gradation testing: SW1 -> FP1 ->FP2..
  • Migration Testing: (SW1+FP) -> SW2
and coming to migration testing:

There are different categories:
  • Runtime content testing
  • Design time content testing
  • Packaged content testing (This is nothing but the backward compatibility check)
  1. Runtime content testing:  Now say you have your working application which has some design time and runtime content. Now immediately after migration you execute your application and check whether it is fine or not. This is Runtime testing.
  2. Design time content testing: In the design time testing you check whether your content is migrated properly say if you have some HTML pages or XForms and some business process etc.. whether they are migrated properly or not.
Design time content migration check is equally important with the runtime check. The reason is, business keeps enhancing day by day with lot many new customers, and there comes a day where you need to enhance your business process to handle many more. Its not only in the case of business process, but may happen in any content used. Now to edit it you need to have the design time content migrated properly.



Backward compatibility Testing

Backward Compatibility:

What does we mean by it??

Backward compatibility testing is the kind of testing which ensures software pakages(ISVP's) built on your previous versions work on the latest versions.
Eg: you have version 1 of your software and you have developed some applications on top of it for your customer, which generally is delivered as an Idependent Service Vendor Package . 

Now you have Version 2 of your software.

And if you just want to check if the ISV given to your customer works fine on the newer version. This check/verification is called Backward compatibility check.

This also ensures that the previous build functionality is working fine on the latest release.