Current MS Students/Bharat chaitanya Nallamothu

From CSWiki

Jump to: navigation, search

Usability Test By Knowing User's Every Move
Project prospectus

Contents

[edit] What I am planning to accomplish

[edit] Brief Project specification

My project is based on Usability Testing.

Usability testing is a means for measuring how well people can use some human-made object (such as a web page, a computer interface, a document, or a device) for its intended purpose, i.e. usability testing measures the usability of the object.

The main idea of my project is to suggest ways to improve the user experience on a web page or a web site (obviously by improving the web site design). User experience can be improved by knowing answers to questions like,

  • Does the user really find what he is looking for on the webpage?
  • What sections (links or Ads) of the page is the user more interested in?
  • How long is it taking for him to complete the fields in a form? Etc

The way I have adopted to find answers to the questions like above is to track the user interaction data (by interaction data, I mean the events generated while the user is browsing the web site like mouse clicks, key presses etc). Then, I'll build analysis tools whose job is to take the interaction data as the input and generate visual or statistical results by which we can understand the user interests.

When I am done with my project, I’ll have a product that collects the user (client) interaction data and does analysis on the collected data which helps the user (web site owner here) in drawing conclusions about web site design.

Some of the analysis tools I have in my mind are

  • Tool that generates general reports with average statistics such as most clicked buttons and links, average number of clicks, average time spend on a page, and visitors, hits and views per page.
  • Tool that generates diagrams that illustrate Web pages traversed and paths taken through a Web site.
  • Tool that generates mouse movements visualized colored traces on a two-dimensional area.
  • Tool that replays the user's session through the web site.

[edit] High level architecture

I have categorized my project into two parts.

  • Part - 1 : Creating a Proxy Server which proxys multiple web servers. Collecting the user interaction data and storing it.
  • Part - 2 : Building analysis tools for the data analysation.

The first part of the project involves a

  • Proxy server
  • A web server (or possibly many web servers) and
  • A client (possibly many clients)

I have to design the Proxy server through which every request and response are passed. The proxy server listens on a port for requests from clients and when the request comes, it forwards the request to the actual web server and receives the response from the web server. Before forwarding the response from the web server to the client, it checks whether a HTML is transmitted and if it finds a HTML a JavaScript script tag is inserted in the HEAD tag of the page. The JavaScript script tag is the source to a JavaScript file which records all the events generated by the user on the web page and transmits them in real time back to the proxy server where it is logged for later analysis.

The following diagram shows the architecture of the proxy server which proxys servers and logs the user interaction data.

Project Architecture
Image:UsaProy1.jpg

The second part of the project is building analysis tools which are used to analyse the data to find out the user interests.

Below is a Diagram of the whole project which explains the components I'll be implementing (Part 1 and Part 2 combined)

Image:proxy2.jpg

My work in the second part is to build analysis tools, although I believe doing analysis is an intrinsic part of building analysis tools.

The users of the product (web site owners or designers) are provided with the results from the analysis tools. It is left for them to decide how to modify the web site depending upon the results.

[edit] Why this is academically interesting

The reason I found this academically interesting is because it gives me a chance to explore and use various technologies and also because of the fact that a lot of research is currently going on in this field.

[edit] Intended audience

Anyone who wishes to make good business by improving thier web site ( by improving the experience of users visiting their web site).

My goal here is to build analysis tools that help others (most likely users of my product or web site owners) in gathering data and drawing conclusions about web site design.

e.g. Let's say that the statistics tool I'll be building shows some statistics saying that a particular button "Don't Click Me" is accessed more times than any other button. Seeing this, the web site owner might think "um, this button is accessed more. May be I can put some serious stuff under this button".

[edit] Why this is MS-level work

This project involves some issues which haven't been tried yet like proxying multiple web servers, identifying the browsing patterns of an efficient user compared to a naive user etc. This may be because they were thought to be impossible to implement or may be because nobody ever got the idea. Whatever the reason was, implementing things like these requires profound understanding of the technologies we are using. This is the reason I believe this project is worthy of MS-level work (implementing something new and I believe to be useful).

[edit] Previous work

[edit] Platforms to be used and what I will add to each

The platforms I'll be using are

  • JAVA for designing the proxy server and analysis tools
  • JavaScript for the javascript file
  • AJAX for transmitting the tracked data in real-time.
  • Java Service Wrapper for making the project as a service.
  • Java Management Extensions (JMX) for dynamic loading and instantiation of classes.
  • SQL for database queries

[edit] Available platforms I am not using and why

This project can be done using a wide variety of platforms, but since I am familiar with Java and Java related technologies, I have decided to implement this project in Java.

[edit] (Project which is a re-implementation of an existing system) Why I am re-implementing an existing system

It is a paper written by some students in University of Munich. They mentioned in their paper what could be done by the user interaction data collected but haven’t implemented it. The project they have implemented has a proxy server which proxys a single web server.

When you are proxying a single web server, you know that every request comes to the proxy server is forwared to that web server. But when you are proxying multiple web servers, there comes the issue of finding out to which web server the request should be forwarded to. We have to keep the URL to our complying standards despite several redirections and forwardings so that we can identify the web server the request should be made to.

The proxy server they have implemented doesn't serve my purpose since I need a proxy server which proxys multiple web servers. So, I am re-implementing the proxy server which is almost done.

I’m using the JavaScript file they’ve created for logging the user events, but based on my requirements in the future there is a fair chance that I'll modify the JavaScript file.

So, it’s like doing a project from the scratch except the fact that the idea is derived.

When I am done with my project, I’ll have a product that collects the user (client) interaction data and does analysis on the collected data which helps the user (web site owner here) in drawing conclusions about web site design.

[edit] Anticipated challenge(s)

There could be many challenges as the project evolves.

Since it is hard to predict the technical challenges I'll face, I'll explain the challenges I've faced till now and how I overcame them.

[edit] Challenge(s)

  1. I felt designing a proxy server which proxys multiple websites challenging because if it is a single website we are proxying then there is no problem, but when we try to proxy multiple servers, it becomes a scalability issue, Which means it should be able to proxy any web server. The problem here is not every request response is straight forward. There are a lot of issues to deal with. For example, many websites use redirection (and since redirection changes the URL) which becomes a real problem for the proxy when it comes to the matter of keeping the URL as we wanted.
  2. Whenever the client is making a POST request, the server is issuing is 100-continue response when it receives the request through a proxy server and since the client is not getting the response back, it is going to a never ending loop waiting for the response forever.
  3. Another challenge I can think of is when building analysis tools, I'll need to do some Data Mining stuff in which I have no prior experience.

[edit] Anticipated approach to each challenge

  1. The approach I've taken is that I've checked each response header from the web server to the client and If I find any status code that disrupts my URL format, I changed the header accordingly so that the URL conforms with the URL format of the Usability Proxy server.
  2. For this, I had to change the protocol from HTTP/1.1 to HTTP/1.0. It is a RFC 2068 Exception.
  3. Well, the obvious approach for this one is to study,learn and practice.

[edit] What I bring to this work

[edit] My relevant background and experience (CS 590)

I like programming in Java. I have done some web programming in CS420 (web applications and architecture) and CS520 (web programming) which I think will help me here.

[edit] What I find interesting about this work

Tracking data without user's knowledge has always amused me. When I was in my bachelor's, I have created a software for my academic project which shows the client's screen to the server and allows the server to do a variety of operations on the client's computer (like file transfer,file retrieval etc) and all this without the client's knowledge.

I guess I have a knack for stuff like this.

[edit] How this work goes beyond my experience and course work

Although I have done some web programming in the past, I have never done something like this which involves a thorough understanding of the very foundations of the web protocols and also how different request response processes work.

This project also involves a fair amount of data mining stuff which is something I haven’t done before and it definitely goes beyond my experience and course work.

Personal tools