HP LoadRunner
2013-07-23 12:41
Необходим специалист с опытом работы в HP LoadRunner. Описание работы:
Разработка скрипта из 12 бизнес процессов
Используемый протокол – web/html
Тестируемые решения – веб порталы (html, javascript, php)
Ориентировочно срок работы 2-3 недели
Требования к кандидату:
- Знание продукта HP LR
- Опыт создания высоконагруженных сценариев(10-20к пользователей, ролевые сценарии)
- Онлайн доступ – не менее 6 часов в день (включая выходные)
- анализ ошибок лоадраннера и их быстрое устранение
- анализ тестируемых данных и их правильное интерпретирование
Если Вы компетентны в этой работе, прошу откликнуться
Есть набор автоматизированных тестов, написанных с использованием Thucydides+java.
Тесты прогоняются в FF, Chrome и IE с одной машины, теперь необходимо с этими же тестами выйти "в люди"
Т.е. запускать их в на разных OC и в вышеупомянутых браузерах разных версий.
В документации Thucydides и в их группе я не нашла, как это правильно делать.
Подскажите, плс, в какую сторону начинать искать, куда копать.
Тот же Jenkins - это из нужной мне оперы или нет?
Из данной записи нужно вытащить динамиеский параметр: "<Key>11874946</Key>"
С помощью каких запросов это можно сделать? (web_reg_save_param не помогает)
Дали задание поискать информацию о бесплатных программах для автоматизации тестирования мобильных приложений и мобильных сайтов.
Не подскажете какие нибудь бесплатные тулы которыми вы пользовались. или встречали во время работы? Что можете порекомендовать?
С уважением.
C# Создание подключения по RDP
2013-07-23 19:05
Всем привет!
Занимаюсь тестирвоние распределенной системы и мне нужен совет знающего человека. У меня есть 2 компьютера, на одном запускаються авто-тесты, на втором работает определенная программа, с интерфейсом которой время от времени нужно взаимодействовать из авто-теста. Это взамоидействие осуществляеться через программу. Проблема в том, что Twin можетработать только в том случае, если на машине прошла авторизация, то есть пользователь зашел и интерфейс отрисовывается. Постойнно держать окно RDP открытым не слишком удобно. Возникла идея подключаться к машине через MSTSCLib, но компонент AxMsRdpClient5 сам по себе предназначен для работы с оконными формами System.Windows.Forms.
Возможно ли скрыть эту форму, что бы весь процесс происходил фоном?
f.Visivle = false;
не помогает.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AxMSTSCLib;
using MSTSCLib;
using System.Runtime.InteropServices;
namespace AutoLogin
{
public partial class Form1 : Form
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
Application.Run(f);
Console.ReadLine();
}
private AxMSTSCLib.AxMsRdpClient5 rdpClient;
public Form1()
{
rdpClient = new AxMSTSCLib.AxMsRdpClient5();
((ISupportInitialize)rdpClient).BeginInit();
rdpClient.Enabled = true;
rdpClient.Location = new System.Drawing.Point(0, 0);
rdpClient.Name = "MsRdpClient";
rdpClient.Size = ClientSize;
rdpClient.TabIndex = 1;
rdpClient.Anchor = (AnchorStyles)(AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right);
Controls.Add(rdpClient); ((ISupportInitialize)rdpClient).EndInit();
Form1_Load();
}
void axRemoteDesktop_OnDisconnected
(object sender, IMsTscAxEvents_OnDisconnectedEvent e)
{
Application.Idle += ExitTimerEvent;
}
public void ExitTimerEvent(object source, EventArgs e)
{
Application.Idle -= ExitTimerEvent;
if (rdpClient.Connected == 1)
{
rdpClient.Disconnect();
}
LogoffDisconnectedSessions();
Close();
}
private Timer logoffTimer;
private void Form1_Load()
{
LogoffDisconnectedSessions();
String username = "user";
String password = "pass";
rdpClient.Server = "ыукмук";
rdpClient.UserName = username;
rdpClient.AdvancedSettings2.ClearTextPassword = password;
rdpClient.Domain = "domen";
rdpClient.FullScreen = false;
rdpClient.AdvancedSettings2.RedirectDrives = false;
rdpClient.AdvancedSettings2.RedirectPrinters = false;
rdpClient.AdvancedSettings2.RedirectPorts = false;
rdpClient.AdvancedSettings2.RedirectSmartCards = false;
rdpClient.AdvancedSettings6.RedirectClipboard = false;
rdpClient.AdvancedSettings6.MinutesToIdleTimeout = 1;
rdpClient.Size = new System.Drawing.Size(1000, 1000);
rdpClient.OnDisconnected += new
AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler
(axRemoteDesktop_OnDisconnected);
rdpClient.Connect();
Console.WriteLine(rdpClient.Connected);
logoffTimer = new Timer();
logoffTimer.Tick += new EventHandler(LogoutTimerEvent);
logoffTimer.Interval = 150000;
logoffTimer.Start();
}
private void Form1_Close(object sender, FormClosedEventArgs e)
{
Application.Idle -= ExitTimerEvent;
if (rdpClient.Connected == 1)
{
rdpClient.Disconnect();
}
}
public void LogoutTimerEvent(object source, EventArgs e)
{
logoffTimer.Stop();
rdpClient.Disconnect();
}
enum WTS_CONNECTSTATE_CLASS
{
WTSActive,
WTSConnected,
WTSConnectQuery,
WTSShadow,
WTSDisconnected,
WTSIdle,
WTSListen,
WTSReset,
WTSDown,
WTSInit
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct WTS_SESSION_INFO
{
public int SessionId;
public string pWinStationName;
public WTS_CONNECTSTATE_CLASS State;
}
[DllImport("wtsapi32.dll")]
private static extern bool WTSLogoffSession(IntPtr hServer, int SessionId, bool bWait);
private static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
[DllImport("wtsapi32.dll", CharSet = CharSet.Auto)]
private static extern bool WTSEnumerateSessions(
IntPtr hServer,
[MarshalAs(UnmanagedType.U4)]
int Reserved,
[MarshalAs(UnmanagedType.U4)]
int Version,
ref IntPtr ppSessionInfo,
[MarshalAs(UnmanagedType.U4)]
ref int pCount);
[DllImport("wtsapi32.dll")]
private static extern void WTSFreeMemory(IntPtr pMemory);
private void LogoffDisconnectedSessions()
{
IntPtr buffer = IntPtr.Zero;
int count = 0;
if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1,
ref buffer, ref count))
{
WTS_SESSION_INFO sessionInfo = new WTS_SESSION_INFO();
for (int index = 0; index < count; index++)
{
sessionInfo = (WTS_SESSION_INFO)Marshal.PtrToStructure(
new IntPtr(buffer.ToInt32() +
(Marshal.SizeOf(sessionInfo) * index)),
typeof(WTS_SESSION_INFO));
WTS_CONNECTSTATE_CLASS state = sessionInfo.State;
if (state == WTS_CONNECTSTATE_CLASS.WTSDisconnected)
{
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE,
sessionInfo.SessionId, true);
}
}
}
WTSFreeMemory(buffer);
}
}
}