Dec 24

Software Testing is an activity being part of the software development process aimed at evaluating a software item (system, subsystem, unit etc.) features (functionality, performance etc.) against the given set of system requirements.

Types of Testing: Manual and Automation Testing

Manual testing is the process of manually testing software for defects. It requires a tester to play the role of an end user, and use most of all features of the application to ensure correct behavior. To ensure completeness of testing, the tester often follows a written test plan that leads them through a set of important test cases.

Automation testing is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions. Commonly, test automation involves automating a manual process already in place that uses a formalized testing process

Automation testing can be performed on following types of testing:

  • Functional – Functional testing tests a system to verify that it meets its requirements.
  • Regression - testing that the behavior of the system has not changed after a major code change has occurred
  • Exception or Negative - forcing error conditions in the system.
  • Stress - determining the absolute capacities of the application and operational infrastructure. In short to test the reliability of the software
  • Performance - Performance testing is executed to determine how fast a system or sub-system performs under a particular workload.
  • Load - determining the points at which the capacity and performance of the system become degraded to the situation that hardware or software upgrades would be required. Load testing is a way to test performance.

Areas where Automation Testing should be prioritized:

1. Highly redundant tasks or scenarios 
2. Repetitive tasks that are boring or tend to cause human error 
3. Well-developed and well-understood use cases or scenarios first 
4. Relatively stable areas of the application over volatile ones must be automated.

 Advantages of Manual Testing

 1. Manual testing can be use in both small and big projects

 2. Number of test cases can be easily added/reduced according to change in requirement.

 3. Manual Testing is cheap as compared to Automated testing

 4. Easy to learn for new people who are entered in Software testing.

 5. Manual is more reliable then automated (in many cases automated not cover all cases)

 6. More bugs are found via Exploratory Testing. As, the more time a tester spends playing with the feature of the software the more bugs are found, which is not possible in case of Automation.

 Disadvantages of Manual Testing:

 1. User Interface testing is difficult to perform, especially when to test the color combinations.

 2. Actual load and performance is not possible to cover in manual testing for large number of users.

 3. Executing test cases manually is very time consuming.

 Advantages of Automation Testing:

 1. Test cases can be executed in limited time period.

 2. Load and Performance testing can be performed with no hurdles.

 3. It is best used in case of Regression testing (Repeatedly testing), where few test cases need to be executed repeatedly.

 4. Automated testing can be performed on different operating systems simultaneously.

 5. Automated tools are easy for volume testing. Volume testing is a way to test functionality.

 Disadvantages of Automation Testing:

 1. Every test case is to be converted to test script, so it is a time consuming task.

 2. Automation testing is more expensive as comparing with manual testing. Automated tools are very expensive that cannot be used by small organizations.

 3. Test Scripts are written in different languages and also all tools do not support all language of software. And moreover, the test script writer should be familiar with the all the languages (in which test scripts are to be written)

 4. The method/way of displaying the result is not user friendly. Information that is conveyed is hard to figure out.

 5. Automated tool may not identify missing heading tags since it cannot read the content.

 6. If there is a minor change in the requirement, or minor change in requirement, then whole script need to be changed and need to re-do all the things, whereas in case of Manual testing, only the required test case is modified.

 7. Not all tests can be automated and most times is difficult to decide what to automate and what to manually test.

 Some of the above disadvantages often cause damage to the benefit gained from the automated scripts. Though the automation testing has pros and corns, it is adapted widely all over the world.

Dec 06

With so much talk about “cloud computing,” it’s easy to feel lost in the clouds. The term cloud is used as a metaphor for internet, it being the foundation of cloud computing.

To define cloud computing in the simplest form would be: a set of shared resources, delivered over the web, powered by software. It involves the interaction of several virtualized resources and is often provided “as a service” over the internet. Instead of running your applications yourself, they run on a shared data center. When you use any application that runs in the cloud, you just log in, customize it, and start using it.

Broadly speaking, cloud computing can be grouped into 3 categories:

  1. Software as a Service (SaaS); Simplest form would be a web service or anything as extensive as a full blown application. For eg CRM on Demand, SalesForce.com, Gmail etc.
  2. Platform as a Service (PaaS); It encapsulates a layer of software and provides it as a service that can be used to build higher level services. For e:g Yahoo Pipes, Force.com etc
  3. Infrastructure as a Service (IaaS); Delivers basic storage and compute capabilities as standardized services over the network. Servers, storage systems, switches, routers, and other systems are pooled and made available to handle workloads that range from application components to high-performance computing applications

Then there are public, private and hybrid clouds. Public clouds are hosted environments, private being on premise and Hybrid clouds are co-located.

The benefits “Cloud” brings to a business is the independence from buying and maintaining the physical infrastructure and resources for the business applications. It helps companies reduce their TCO ( total cost of ownership) and keeps the business competitive with quicker time to market.

A few concerns that businesses may have with cloud computing are data security issues, compliance and control, SLAs, hidden costs like setups, early termination etc.

TarKia in Cloud Computing Space:

As more and more companies adopt cloud-based enterprise solutions, cloud computing has grown to represent a multi-billion-dollar business opportunity. Not to mention its biggest growth is still ahead. This trend has not only translated into real revenue opportunity, but it also given TarKia the chance to help shape an emerging market. As a Oracle Partner, TarKia offers implementation, integration, and custom application services that leverage the latest cloud computing technologies.

Something to talk about next would be clouds integration!

Dec 03

It is still a perplexity that humans use only 10% of their brains (not 100%, and it might be because less than 10% of the cells in our brains are actually neurons (nerve cells)) but it is true when it comes to noticing CPU usage on task manager or your computer :)

Task_manager

It is a known fact that a server hardly ever uses 100% of the resources installed over it. The processor itself seldom exceeds 10-15% of it’s processing capability when it runs an application, and the same is the case with memory and disk space. The server allows access and serve client computers connected to it through the network and since it’s configured to run a particular application, the full 100% of potential is not utilized. This leads to a lot of wastage in the form of electricity and investment in hardware because businesses have to invest in additional servers and most of all peripheral and support equipment for the networks that includes the power hungry switches or hubs for the network cables.  Absolutely obnoxious !!!

Introduction to Virtualization (Green IT)

Virtualization is the technology that refers to adding up layers of abstraction across many aspects of computing. ”Virtuality” differs from ”reality” only in the formal world, while possessing a similar essence or effect. In IT world, a virtual environment is perceived as same as real environment by application programs and the rest of the world, though the underlying mechanisms are formally different. Virtualization clubs or bifurcates computing resources to present one or many operating environments using techniques like hardware and software partitioning or aggregation, partial or complete machine simulation, emulation and, time-sharing et. al.

VirtualizedArch

Here comes the option to embrace virtualization that a single CPU / Server can be used to host multiple computing environments so that maximum possible return could be reaped. Some of the key benefits are:

  1. Cost effective handling of peak workloads.
  2. Mixed testing and production environments.
  3. Server consolidation requiring data or application independence.
  4. Support of applications requiring different operating system versions.
  5. Support of applications requiring different time zone settings.
  6. Minimization of planned system downtime.
  7. Better utilization of scarce / expensive resources.

IDC1

Core Technology -- Virtualization introduces “Hypervisor” -- A layer which permits multiple OSs to run on the server at same time. It was originally developed in 70s as part of IBM S/360.The hypervisor manages Server’s resources i.e. Processor, memory, disk space et. al to disseminate what each OS demands. Hypervisors are designed for a particular processor(es) architecture.

Hypervisor

Conclusion

Virtualization leverages IT infrastructure to be deployed and managed based on the basis of value they deliver to the business. Effective virtualization planning improves organizational flexibility by striving on delivering capabilities inspite of installing and managing resources. Virtualization enables sysadmins to (Livin’ la vida loca nutrir) contribute to their sorroundings / sphere / environment (Green IT) by conserving power, space, cooling and network gear because they can run more virtual machines per server and it is quite common to see 8-10 virtual machine running on a single $5,000 PowerEdge / Blade server.

References:

http://www.vmware.com

http://www.brentozar.com

http://www.cs.sunysb.edu

Tagged with:
preload preload preload