Thursday, October 27, 2011

Smart Phone Market Trend


When compared to Apple and Google, no one has any sort of hesitation to label Microsoft as a player who is still struggling to gain respectable share in the smart phone ecosystem.  But Microsoft is not giving up the hope and is looking to various partners like Nokia who has a worldwide reach to help it come up from behind.  Recent event like Nokia introducing two smart phones the Lumia 800 and Lumia 710, both based on Windows mango OS proves this.

Smart phone OS Market Share
Nokia too, a pioneered and dominated player until Apple and Google showed up is looking for image makeover.  With Google said to buy Motorola Mobility Holdings Inc in a bid to introduce hardware to the Android system and with Apple already a maker of both the iPhone hardware and the operating system (iOS).  Some analyst sees the availability of variety of Windows Phone models as one of Microsoft core strengths, but at the same time avoiding the "chaos" found in Android (a Linux based system operating system, developed by the Open Handset Alliance led by Google to work on the hardware from HTC, Samsung, Motorola, Sony and LG) by controlling the operating system and working directly with multiple operators and manufacturers including Nokia. This unique strategy of Microsoft’s partnership programs are something to watch for in the smart phone space in the coming days.
Events influencing Smart Phone Market
While Apple, Google and Microsoft battle it out, what amazes equally is the technological growth in the industry in the last few years.

Apple Humor
Nokia Lumia 800 phone for example feature a 3.7" screen, 1.4GHz processor, 16Gb of internal memory, 8MP instant share camera based on top end Carl Zeiss optics and runs on high-speed 4G networks that use a technology called LTE, or Long Term Evolution, as well as on older(!!) 3G networks. Only a year back, BSNL and AirTel offering 3G in India was big news and 5 MP cameras were considered a symbol of lavishness.

In such a high competitive smart phone ecosystem the question everyone has in mind is will Microsoft with its never ending innovation and past experience in wooing the customer be able to project itself as a tough competitor to Google and Apple with the help of once the innovative force in mobile phones market - Nokia. It is unlikely that Microsoft will be able to pull this off without fighting really hard in the coming years.

Monday, August 15, 2011

Mainframe Enablement for SOA: Part IV


Over the last two decades, CEOs of large corporations are finding themselves locked in a vicious cycle. Maintenance of legacy system are taking a bigger share in their IT budgets each year, as a result of which only very less is available for developmental upgrades.  But without developmental upgrades, maintenance on outdated systems is only going to create more problems in the long run. Now the industry has found a solution though Service Oriented Architecture (SOA), which offers a low-cost methodology to integrate, update, and manage data, applications, and utilize effectively any existing legacy system.

By moving to a SOA environment, you can gain a significant return on the investment by reusing components of your legacy systems. However, migrating to an SOA environment is neither automatic nor easy.  First step in moving towards SOA consists of providing access to mission critical business data and application in a technology neutral way. As pointed out in a  previous blog “Mainframe Enablement for SOA: Part I “of mine, Mainframe still enjoys a special status in many Fortune 500 companies and world’s largest corporations, including banking, finance, health care and insurance companies as they still run the business and contain critical business logic that is unique, difficult and costly to replicate. So in this blog we will explore the ways to enable mainframe application so that they can be part of the SOA world.

There are many solution approaches to enablement including few we have discussed in “Mainframe Enablement for SOA: Part I and Part II”. However, the making use of ESB is a better way. It provides many advantages in the area of governance, flexibility, quality of service (QoS).

Architecture


Note that ESB such as WebSphere Enterprise Service Bus supports z/OS and other distributed platforms like Linux for System, AIX and Windows. This approach requires the following software:  IMS Version 9 and IMS Connect Version 9 or above and for IMS enablement, CICS Transaction Server and CICS Transaction Gateway for CICS enablement. Other things required is J2C connectors like IMS TM Resource Adapter which implements the J2C Common Client Interface (CCI), a programming interface that allows your application to communicate with IMS Transaction Manager and CICS TG Resource Adapter, which allows communication with CICS Gateway.

Advantages of this approach

There are many advantages in using ESB as part of the solution since ESB are designed to avoid the point-to-point connectivity between services provider and service consumer, whereby it provides location transparency. 

ESB routes messages between services thereby removing the direct one-to-one relationship between end points.

ESB also provides built-in transformation capabilities for both message formats (for example binary into XML) as well as transport protocol transformation (example SOAP to MQ). 
And with CICS TG and IMS Connect providing two-phase commit, advanced security and system management, and the fact that no change is required in the CICS programs or IMS programs it turns out to be, the ideal way to enable Mainframe for SOA.

Thursday, August 4, 2011

Mainframe Enablement for SOA: Part III


In Mainframe Enablement for SOA Part I and II, we have discussed the approaches to enable CICS applications and IMS; now let us explore an approach to expose DB2 data or application as service.
JDBC Solution

The DB2 application or data can be exposed as Web services, implemented in J2EE Application Server via Java Database Connectivity (JDBC).  These Web services can be accessed directly from a Web service consumer using the Web Service protocols.

The Java Database Connectivity (JDBC) is an application programming interface (API) that the Java programming language uses to access relational database, such as DB2. The actual implementation of the JDBC interface is provided by the database vendor as a driver. This provides portability because all access using the JDBC is through standard calls with standard parameters. This enables an application developer to write code with little regard to the database being used, because all of the platform-dependent code is stored in the JDBC drivers.

There are 4 types of JDBC driver and z/OS supports Type 2 and Type 4. A type 2 driver is platform- and database-specific implementation.  Type 4 drivers are implemented using Java and are platform independent but are database-specific as they use proprietary database protocol to connect. For example, DB2 Type 4 driver access DB2 through DRDA. These pure Java drivers deliver high performance, scalable remote connectivity and manageability for Java-based enterprise applications to a remote DB2 running in z/OS database server


Architecture


Advantages of this approach
  • Extremely easy to use and quite popular approach with Java developers.

Sunday, July 17, 2011

Mainframe Enablement for SOA: Part II

My previous blog, discussed the approach one could adopt if the organization’s portfolio comprises of CICS applications; now let us discuss the one of the simplest approach to expose IMS application as service.

IMS SOAP Gateway 


 IMS Enterprise Suite SOAP Gateway is a web services solution that enables IMS applications to interoperate outside of the IMS environment through the SOAP protocol.

The IMS application can be exposed as Web services, by first creating a Web Service Description Language (web service interface) for the IMS application followed by deploying the web service interface to IMS SOAP Gateway and defining the connection and correlation information by using the deployment utility. Once deployed, any client application (Java or Microsoft .NET based) can send a SOAP message to invoke the IMS application. SOAP Gateway is compliant with the industry standards for web services, including SOAP/HTTP 1.1 and Web Services Description Language (WSDL) 1.1

Tools like Rational Developer for System z can be used to generate the WSDL file that is needed to enable the IMS application to run as a Web service provider.  All that is required to generate the WSDL file is the COBOL copybook for the IMS application that describes the input and output message format.

Architecture

Note that SOAP Gateway supports various z/OS, other distributed platform like Linux for System, AIX and Windows. This approach requires the following software:  IMS and IMS Connect Version 10 or above and IMS SOAP Gateway.

Advantages of this approach

  • Simple and easy way to enable IMS application. 
  • Existing transactions can be retained with no change.

Even though this is an easy way to enable IMS transaction, this approach has many many drawbacks such as no support for MFS-based transactions and two-phase commit.  So exploring the options which make use of Enterprise Service Bus is suggested.  Will look at the ESB based enablement in a subsequent blog.

Thursday, July 14, 2011

Mainframe Enablement for SOA: Part I

Even today, mainframe computers play a pivotal role in the daily operations of many of the world’s largest industries, including banking, finance, health care and insurance companies. While many other forms of computing are also being used, mainframe occupies special place in e-business dominated world. 

All began in 1960s, when IBM introduced S/360 followed by S/370 and S/390 with Multiple Virtual Storage support (MVS) OS to the current z9 and z10 with z/OS (A 64-bit operating system). Mainframe computing remains relevant even today  due to its high reliability, availability, and serviceability (RAS), security, scalability, continuing compatibility, evolving architecture, extensibility, and  lower total cost of ownership (TCO) 

The advantages of mainframe computing are often overshadowed by the need for premium hardware and labor costs, costly software licensing and maintenance expenses. In the face of all these difficulties, some organizations wish to   migrate to open systems. But there are many problems.  Mainframe cannot be dropped or replaced easily because: they still run the business and contain critical business logic that is unique, difficult and costly to replicate.  Reusing existing application will always leverage previous IT investments.  Since these systems has not become useless but has only limited business agility and flexibility in the current scenario, effort should be made to modernize these systems to meet the additional business needs. 

There are many ways to enablement including exposing the data on z/OS as a service and exposing the programs on z/OS as a service. When we say, exposing data on z/OS, it includes the following, VSAM data, IMS data and DB2 data. And when we say, exposing programs on z/OS, it includes the following, CICS program, IMS programs and DB2 stored procedures.  

Below we will discuss an approach which can be adopted if the organization whose application portfolio comprises of well designed CICS applications and uses 3270 displays as the user interface to the CICS application.

CICS Transaction Gateway 

The CICS application can be exposed as Web services, implemented in WebSphere Application Server via CICS TG.  These Web services can be accessed directly from a Web service consumer using the Web Service protocols.

The CICS Transaction Gateway (CICS TG) is a set of client and server software components that allow an application based on Java to invoke services in a CICS region. CICS TG currently supports the following platforms: z/OS, OS/390, Linux for System, AIX, Sun Solaris and Windows.

Architecture


Note that both CICS TG and WebSphere Application Server can run on z/OS or other distributed platform.  This approach requires the following software:  CICS Transaction Server, CICS Transaction Gateway and WebSphere Application Server or a J2EE server supporting the CICS TG resource adapter.

Advantages of this approach
  • CICS TG is a mature connector supporting two-phase commit, advanced security and systems management.
  • No changes to the existing CICS programs are required.
  • Performance extremely good, especially when all three (WebSphere Application Server, CICS TG, and CICS) run on z/OS. 

One of the drawbacks of this approach is that, the connection between WebSphere Application Server and CICS is not totally coupled loosely, for this exploring alternatives which make use of Enterprise Service Bus is suggested.  We will look at the ESB based enablement in a subsequent blogs.

Tuesday, January 4, 2011

Career Guide: Tester

One of the most frequently asked questions about web application testing goes something along the lines of,

"I am interested in becoming a tester, but I don't know where to begin. There seems to be so many types of  software testing techniques, methodologies and tools, that I feel lost. How do all these testing methods relate to each other, which ones do I need to learn in order to be considered a serious professional, and which one should I learn first?"

However, there is no single answer to these types of questions and truly no unique set of testing techniques or tools which can address all requirements of a web application.

This article's focus is on those who are trying to make their first step into the IT industry and for beginners who wish to find the right guidelines (set of tools and techniques to master) to make a career out as tester in a web applications based company.

1. Software testing is an integral part of the Software Development Life Cycle (SDLC). Software testing is nothing but subjecting a piece of code to both, controlled as well as uncontrolled operating conditions, in an attempt to observe the output and examine whether it is in accordance with certain pre-specified conditions. Different sets of test cases and testing strategies are put in place, all of which aim at achieving one common goal - removing all the bugs and errors from the code and making the software error-free and capable enough of providing accurate and optimum outputs. So a sound knowledge in the following areas is a must for a tester.

  • Software Development Life Cycle (SDLC)
  • Software Testing Life Cycle  (STLC)

2. Knowledge of various  testing techniques which are adopted as part of the software testing process is the next topic one should master. Even though there are many, have enlisted a few of them which are commonly  followed in all project.

  • Functional testing
  • Integration testing
  • Regression testing
  • Smoke testing
  • Performance or Load testing

3. Relational databases are generally the preferred choice for storing application data. Relational Database Management Systems (RDBMS) help to organize, store, and retrieve the data in a very efficient manner. Since testing involves checking where the user entered data gets populated in the databases, clear understanding the basics of Relational Database Management Systems like Oracle (http://www.oracle.com/) or MYSQL (http://www.mysql.com/) and Structured Query Language SQL is essential.

4. The essence of novice tester is his ability to understand the functionality or the module that is about to tested and execute the test  cases and record their findings.

Mastering the above technologies, equips you with the required minimum skill sets but it doesn't mean you would be getting a job in IT Company simply.  Many people fail miserably in job interviews when it comes to presenting their strengths in right manner. So, work on your soft skills especially communication skill which will give you, an ability to express your ideas clearly and effectively.

Once the basic requirements are met one could add the following to move up the ladder.

5. The essence of a successful tester who  is his ability to understand user requirements (What is this application all about),  come out with various test scenarios followed by various positive and negative test cases.  Refer "Sample Test Case reference section"  at the end of this article for more details.

6. Version control is a critical aspect of any software project, and its importance should not be underestimated. Version control systems serve several key purposes. First of all, they allow you to safely store successive versions of your source code. In addition to providing a secure backup copy of the test cases and test scripts, this ensures you can step back to a stable version when things go drastically out of control. Version control systems also help team members to work simultaneously on a test cases or script without stepping on each other's toes. So understanding a Version Control System such as Subversion (subversion.tigris.org) or Visual SourceSafe (VSS)and its vital functions is helpful.

7. Bug tracking software is an essential tool that allows software testers to record and report meaningful and relevant information on bugs they have encountered during testing in a effective manner. These tools often results in improved collaboration between the testing and development teams and facilitates better deliveries with less struggle. So understanding of bug tracking tool like Bugzilla (http://www.bugzilla.org/) and the workflow model it supports becomes necessary for a person who wishes to play the role of tester.
Typical life of a bug and most of the Bug Tracking tools supports this workflow model.

Life of a BUG
8. Frequent testing is one of the practices growing in popularity in IT industry now. It provides a powerful approach for combating the inevitable continuous change of  inputs in software projects. But this simple mantra "regression testing" is much easily said than done. . Manual testing have long appeared before automation testing and therefore it is believed to be a reliable process when it comes to software testing. But regression testing are typically constrained by tight project schedules and there is never enough time for detailed evaluation of application multiple times. The software testing methods can be implemented in two ways - manually or by automation. Manual software testing is done by human software testers who manually i.e. physically check, test and report errors or bugs in the product or piece of code. In case of automated software testing, the same process is performed by a computer by means of an automated testing software such as WinRunner, LoadRunner, Test Director.

Nevertheless these are not the only tools or approaches used by all IT companies to test web application. Neither the only ones in the identified category. But this step by step approach provides a good starting point for the new entrants.


Reference: Sample Test Case:
Find below sample Functional and Integration Test Case based on the Figure1, 2 and 3.


Figure 1: Login Screen
Functional test cases for Login Screen:
Test case IDDescriptionExpected Result
FT_101Check the UI.Should have
- 2 text boxes with label as “Username:” and “Password:”
- A check box with label as “Stay signed in”.
- “Sign in” Button. 
FT_102Click the “Sign in” without user credentials.Label “Enter your email address.” should be displayed
below the “Username” textbox. 
FT_103Enter value in “Username” only and click the “Sign in”
button.
Label “The username or password you entered is incorrect.”
should be displayed below the “Password” textbox. 
FT_104Enter value in “Password” only and click the “Sign in”
button.
Label “The username or password you entered is incorrect.”
should be displayed below the “Password” textbox.
FT_105Enter the valid “username” and incorrect “password” and
click the “Sign in” button.
Label “The username or password you entered is incorrect.”
should be displayed below the “Password” textbox.
FT_106Enter the valid “username” and correct “password” and
click the “Sign in” button.
“Gmail:Inbox” screen should be displayed in the right
frame.

Figure 2: Gmail:Inbox Screen
Figure 3: Compose Screen


Functional test cases for Compose Screen:
Test case IDDescriptionExpected Result
FT_201Check the UI Screen should match with above screen shot.
FT_202Click the “Compose mail” button.A right frame should be displayed with 3 text fields –
“To”, “Subject” and text area field.
FT_203Without entering any value in any field click the “Send”
button.
Message “Error: Please specify at least one recipient.”
should be displayed.
FT_204Click the “OK” button in the above message.Message window should be closed.
FT_205Enter a valid email address and click the “Send” button.Message “Send this message without text in the body?” should be displayed.
FT_206Click the “Cancel” button in the above message.Message window should be closed.
FT_207Enter a valid email address, enter a text in the text area and click the “Send” button.Message “Send message without a subject?” should be displayed.
FT_208Click the “Cancel” button in the above message.Message window should be closed.
FT_209Enter a valid email address, enter a subject and enter a
text in the text area and click the “Send” button.
Message should be sent and “Inbox” should be displayed.
FT_210Click the “Sign out” button“Welcome to Gmail” should be displayed.

Integration Test cases:

Test case ID

Steps

Description

Expected Result
IT_001Step 1Open the http://www.gmail.com/
page in browser.
Login page should be displayed.

Step 2Login as valid user with incorrect password.Appropriate message indicating that the login action failed should be displayed.
IT_002Step 1Open the http://www.gmail.com/
page in browser.
Login page should be displayed.

Step 2Login as valid user with correct password.Home page should be displayed.

Step 3Click the “Compose Mail” button.Correct right frame should be displayed.

Step 4Enter valid data in all the fields and click the “Send” buttonMessage should be sent and Inbox should be displayed


Step 5Click the “Logout” button.User should be logged out and login page should be
displayed.
IT_003Step 1Open the http://www.gmail.com/
page in browser.
Login page should be displayed.

Step 2Login as valid user with correct password.Home page should be displayed.


Step 3Click the “Logout” button.User should be logged out and login page should be
displayed.