Thursday, July 23, 2015

Basics of Software Testing - Part-III : Understanding of software

A little background about this - Each person may have their own way of testing or finding issues. They may not necessarily find my method helpful to understand the basics, this is something i'm trying to generalize for the newcomers in software/ firmware testing.  My intention is to make a series out of it, if i can and get enough motivation to write the basic stuffs.



It is really hard to summarize the 4 year course, i’m just touching some topics which may give you an overall idea about the software. Details can be found on Google/ Wiki as well, if interested.


Basics continues…… from previous topics


Types of Software:
In order to get into software testing, one need to understand some basic idea/ knowledge about software. Again, i’m trying to give ideas from a software testing point of view.


A software can be divided into two broad category- Desktop Application or Web Based Application.


  1. Desktop Application- For the desktop application you need to run the software on a machine that has a operating system. Desktop application is basically used by single user at a time (other than Client Server model).


  1. Web Application - On the other hand, Web Application is basically hosted on a machine (Server) and then it can be accessed from any machine using the browser/ other interface. So, on client machine, you don't have to install any software, not required for Admin privilege to install/ run software. It will require to run on a web server/ service. Most of the big business provider uses web application using interfaces to run the application. It definitely requires database at the back-end to store the data.    


Software can also differentiated into many other types like whether it’s a Business to Business Application (B2B), Client Server Application, Standalone application, Application Software, System Software (operating system), Embedded Software/firmware etc. We will focus on these two above mentioned categories.


Software also can categorized as shareware - usually intended for sale after a trial period,  freeware free software but with copyright restrictions or not for commercial use, open source software - where the source code is furnished and users agree not to limit the distribution of improvements.


Web Service Tools:
May not need to know these in details now, just want to give some name. May be in future, if it is relevant, i might want to discuss a little bit. For now, in short, these are the programs that needed to run the Web application. Web application has to be run from these tools.
  1. Microsoft’s IIS Server
  2. Apache Web Server
  3. Tomcat Container
  4. WebSphere Server


Programming Language
Wiki definition “A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs to control the behavior of a machine or to express algorithms.”


Most commonly used programming languages to develop software are:
  1. C, Pascal, Perl - Structure programming language, suitable for small program or project.
  2. Visual Basic - Structural programming language with Visual User Interface. Good for desktop application.
  3. C++, C#, JAVA - object oriented programming language used for larger scale projects.
  4. HTML, ASP, JSP, Servlet, PHP- Needed for the Web application development.


There are few things that are not considered as programming language, but acts like them. These are called Scripts. These are popular
  1. Javascript
  2. VBScript


Programming tools
Programming tools itself are programs that helps the developer to write code. once the language is settled, the first thing it needs an editor that will help to write the code effectively. Developer can write code on a text editor as well, but using an Integrated Development Environment (IDE) helps them to write the code, to compile, to run and to debug the code.    


Developing Software
The way I describe it is, a programming language is a way to write some instructions that machine can understand. Software is collection of function/ programs, whereas Program is a piece of code that perform certain functions. So it needs different material and steps to build a software.
Writing code for software ultimately needs - platform, framework, libraries, language, editor (IDE), compiler/ interpreter.


Two major development platform used for developing software are:
  1. Java/ J2EE framework / J2SE/ J2ME
  2. C#/ .NET framework/ ASP .NET


Writing code itself does not make software. It needs or involves into few more steps. Software Development Life Cycle (or popularly know as SDLC) defines some steps which in total makes the whole life cycle of the software. Starting from Requirement Analysis to Design, then writing code, debugging code, testing, implementation of the software etc.


SDLC itself evolves its process. There different methodologies for SDLC -Waterfall, Agile, Spiral, Test Driven Development, RUP etc. From a software testing perspective, all we need to know is HOW the software should work, WHAT the software supposed to deliver - in other words, the Specs/ Requirements.  


Difference between Software and Firmware
In very general term, Software is collection of program that runs on operating system. It requires environment and mostly used/ hosted on a PC (/ phone!). Software, most of the time has User Interface (UI).


On the other hand, a firmware is program or small number of program that runs on a device without the operating system and without UI. For example, device drivers. These are firmware that interact with the device and the other interface does not necessarily need an OS to run.  


No comments:

Communication - it's very important in recruiting people

One of the common part of our professional life is we get mails from recruiters time to time regardless whether you are looking for job o...