Tuesday, August 6, 2013
Thursday, May 9, 2013
Automated Website Testing with FiddlerCore
There are various UI automation tools to automate your website
and validate the UI. However, it’s also important to capture and validate the
network traffic. This can be done using FiddlerCore. You can also perform
various types of testing like low bandwidth testing, mobile device testing and localization
testing using FiddlerCore.
Simulate Modem Speeds
High Bandwidth
Low Bandwidth
Mobile Device Testing
FiddlerApplication.BeforeRequest += delegate(Session
oSession)
Localization Testing
To start FiddlerApplication, call FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.Default);
Enable HTTPS Decryption
You can enable HTTPS Decryption while starting Fiddler Application
if (!CertMaker.createRootCert())
{
throw new Exception("Unable to create cert for FiddlerCore.");
}
}
certStore.Open(OpenFlags.ReadWrite);
try
{
certStore.Add(oRootCert);
}
finally
{
certStore.Close();
}
Capture Network Traffic
Enable HTTPS Decryption
You can enable HTTPS Decryption while starting Fiddler Application
FiddlerApplication.Startup(0,
FiddlerCoreStartupFlags.DecryptSSL);
You also need to create and import Root cert for
Fiddler
if
(!CertMaker.rootCertExists())
{if (!CertMaker.createRootCert())
{
throw new Exception("Unable to create cert for FiddlerCore.");
}
}
X509Certificate2
oRootCert = CertMaker.GetRootCertificate();
X509Store
certStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);certStore.Open(OpenFlags.ReadWrite);
try
{
certStore.Add(oRootCert);
}
finally
{
certStore.Close();
}
Capture Network Traffic
You can capture the network traffic in a list and then
perform various validations like checking for response time, response string, etc.
for the captured sessions.
List<Session> _sessions
= new List<Session>();
FiddlerApplication.BeforeRequest += delegate(Session
oSession)
{
Monitor.Enter(_sessions);
_sessions.Add(oSession);
Monitor.Exit(_sessions);
};
Simulate Modem Speeds
You can add a delay of specific milliseconds per KB uploaded
as well as for per KB downloaded. This simulates a slow network and can be used
to test scenarios where specific requests shouldn’t be made on a slow network. For
example, Yahoo mail downloads an image on good network but doesn’t on a slow
network.
High Bandwidth
FiddlerApplication.BeforeRequest += delegate(Session
oSession)
{
if (!_applyrule) return;
oSession["request-trickle-delay"]
= sendDelayinMillisecPerKb;
oSession["response-trickle-delay"]
= receiveDelayinMillisecPerKb;
};
Mobile Device Testing
Most websites rely on
the User Agent string to determine if a request is coming from a mobile device.
Hence to test the behavior of a website on a mobile device, corresponding User
Agent is set using the Fiddler proxy. For example, when you send the user agent
for WP 7.5 i.e. Mozilla/5.0 (compatible;
MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft;
XDeviceEmulator) , Gmail looks different than that on IE 9
Internet Explorer
9
Windows Phone 7.5
{
if (_applyrule)
{
oSession.oRequest["User-Agent"]
= userAgent;
}
};
Localization Testing
Localization testing can be performed by requesting the
content in a specific language. This is done by modifying the Accept-Language
header using the Fiddler proxy. For example, Hotmail looks the opposite for
English and Hebrew Language.
English (en-US)
Thursday, March 14, 2013
Capturing traffic from Windows Phone 8 Emulator running on a VM
Usually when you would want to capture traffic from a Windows Phone emulator, you will check "Allow Remote computers to connect" and run the below command in Fiddler QuickExec box
prefs set fiddler.network.proxy.registrationhostname <MachineName>
Then restart Fiddler and Emulator.
However, this does not work when Windows Phone 8 Emulator is running on a VM by following the steps at http://www.developer.nokia.com/Community/Wiki/Windows_Phone_8_SDK_on_a_Virtual_Machine_with_Working_Emulator
The fix is really easy. Instead of using the machine name of the VM, use the IP address of the VM when configuring fiddler.
Check "Allow Remote computers to connect" in Tools->Fiddler Options->Connections and run the below command in Fiddler QuickExec box
prefs set fiddler.network.proxy.registrationhostname <IP Address>
Then restart Fiddler and Emulator.
prefs set fiddler.network.proxy.registrationhostname <MachineName>
Then restart Fiddler and Emulator.
However, this does not work when Windows Phone 8 Emulator is running on a VM by following the steps at http://www.developer.nokia.com/Community/Wiki/Windows_Phone_8_SDK_on_a_Virtual_Machine_with_Working_Emulator
The fix is really easy. Instead of using the machine name of the VM, use the IP address of the VM when configuring fiddler.
Check "Allow Remote computers to connect" in Tools->Fiddler Options->Connections and run the below command in Fiddler QuickExec box
prefs set fiddler.network.proxy.registrationhostname <IP Address>
Then restart Fiddler and Emulator.
Tuesday, February 26, 2013
Find when a file was copied to a folder
Often you will find a file in a folder showing the DateModified column.
This value represents when the last changes were made to this file.
However, a file might have been created way back and copied to a folder recently.
If you want to know when a file was copied to a folder, you can do that by Adding a column DateCreated.
You can also find it by passing the argument /T:C to dir command
This value represents when the last changes were made to this file.
However, a file might have been created way back and copied to a folder recently.
If you want to know when a file was copied to a folder, you can do that by Adding a column DateCreated.
You can also find it by passing the argument /T:C to dir command
Friday, February 22, 2013
Running PowerShell using PsExec
PsExec is used to run commands remotely on a machine.
I was trying to execute a PowerShell file remote using PsExec but the command would just hang.
Below is the command:
PsExec.exe \\MachineName powershell -File "FileName.ps1"
The fix was to run the command in an interactive mode by passing -i agrument to PsExec.
Here it is:
PsExec.exe -i \\MachineName powershell -File "FileName.ps1"
Sweet, the command ran fine this time!
I was trying to execute a PowerShell file remote using PsExec but the command would just hang.
Below is the command:
PsExec.exe \\MachineName powershell -File "FileName.ps1"
The fix was to run the command in an interactive mode by passing -i agrument to PsExec.
Here it is:
PsExec.exe -i \\MachineName powershell -File "FileName.ps1"
Sweet, the command ran fine this time!
Wednesday, February 20, 2013
VS 2010 - No Test Settings Available
I ran into an issue where I openend an exisitng test project which had multiple testsettings file but when I when to Test->Select Active Test Settings, it showed the below:
It turned out that the testsettings file were under a folder which was under "Solution Items". I moved the testsettings file one level up so that they are directly under "Solution Items" folder and it fixed the problem.
It turned out that the testsettings file were under a folder which was under "Solution Items". I moved the testsettings file one level up so that they are directly under "Solution Items" folder and it fixed the problem.
Subscribe to:
Posts (Atom)