Free packet sniffer

November 9th, 2006

Yet another application to add to your performance testing toolkit is Wireshark (previously called Ethereal). A packet sniffer like Wireshark will let you see your network traffic at all the different protocol layers.

Wireshark - a free packet sniffer

A naturally curious person might use it to investigate why the lights on their router started flashing all the time just after they installed that really useful piece of software that let them change their mouse cursor.

As a performance tester, I use it when I’m trying to figure out what the application I am trying to record with LoadRunner is sending and receiving, and the VuGen log doesn’t contain enough information (and I can’t get it by recording in Winsock mode). 99% of the time this isn’t necessary but occasionally, when the application uses some sort of weird (or custom) protocol, it helps to show what is going on.

Recently I was running a LoadRunner training session and was asked to take a look at the application the company was developing. It was a web-based application that had an embedded ActiveX object that also communicated with the server. Recording just HTTP did not record any traffic to or from the object. Recording with the Web/Winsocket Dual Protocol vuser type recorded a message from the object to the server (as well as all the HTTP traffic from the web page), but no communication from the server to the object; nothing appeared in the recording log either.

To double check that the object really was getting information from the server, rather than values being passed from the HTML, a network trace was run. This showed that there really was a message being sent to the ActiveX object, and that for some reason VuGen was not recording it correctly. In this situation, it is easy to give Mercury Support your script and your tracefile and they will pass it on to the R&D team who will usually give you a work-around or write you a patch in a couple of days.

So, anyway, sometimes you will come across an application that talks to the server in some kind of unconventional way; and sometimes a packet sniffer helps you figure out what is going on. Wireshark is your best option because it is free and it has a comparable feature-level with expensive proprietary tools like Sniffer Pro.

Download it from the Wireshark website.

Some other tools that I have talked about previously:

LoadRunner ContentCheck Rules

November 3rd, 2006

A LoadRunner feature that has made my life a lot easier has been ContentCheck rules, which are available in the script runtime settings. If you are using a web-based vuser type, you can configure your LoadRunner script to search through all returned pages for strings that match known error messages.

LoadRunner web content check rules

Using web_reg_find functions is fine, but when you get an error LoadRunner reports it as “failed to find text” instead of something more descriptive.

I will always create rules for any error messages I find during scripting and, if I receive an error while running a scenario, I will add the error message from the snapshot in the scenario results directory (the snapshot on error feature is very useful).

All this is pretty obvious if you have taken the time to explore LoadRunner’s features or you have attended a Mercury training session, but I recommend taking things a step further.

  • Ask your developers for a list of all the error messages that the application can throw. This should be easy for them to provide if the application is well designed and stores all the message in some kind of message repository instead of sprinkling them throughout the source code.
  • Include error message for functional errors that you are likely to encounter. Creating a rule for “incorrect username or password” may save someone 20 minutes of investigation when they first run the script after the database has been refreshed.

If you prefer to have error message you are checking for in the script (where you can add comments to them) instead of the runtime settings, you can use the web_global_verification function instead. The only difference between the two is the error message that LoadRunner will include in its log:

Action.c(737): Error -26368: “Text=A runtime error occurred” found for web_global_verification (“ARuntimeErrorOccurred”) (count=1), Snapshot Info [MSH 0 21]

…compared to:

Action.c(737): Error -26372: ContentCheck Rule “ARuntimeErrorOccurred” in Application “Webshop” triggered. Text “A runtime error occurred” matched (count=1), Snapshot Info [MSH 0 21]

And finally, ContentCheck rules can be easily exported and shared between scripts, which can be a nice time-saver.

Free WAN emulator

November 3rd, 2006

Mercury has just announced that they will no longer be re-selling the Shunra WAN Emulator. This means that I can let you in on a little secret – you can get most of the WAN emulation features for free by using a simple open-source program.

As performance testers, we know that an application operating over the network will perform poorly if there is not enough bandwidth available. We also know that response times for some applications are more affected by latency than others no matter how much bandwidth you have (eg/ an interactive multiplayer game like Quake is playable over a 56k modem, but completely useless over a satellite link that has 10 times the bandwidth). Sidenote: a good job interview question for a performance tester might be to explain the difference between latency and bandwidth, and its impact on application performance.

Load testing with bandwidth limitations is easy; LoadRunner gives you this feature for free. Latency is harder as it requires either a real WAN link, or something to introduce an artificial delay. An artificial delay can be introduced by a black box that you plug into your network (like those offered by Anue, East Coast DataCom, and Apposite Technologies) or by a piece of software like the Shunra WAN Emulator.

Shunra WAN Emulator

The free alternative to Shunra’s software is Dummynet, which was created by an Italian academic researcher.

Unfortunately Dummynet only runs under FreeBSD, but a tiny version of FreeBSD with Dummynet that fits on a bootable floppy disk is available for download. Personally, I haven’t seen a floppy disk for years and I don’t quite trust that FreeBSD (let alone a tiny version of FreeBSD) will support the variety of hardware it will encounter.

My preferred solution is to install FreeBSD as a guest operating system inside VMware. The hardware in the virtual machine is virtualised, so you don’t have to worry about driver support, and it is easy to distribute a VMware image between computers. The only other thing you will need to do is to set up a second network card in your computer and add it to the virtual machine.

FreeBSD running inside VMware

The good thing about this solution is that it makes it easy to demonstrate latency and bandwidth-related performance problems manually, rather than expecting people to just accept your tool’s measurements. The only tricky part may be getting permission to plug your laptop into the network (or install the software) at a client site.

Using open source tools for performance testing (Google video)

November 2nd, 2006

I just found something interesting on Google Video; it is a 1 hour Google TechTalk presentation by Goranka Bjedov about Using Open Source Tools for Performance Testing.

Goranka has some interesting things to say. She makes the point that there is really no standard terminology in performance testing circles, and goes on to prove this by giving her own definitions of performance, stress, load, scalability, and reliability testing. As an example of reliability testing she notes that “typically, when I was at AT&T, we would run for about a month at a time after everything was done just to find out that the system can actually stand up and can work fine with the load for a prolonged period of time.” In my testing circles, we would call that a soak test, but I would have been interested to hear more about the types of systems she was testing at AT&T.

The main body of her talk is about the different tools available for load and performance testing. These can be broken down into in-house, vendor and open-source tools.

Google has 55 in-house load and performance testing tools that have been developed by different groups for testing different Google products. These are very expensive to maintain and may only be used in-house, which makes any benchmarks impossible to verify by a third-party. Goranka says “Before you decide to develop your own, please take a look at what is out there…”

Goranka slams vendor tools (like LoadRunner, SilkPerformer and WebLOAD) for being overly expensive and using proprietry scripting languages. Personally, I have always thought that it was pointless having to learn another language just to use a load testing tool. Unfortunately she uses LoadRunner’s scripting language as an example “it’s C, minus the pointers”, and is incorrect – unlike many other tools, Mercury uses standard C (and Java and VBScript).

Her recommended solution is the open source tools – “five years ago they just weren’t there, but today they are.” Her personal preference is JMeter, but also recommends OpenSTA and The Grinder. Open-source tools have the advantage of being a good price, and having source code available; she also makes the point that they use standard programming languages for scripting (although this is incorrect when talking about OpenSTA).

The disadvantages of open-source tools are that they have a steep learning curve and do not support many protocols. “The vendor tools support far more protocols than the open-source tools, but as long as you are staying in the web space, and your looking at HTTP/S, IMAP and POP3, the open-source tools are pretty good”.

Goranka does not say that the open-source tools are free because it is occasionally necessary to write code to extend their features. “Free software is free in the sense that a puppy is free.” Features that Google engineers have written for JMeter have been added back to the main code tree by the people maintaining the project, meaning that Google is at least saved the cost of maintaining their forked code.

She uses JMeter for testing web-based applications through the GUI, uses The Grinder for API-based testing, and does not use OpenSTA because it only works on Windows.

Other points during the presentation:

  • You should use the same monitoring for Load testing that you use for Production monitoring (so you don’t have to account for the differences in load that a different monitoring system will put on the system).
  • If you are running Unix-based systems, don’t sustain CPU above 80%.
  • Google tracks a summary of every performance test in a central database. The database also contains information on every piece of software that is installed on the machines in the test environment.
  • If I am unfamiliar with the system, I don’t trust it. One of the things that I have realised is that
    A) the system will fail in the place where they tell me that nothing could go wrong.
    B) developers are totally delusional about their own software, and frequently they will just forget about things that they’ve done two weeks ago.
  • I run every test 5 times. I want to see that I have some sort of statistical consistency.
  • Performance testing should not be used as a tool to find memory leaks; but it can.
  • Performance testing without monitoring? Don’t bother. Why waste your time?
  • If you are going to do any performance testing, make sure that database sizes are somewhat realistic. They don’t have to be exactly the same, but they have to be the same order of magnitude otherwise the results you are getting are completely off.
  • Execute a stress test. Find how your system is failing. Find where it is failing. Do find out how the system handles overload. There are no good defence mechanisms against people out there, and you can’t predict sudden popularity (eg/ Google Earth).
  • Start a test after a decent warm-up period. Don’t start 100000 users all at once.
  • Quite often people don’t know about everything that is running on a complex system. Maybe there is a low priority process that is running with high priority. This can usually be fixed by niceing the process down. Quite often there are debug things that are still running also.
  • Monitor the machines that are collecting the monitoring data and the load generators (not just the system under test).
  • Performance Testing and QA is about risk analysis. If I believe it is high risk, I want to take a look at it.
  • When I am doing performance testing, the first thing I try to do is eliminate the network. I want to simplify my problem. I am interested in the machines, and my hope is that the network provided will handle everything I need. Once everything is profiled and understood, we will do some tests that include the network. If you can, put everything on the same subnet and same switch. It will make you a much happier performance tester in the first pass. Debugging networking problems is (not) fun.
  • (When talking about testing on smaller sized systems than Production). You can’t test on a 386. Extrapolation will kill you. You will run out of some resource that you never expected, and you can’t predict this ahead of time. For final validation, you really want to get some time on the Production hardware before it goes live. If the system is not being used for Production, it should not be that hard to get hold of it for a week or a weekend.
  • Find more open-source performance tools at opensourcetesting.org

There is another summary of her talk available on Robert Baillie’s blog.

You might also want to have a look at Becoming a Software Testing Expert; a 1 hour presentation delivered by software testing expert, and author of Lessons Learned in Software Testing, James Bach on June 13, 2006. His presentation is available for download from his website.

Scripting Exercise: Credit Card Challenge

October 26th, 2006

As part of the LoadRunner 8.1 Hands-On Lab training, there is an exercise to enhance a VuGen script that books a flight using the Mercury Tours application.

Company “A” wants the script to generate 10 digit credit card numbers instead of supplying them from an external source on every iteration and for an unlimited number of iterations.

How do you make the script generate credit card numbers for every iteration?

As the Mercury Tours application does not check if the credit card numbers conform to a valid format, the answer to this question is just to replace the file-based credit card parameter with a random parameter using a number format of %010lu.

The purpose of Mercury’s training is to cover as much of the basic concepts as possible in a short space of time, so they can’t make the exercises too hard; but I don’t like to leave people with the incorrect idea that just because they’ve finished some training they are totally prepared for the level of difficulty they will encounter in the real world.

I have created an exercise where you will need to submit different credit card numbers, but I have made it more difficult as they must be valid credit card numbers.

Start the Credit Card Validation Exercise here.

Credit cards (photo from Wikmedia Commons, by Lotus Head)

Some quick notes:

  • The exercise is quite simple. If you work intelligently (and do some research), it should not take long.
  • Make sure that you really do generate the cards at runtime. Finding 60 different card numbers on the web, trying card numbers at random until you find ones that work, and generating card numbers outside of LoadRunner all miss the point of the scripting exercise.
  • Do not run load against my server. Don’t run more than 1 virtual user at a time and be kind with your thinktime and pacing settings.
  • Please report functional defects to me via email: stuart at myloadtest dot com
  • Once some people have emailed me their solution scripts, I will post some comments about my preferred solution.

Here are some credit card numbers to get you started:

  • 30100000000002 (Diners)
  • 30100000000010 (Diners)
  • 4000000000000002 (VISA)
  • 4000000000000010 (VISA)
  • 5400000000000005 (MasterCard)
  • 5400000000000013 (MasterCard)
  • 340000000000009 (American Express)
  • 340000000000017 (American Express)

Good luck!

Hacking into VMWare images

October 19th, 2006

Last week I posted a question asking how I could recover or change the password for a VMware guest operating system (Windows 2000) that I had forgotten the password for. After receiving no useful suggestions, this week I allocated some time to solving the problem.

Windows password recovery tools usually consist of a bootable CD image containing a version of Linux that will overwrite the NT password with a known value or will extract the hashed password from the filesystem.

To boot your virtual machine from a CD, you must change the boot order in the virtual machine’s BIOS. Press F2 while the VM is starting up to access the BIOS.

VMware BIOS setup

I used the free software available from Windows XP Login Recovery. This is good because it does not try to write to your file system, it just retrieves the hashed password value.

VMware password recovery

Once you have the password hash, you enter it in a form on their website and they look up the hash value in their database and give you a password that matches the hash. Note that even though they ask for your email address the password is displayed on a web page rather than being sent to your inbox.

VMware password retrieval

After all that effort, I discovered that my password was blank.

Mercury Certified Instructor Exam and Workshop

October 19th, 2006

The Mercury Certified Instructor qualification is not about having mastery over the Mercury toolset (although if you are sitting for the CI exam, you probably have this anyway); it is about ensuring that you have the ability to effectively deliver training material to a classroom of students.

Officially, Mercury training must be delivered by someone who has a CI qualification and the appropriate CPC qualification for the tool that they are delivering the training for. In practice, there aren’t enough Certified Instructors yet, so this is not enforced.

After wanting to do it for a while, I completed the Mercury Certified Instructor training and passed the exam in December 2005 (making me the only non-Mercury employee technically allowed to deliver the LoadRunner training in Australia).

The course is run by the instructor according to the same teaching theories that are taught in the course (which I am rather embarrassed to admit I didn’t fully realise until the afternoon of the first day). The first two days run through all the theory, and the third day is dedicated to the final exam – presenting a module of Mercury training in a way that will satisfy all the grading criteria.

Even though I had presented the training module before, presenting it while remembering to “create a non-threatening environment”, “address multiple learning modes”, and “exhibit energy and enthusiasm” was like juggling and spinning plates at the same time.

The final exam was one of the hardest I have ever done, despite my previous teaching experience delivering Mercury training and as a class tutor for 1st year university C++ and Digital Design subjects.

The only people in the class who managed to make it seem effortless were a former teacher and a Mercury employee who has run hundreds of Mercury training courses.

I highly recommend this course to anyone who is interested in teaching others how to use the Mercury toolset, although the concepts can easily be applied to any training situation.

Scripting Exercise: Unique Usernames

October 17th, 2006

Imagine that you have to create a script for the “Create New User Account” business process. There are several constraints that will make your job difficult…

The username field has the following properties:

  • valid characters are a-z, A-Z, 0-9
  • usernames are not case sensitive. “Stuart” is the same as “stuart”.
  • usernames must start with a letter, not a number.
  • usernames may be a maximum of 8 characters long.
  • username must not be a duplicate

Some other information about your testing:

  • It is unclear when the database in the test environment will be refreshed, but it should happen at least yearly. It will definitely not be refreshed for every test run, and it will not be possible to delete any of the user accounts that you have created.
  • The business process takes a minimum of 1 minute to run from start to finish.
  • There will be a maximum of 99 virtual users executing the business process in the scenario.
  • It is possible that virtual users will execute the business process at exactly the same time.

How do you create usernames that meet all of the above criteria without creating any duplicates? Create a script or provide a descriptive solution.

See the comments section for my solution…

LoadRunner Script Runtime Settings

October 15th, 2006

When running a training or mentoring session, people often ask what runtime settings they should use; as if there is a magical list of settings that will always be correct for any testing situation. Obviously you select runtime settings that are appropriate for what you are trying to achieve with your test, but the funny thing is that there are actually a small list of settings that are usually appropriate for most situations. Read on…

General: Run Logic

Whenever I am using a vuser type that allows multiple actions in a single script, I will create a separate action for each business process and put appropriate percentage weightings on each action. It is very unusual to have to do anything more complicated than this. I don’t usually use the “sequential” option or create blocks unless I need to have fractional percentage weightings for a business process – percentages must be integer values, so to run a business process 0.1% of the time you could create a block that runs 1% of the time, and put an action in the block that runs 10% of the time.

It’s also rare to set a script in a scenario to run for a specified number of iterations (mostly done by time or set to run indefinitely). Generally “number of iterations” is only used when running the script in VuGen.

General: Pacing

  • “As soon as the previous iteration ends” is used when running in VuGen or when loading/verifying data. Do not use this for load testing
  • I have never seen the point of the “After the previous iteration ends” option. Why would you want to run an unknown number of transactions per hour against the system?
  • Don’t use the “At fixed intervals”. If something causes your users to become “in step”, they will tend to stay that way and continue to all hit the server at the same time.
  • “At random intervals” is definitely the way to go. Obviously for your users to create a certain number of orders per hour the iteration time must average to 3600/num iterations in an hour. Do not make the lower boundary value any bigger than the maximum time it takes to complete the business process, or you will end up creating less transactions per hour than you intend to.

General: Log

  • Logging creates additional overhead on your load generators, and can create huge log files.
  • I log absolutely everything when debugging in VuGen.
  • When running the script as part of a scenario, I leave extended logging on but change the logging to “Send messages only when an error occurs”. This gives a little more information than turning logging off entirely, and won’t create any additional overhead while everything is running smoothly (and if the system is not running smoothly you are going to need to stop the test and investigate anyway).

General: Think Time

  • Just like the pacing setting, I think that it is a good idea to put some randomness in your think times.
  • I use a random percentage of 50-150% of recorded think times.
  • Use “Ignore think time” if you are debugging in VuGen or if you are loading/verifying data.

General: Additional Attributes

  • This option is ignored by most people. It is used to create a parameter with a given value without having to edit the script (as runtime settings can be overridden in the Controller).
  • In the screenshot I have created a parameter of ServerName with the address of the test envioronment. If you were testing in more than one test environment at a time, this would make save some time.

General: Miscellaneous

  • Continue on error is generally only going to be used if you have written code to do something when you encounter an error. Usually the default behaviour of ending the current iteration and then starting the next one is sufficient). I don’t advise anyone to try to write a script that handles errors in the same way as a real user because it will create a lot of additional work for very little benefit, but doing something simple like writing some useful information to the logs and then calling lr_exit(LR_EXIT_ACTION_AND_CONTINUE , LR_FAIL) can be useful.
  • “Fail open transactions on lr_error_message” should always be ticked. If you are raising an error, you should fail the transaction step that you are performing.
  • “Generate snapshot on error” is useful. If it is a web script, any error messages should be added to your content check rules.
  • Run your virtual user as a thread unless you have code that is not threadsafe or there is some other reason to run your virtual users as a process. The overall memory footprint on your load generators will be higher if you run as a process.
  • I never use the “Define each action as a transaction” option. If I want a transaction in my script I will add it myself with lr_start_transaction.
  • I never use “Define each step as a transaction” either. If it is a web script, I can use the transaction breakdown graph to get this information, otherwise I will add the transactions myself.

Network: Speed Simulation

  • Not all vuser types have this option available.
  • Most of the time my virtual users will use the maximum bandwidth.
  • If I want to emulate users with bandwidth constraints, I will do this in a separate scenario.
  • Google calculator is handy to calculate bitrates if your bitrate is not available from the drop-down list e.g./ “256 Kbps in bps

All of the following settings only apply to web-based scripts. Each vuser type will have its own runtime setting options. It is important to know what they mean and how they will influence your test results before running any tests that you plan to report on.

Browser: Browser Emulation

  • Some people get confused by the User-Agent (browser to be emulated) setting. If 90% of your users use Internet Explorer 6.0 and the rest use Firefox 1.5, you don’t have to change the runtime settings for your users to match this. All it changes is the string that is sent in the “User-Agent” field of your HTTP requests. This is completely pointless unless your application has been written to serve different content to different browsers based on the User-Agent field.
  • TODO

Internet Protocol: Proxy

  • Generally people won’t be using your web applications through your proxy server, so it shouldn’t be part of your test either.
  • If you start getting errors that are due a proxy server rather than the system under test, it will just confuse the people who have to fix the problem.
  • A proxy server will also make IP-based load balancing ineffective.
  • If it’s an intranet application and everyone will be using the application through the company’s proxy, then the proxy server should be explicity declared to be in scope for your load test. You should make sure that you have an identical proxy server for your test environment, or that you have permission to be generating load on a piece of Production infrastructure.

Internet Protocol: Preferences

  • TODO

Internet Protocol: Preverences - Options

  • These settings are default values specified by Mercury, rather than being inherited from the web browser that is installed on your workstation. Generally you will not need to change them, but be aware that they are here.

Internet Protocol: Download Filters

  • Download filters are a quick way of preventing your scripts from downloading content from certain URLs or hosts/domains.
  • I generally use this feature when the web application in the test environment contains third-party images used for tracking website usage (e.g. images from Webtrends or Red Sheriff etc).
  • I think it is better to specify which hosts your script is allowed connect to, rather than which hosts your script can’t connect to (because it’s easy to miss one accidentally, or the application may change and refer to a new third-party domain).
  • Use web_add_auto_filter if you want to specify this in your script rather than your runtime settings.

Internet Protocol: ContentCheck

  • I have talked about Content Check rules before; I think that if you aren’t using them already, then you are not getting the most out of the LoadRunner feature-set.

LoadRunner Vuser Types

October 8th, 2006

As of LoadRunner 8.1, Feature Pack 3, the following Vuser types are available (note that descriptions are provided by Mercury).

LoadRunner Vuser types - Popular Protocols

Application Deployment Solutions

  • Citrix_ICA
    Represent the Citrix ICA protocol communication between the Citrix client and server as GUI events.

Client/Server

  • DB2 CLI
    The IBM Call Level SQL Interface to the DB2 family of databases.
  • Domain Name Resolution (DNS)
    A system which translates domain names into internet addresses.
  • Informix
    IBM’s Informix Database servers.
  • MS SQL Server
    Microsoft’s SQL Server using the Dblib interface.
  • ODBC
    Open Database Connectivity – a protocol providing a common interface for accessing databases.
  • Oracle (2-Tier)
    Oracle database using a standard client/server architecture.
  • Sybase CTlib
    A client/server architecture database called via the Ctlib interface.
  • Sybase DBlib
    A client/server architecture database called via the Dblib interface.
  • Windows Sockets
    The standard network programming interface for the Windows platform.

Custom

  • C Vuser
    A generic virtual user which uses the standard C library.
  • Java Vuser
    Java programming language with protocol level support.
  • Javascript Vuser
    A scripting language used to develop Internet applications.
  • VB Script Vuser
    Visual Basic Scripting Edition language – used for programming documents displayed in Web browsers.
  • VB Vuser
    Vuser scripts written in Visual Basic language.
  • VBNet Vuser
    Vuser scripts written in Visual Basic language.

LoadRunner Vuser types - Custom

Distributed Components

  • COM/DCOM
    Microsoft’s Distributed Component Object Model (COM/DCOM) for distributed computing.
  • Corba-Java
    Java scripts which use CORBA architecture giving applications the ability to work together over networks.
  • Rmi-Java
    Remote Method Invocation – a technology providing remote communications between programs written in the Java programming language.

E-Business

  • Action Message Format (AMF)
    A Macromedia proprietry protocol that allows Flash Remoting binary data to be exchanged between a Flash application and an application server over HTTP.
  • File Transfer Protocol (FTP)
    File Transfer Protocol – a system which transfers files from one location to another over a network.
  • Listing Directory Service (LDAP)
    Record directory based authentication, listings, searches and related transactions.
  • Microsoft.NET
    Supports Microsoft ADO.NET.
  • Palm
    Palm Handheld computers.
  • Web (Click and Script)
    Emulation of the communication between a web browser and the web server at user-action level.
  • Web (HTTP/HTML)
    Emulation of communication between a browser and Web server.
  • Web Services
    Web Services – a software interface defined and described using XML.
  • Web/Winsocket Dual Protocol
    A dual protocol incorporating the Web and Winsocket Protocols.

LoadRunner Vuser types - E-Business

ERP/CRM

  • Oracle NCA
    Oracle 3-tier architecture database consisting of Java client, Web server and database.
  • Oracle Web Applications 11i
    In addition to Web HTTP/HTML features, supports the user action level API and JavaScript, with a high level of support for Oracle Web Applications 11i environment.
  • PeopleSoft Enterprise
    In addition to Web HTTP/HTML features, supports the user action level API and JavaScript, with a high level of support for PeopleSoft environment specifics..
  • PeopleSoft-Tuxedo
    An Enterprise Resource Planning system based on the Tuxedo Transaction Processing Monitor, including automatic correlation.
  • SAP – Web
    Similar to Web HTTP/HTML, but equipped to work in conjunction with SAP.
  • SAPGUI
    SAPGUI protocol for SAP Front End, versions 6.20 and higher.
  • SAPGUI/SAP-Web Dual Protocol
    SAPGUI and SAP-Web dual protocol for SAP Front End, versions 6.20 and higher.
  • Siebel – DB2 CLI
    A Customer Relationship Management Application based on a DB2 database.
  • Siebel – MSSQL
    A Customer Relationship Management Application based on the ODBC database API.
  • Siebel – Oracle
    A Customer Relationship Management Application based on an Oracle database.
  • Siebel – Web
    Similar to Web HTTP/HTML, but equipped to work in conjunction with Siebel, a Customer Relationship Management Application.

LoadRunner Vuser types - ERP/CRM

Enterprise Java Beans

  • Enterprise Java Beans (EJB)
    Enterprise Java Beans – an architecture for the development and deployment of Java-server components.
  • Rmi-Java
    Remote Method Invocation – a technology providing remote communications between programs written in the Java programming language.

Legacy

  • Terminal Emulation (RTE)
    Emulation of users who submit input to, and receive output from, character-based applications.

Mailing Services

  • Internet Messaging (IMAP)
    Internet Message Application – a protocol which enables clients to read email from a mail server.
  • MS Exchange (MAPI)
    Messaging Application Programming Interface designed to allow applications to send and receive email messages.
  • Post Office Protocol (POP3)
    A protocol designed to allow single computers to retrieve email from a mail server.
  • Simple Mail Protocol (SMTP)
    Simple Mail Transfer Protocol – a system for distributing mail to a particular machine.

Middleware

  • Jacada
    A gateway server providing clients with a Java user interface to mainframe applications.
  • Tuxedo 6
    Tuxedo 6.x Transaction Processing Monitors.
  • Tuxedo 7
    Tuxedo 7.x Transaction Processing Monitors.

Streaming

  • Media Player (MMS)
    Streaming data from a media server using Microsoft’s MMS protocol.
  • Real
    A protocol used to transfer streaming data from a media server.

Wireless

  • i-mode
    NTT DoCoMo’s technology for accessing the Internet on a mobile phone system.
  • Multimedia Messaging Service (MMS)
    Multimedia Messaging Service – used for sending MMS messages between mobile devices.
  • VoiceXML
    A standard for voice-based communication between applications.
  • WAP
    Wireless Application Protocol – used for Web-based, wireless communication between mobile devices and content providers.