How can I make a GUI test focus on and the same time continue working with my PC? - automated-tests

I understand that Two users cannot work on the same machine at the same time, and Test Compleate interacts with GUI in the way a user would do.But probably there is some way to solve this problem?

I don't know Test Complete so I can't say anything about workarounds specific to this product (that may well exist!), but one option is always to set up Virtual Machines and run the tests in there. Some of the most popular virtual machines (they all have free editions) are Virtualbox, VMWare and Microsoft Virtual PC.

try UI Automation (MS UIAutomation library or UiAutomation PowerShell module, for example), it frequently pulls the AUT to the foreground. Moreover, it has the abiblity to set the focus (AutomationElement.SetFocus(), Set-UIAFocus).

Related

Getting started with line-rate virtual machine

I am beginning to study the use of virtual machines with realtime applications, specifically network applications.
While I do understand the limitations and concerns, I'd like to get ideas as to how to get started on this task.
I am going to use a DPDK sample application over Linux, and probably use VMWare for starters. However, I do not know what my first steps with respect to setting up VMWare should be.
First I think it is better to use open source solution like QUEM/KVM for your virtualization platform. Many platform exist for run high performance network functions on virtualized platforms you can see OpenNetVM for example in order to get basic ideas.

ASP.NET Local Development Setup

I would like to start learning ASP.NET on a for-fun project. I'm hoping to setup a local server to do my development on, but I don't want to pollute my user account with a webserver, database, and developer tools.
I'm using Vista Home Premium as my desktop OS. Is it possible to setup a separate user in vista and contain all the developer stuff inside it? (Keep sql server, IIS, and Visual Studio separate so they don't run when I'm not doing development work)
If this isn't possible can someone suggest a good alternative?
Use a virtual machine such as VMWare.
I personally don't see any benefits of creating a separate user for this. There's a webdevserver bundled with VS for development use. This only runs when you start it. And VS itself doesn't do anything unless you are using it...
SQL Server can be set to be started manually.
If you're just getting started, check out the express editions of visual web developer and sql server.
I agree with ocdecio: a virtual machine is the way to go. The nice thing, as well, is that you can take a few hours to configure your development environment and then save it intact. That way, if you ever hose it, you do not have to spend another day configuring it. Think of it as "Environment Management" to go along with your Source Code Management. The only caveat is to make sure you have plenty of RAM (2+ GB). RAM is much cheaper than time these days!
I have to agree with the above.
I have all the dev stuff on my one user account (I'm using Vista Home Premium too), but nothing runs unless I ask it too.
When installing Sql Server, you should be prompted if you want the service to start automatically or manually. Choose manual and run off one user account.
#mdbritt
This case is a development learning env for asp.net. I can hardly believe that a virtual environment is preferred for this. Nor for any other normal development environment.
Why not just create an image of the hard drive if you want to avoid time spent on reinstall and reconfigure?
I agree with ocdecio: a virtual machine is the way to go. For some things, you can even download fully functional VM's direct from MS (ie Sharepoint Development). The VM's can be a real timesaver and they're easy to backup in entirety.

Advatages to using virutalization for web development

It's one of those things I see a lot but never really think of. Do you think for the purpose of web application development (specifically ASP.NET WebForms/MVC). Do you think it's advantageous to do such a thing and if so, what kind of advantages come out of it?
By virtualization I mean using products like Hyper-V to separate the server context like your SQL and Web Server, etc.
First question is, virtualization of what? Do you mean server virtualization? Do you mean running VMWare on each dev's laptop with multiple OSes? Do you mean moving everything to the cloud?
Virtualization of servers, in web app context, is not really different from that in general IT - most of the servers on the Internet, including StackOverload's, are bought to handle peak loads and spend most of the time idling away the cycles, so virtualizing them makes sense when you have more than a certain amount.
VMWare on the desktop (or other parallels on other operating systems) is superb because a) your devs can run a full instance of your server environment, including multiple virtual servers connnected in a virtual network - this is about as close to the real thing that you can get, minus hardware costs and minus devs messing with each other's servers. For clients, you can use Linux and multiple Windows installs to test various browsers, font sizes, etc. quickly - also a big win.
Moving everything to the cloud makes sense in many cases, but is probably a topic for a separate full-sized question :)
One big advantage I see is, that every developer can have his/her own sandbox to work on. If someone messes up his/her sandbox he/she can take a clean image and all is OK again. So I guess that means that there is room to experiment without losing valuable time getting back to the normal setup, you can simply do a rollback.
I'm in doubt a bit on whether you should use virtualisation for production environments. Depending on the application of course.
The only time I would use a virtual for ASP.Net development was if the app required specific setup, such as relying on installed software, wierd settings or particular shares. Every developer has their own webserver and can run their own database so if it's a "basic" webapp I don't see much value in virtuals.. it's pretty hard to break anything with a basic web app deployment :)
With a virtual server, you can test your code in a production-like environment. It is also possible to quickly revert back to the original setup. For many applications, it is useful in that time period just after you write the code, but before it goes to production.
I'm a fan of virtualizaion and use it in testing and production (VMWare and Hyper-v) but over the last year I find it less important on a dev machine. TFS provides me with all the backup/rollback ability that I need, multiple versions of .net can now exist on the same machine and VS2008 can target all those versions.
In a development environment a virtual environment is useful to put several different servers on one box, you can have an instance for your web app, one for your services, one for database, etc. That way it mimics your production environment if you are using separate servers.
One of the benefits of using virtualization in production is that your application is not tied to a specific machine. If you wanted to move your web server instance to another box, it is trivial to do so. You don't need to install or configure things on the new server and hope that everything is set up properly.
One problem I have had though in testing virtual instances is that it can run slower for some applications, specifically engineering apps that like running the CPU at 100%. So test before you leap.

What program can I use to remotely help clients?

I have a lot of people that ask me to fix their computers. Usually it is "slow computer" or "my computer has pop-ups," etc. In other words they have viruses and spyware. I thought I could use a remote program to do it, instead of them brining their computer to me or me traveling to their house..
I thought of UltraVNC, though I'm not sure how I would get them to use it. What I would like to have is a program they can download from my website.
What program would you recommend for this? Remote Desktop? VNC? Something else? I'm happy to pay a small fee if necessary to make things as seamless as possible. Word of mouth is valuable and a good referral for an easy to work with computer person (me) is worth that monthly or one time fee.
I have Vista, most will have Vista Home Premium or XP Home. I have Vista Home Premium and Mac OS X. I can use Linux if necessary. I just don't have it installed right now.
Thanks.
EDIT: Is there an alternative to copilot? I like it but I'm afraid to stake everything on one provider.
https://www.copilot.com/
It's made to be simple so even the most novice computer users can figure it out.
Copilot helps you fix someone's computer problems by letting you connect to their computer, see what they see, and control their mouse and keyboard to help fix the issue.
It's nice because they just go to the site and enter the code you give them. The installation is simple from there.
(Modified)
LogMeIn has a free version that works very well. It runs in the user's system tray and you can login and control their computer as long as they have the program running. The free version has a few less features, but they're mostly luxuries instead of necessities.
Team Viewer is a desktop sharing remote control support tool. It is free for non-commercial, personal use.
There are a few different options:
Remote Desktop: Nice interface, integrates with Windows very well (I had no trouble connecting to my Vista desktop from my XP laptop). I think your client would need to have Windows XP pro; XP home does not have the Remote Desktop Server.
RealVNC: Nice interface, the free version is very useful. Encrypted connections are available with the non-free version.
There are others (like Copilot), but I have only used Remote Desktop and RealVNC.
With either of these, you need to make sure port-forwarding is setup if they have a router, and that the firewall whitelists the program.
Windows XP has built-in "Windows Assist" which lets you send an invite to another Windows machine (typically via e-mail) and allows you to remotely control the machine with them watching. This is a nice option because it is already built into Windows (albeit not as well known as RemoteDesktop or LogMeIn).
The advantage over Remote Desktop is that the user can see what you are doing to their machine and control can be passed back and forth.
This link has the steps to do this.

How to Improve Web Development Using Virtualization in asp.net?

Improving Web Development Using Virtualization
https://web.archive.org/web/20090207084158/http://aspnet.4guysfromrolla.com:80/articles/102908-1.aspx
Virtualization is, in essence, creating multiple miniature (virtual) PCs inside of your primary PC. One of the great benefits of this is that it allows you to isolate and test an application or set of applications in an environment that is free of other things to interfere. It used to be that in order to get a new machine with a new development environment on it you had to have another piece of hardware, or you had to rebuild your system to the new environment. With virtualization, you simply install the new environment that you need into one of the virtual machines and you run it as necessary. When you're done you can shut it down.
Virtualization is the ultimate in isolation -- it can allow you to do things on one piece of hardware that are simply not possible without it. For instance, you can install software in a test environment on a member server because it won't run on a domain controller. You simply fire up two virtual machines at the same time -- one being the domain controller and the other being the member server. Both virtual machines can run on the same physical hardware at the same time without either being aware that they are sharing a machine. The result is a quick way to implement testing environments.
Virtualization technology allows for the virtual systems to be frozen in place. In other words, the exact spot in the machine that you are at can be frozen for an indefinite period of time. If you work on one project until it's released and stable and need to come back in a year and start working on it again, you can freeze the system when you stop working on the project and then restart it a year -- or more – later. When the system is restarted it will be like time had not passed. The system will be restored exactly as it was left.
This particular feature is great for developers who support multiple systems including consultants who have different clients with different projects that they will have to support over time. You don't have to worry about recreating an environment to test a bug fix; you simply thaw out your virtual machine and go.
Virtualization programs have a feature described as Undo disks. Undo disks allow you to operate on the system and if you decide that you don't want to save your work you simply don’t' accept the changes in the undo disks. Poof. Like magic everything that you did is undone and it's like it never happened.

Resources