高分求助:有没有什么办法回放操作过程? - Mary(200分)

  • 主题发起人 主题发起人 Mary
  • 开始时间 开始时间
M

Mary

Unregistered / Unconfirmed
GUEST, unregistred user!
我在测试的过程中,希望能将刚才导致错误的动作回放,以便检测修改后的
软件是否已满足要求。请教大家有什么办法?有现成的工具软件还是应该自
己编程序实现。
如果需自己编程的话,主要应解决什么问题?(如软件运行中延时等待?)
 
我认为不太现实, 主要原因如下:
在DOS下用 BC 时 确实可以回放步骤,但根本原因是因为DOS是一个单线程的操作
系统,在你的程序运行时,别的程序是不能干扰你程序的数据区的。这也就为调试器
提供了回放的前提条件。
您可以注意到: 在WINDOWS环境下,各种编译器都没有提供此功能了
我认为根本原因在WINDOWS的多任务性和代码公用性

俺的答案就是不太可能
 
> 根本原因在WINDOWS的多任务性和代码公用性
谢谢王寒松,如果我保证除工具软件外,只有待测试的程序在运行,是否可行?
我的思路是该测试工具软件记录下我在另一个软件中的操作(如键盘及鼠标操作),
并可以按某一步开始起回放。我希望能通过这个功能大大缩减测试过程的工作量。
 
这个已经讨论过的<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=108428">问题</a>也许可以参考
 
to Mary:
我想了一下大概的思路, 要实现回到发生异常前的内存环境,必须仔细的保存
每一步执行时的内存环境以及寄存器状态,才能正确的返回。
如果从这个角度说,只要能保存每一步的内存环境和CPU状态即可。
但WINDOWS使用了虚拟内存的概念,每一个进程都可以使用2G的内存地址空间
所以每一步,每一个汇编代码都保存这个状态是很不现实的。
如果简单的屏蔽掉所有的其他进程(即屏蔽掉系统热键或不允许运行其他程序
防止干扰), 这时候实际上还有一个问题,就是:
WINDOWS 的系统进程还在运行,实际上你的程序还是要调用大量的WIN API
或系统VXD函数来完成任务的,如果你的程序出错,破坏了系统的数据区
DELPHI的异常处理虽然能帮你的程序跳出来,但我看恢复回异常前的内存场景
也不太可能。
 
HI MARY:
前两天有为小弟提出一个演示脚本制作问题,很有意思。可是没等讨论出个结果,他
就匆匆地把分分掉了。你这个问题提的极好,很有挑战性。
对于编程,只有想不到的,没有不可能的。
可以作成一个独立的程序,使用Message HOOK,HOOK用户选定的APP的所有消息,并
且保存到一个日志文件或内存流中。再写一段播放程序,来重现程序的运行。
不过我警告你,这可是一个不小的工程。如果你想做的话,找我,我可能给予一定的
帮助。
 
Hi,CJ

不好意思麻烦你帮我将下面的话贴到大富翁上,好吗?我从
昨天下午连到今天,还是不能如愿,我又想早点解决这个问题,
只好请你帮忙了。谢谢!
问题的URL是:http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=114899
主题是:“高分求助:有没有什么办法回放操作过程? - Mary”


本来是请版主帮忙的,但中午发出的信尽然被退回了,只好麻烦你了,
下次如果你到温州的话,我请客,呵呵。

Mary

==============

谢谢王寒松、yifeng 和 zhanghui!
我的意思就是象huizhang说的那样,先记录成一个文件,
标记上不同的阶段,然后可以从不同的阶段重放操作。
今天刚下载了一个可以拦截、得知键盘输入的数据的构件
TKeySpy,下一步是怎么得知鼠标的操作(在哪个按钮上
click或单击右键等)及如何回放。

To 王寒松:
当然最后是能‘恢复回异常前的内存场景’,但就象
你说的好像有很大难度,目前我想先做到自动重测软件(
重新运行修改后的软件,回放以前导致错误的键盘及鼠标
操作,以检测软件是否已真正修正了该错误)。

To zhanghui:
要能得到你的帮助就太好了,我也知道要实现这样的
功能不是件容易的事,虽然曾听过国外的测试工具软件已
有这样的功能,但一个是Money太多,买不起,另外也可能
不太适合我们公司目前的测试操作。

To yifeng:
我连大富翁连得好辛苦,你给我的URL硬是连不上。没
办法看到那个问题的讨论,:(

另:不知哪位大虾有Hook的例子,请帮忙mail一份给我,谢谢。
如谁需要TKeySpy控件和例子,告诉我。
 
hello Mary, long time no see.
I am going to mail you a MessageSimulator component with a sample app.
This component can simulate a win32 message and excute it.
The sample come with it has Record, Stop, Replay function to record
the message que and replay it. I blieve this piece of code may help
you a little bit.
 
谢谢huizhang,你的控件和例子对我很有帮助,我先看看,如果有问题再讨论,好吗?
 
忘了说一句:用了版主介绍的代理服务器(202.10.11.2,端口:80)速度快多了。
 
huizhang, mail a copy to me , please!
<a href="mailto:yi_feng@188.net">my mail</a>
 
<a href="mailto:cjcjc@online.sh.cn">me too thanx</a>
 
不好意思,这个问题拖了有一段时间了。被其他事给烦着,
已经好久没有好好坐下来用DELPHI了。
to 所有有huizhang提供的这个控件的朋友:
我用的时候发现延时处理不对,很多重放操作一晃而过,而
且有时好像鼠标定位不准似的,不能准确地回放操作。另:我
的windows基础太差,看源程挺累,又没有什么好的中文帮助,
如果哪位朋友知道某本好书,请告诉我一声,谢谢!

to huizhang:
你的邮箱有点奇怪,我直接给你发的信都会被退回。:(

 
到现在,最好的windows编程书,好像还是原来的windows3.1程序员指南,
(1,2.3,4,5,6).不怕苦,去看msdn吧!
很高兴,找到一个喜欢delphi的温州老乡.
 
有现成的软件在office97正版的价值包目录里名称mscammder
另外,lotus也有类似的软件
 
我以前用VC实现过类似的功能,若用软件实现,主要分两大模块.即录制和回放.录
制的方法是安装JournalRecord钩子函数进行输入消息的纪录.在回放过程中有两种方
法;
1:使用JournalPlayBack钩子函数,优点是速度快,但回收到会放时真正的鼠标和
键盘的干扰.
2:使用keybd_event和mouse_event来模拟.缺点是鼠标动作较慢.
我当时是两种方法结合使用.就可达到较好的效果了.
在windows 3.1有一个16位的程序recorder.exe在95/98下也可使用.可以将原
来鼠标和键盘动作纪录到文件中.

不过这些都是原来我用VC时的方法.不知对你在delphi下编程有没有帮助.
 
这个问题解决的怎么样啦? 很感兴趣的说.
 
TMacroMagic Component
------------------------------
Add full macro-support to your application in a snap !
Features recording and playback of mouse- and keyboard events.
Comes with lots of events to ensure smooth integration in your app.
Allows looping of macro-playback.
TMacroMagic was specially build for making demo's of your
application: it provides methods to automatically addapt the
playback-speed to the speed of the PC the macro is running on.
An example: suppose you click a button that loads a table. The time
it takes to load a table depends on the size of the table, the
occupation of the system, the speed of the harddisk, etc, etc. By
adding only two method-calls to the OnClick-event of the button, you
can make the macro wait untill the table is loaded before it
continues playback. These methods are only effective during playback
or recording, otherwise they're simply ignored, so you can leave 'em
in your code without the affecting the speed of your app !
A demo-project is included in the ZIP, which shows how easy it is to
use TMacroMagic.

(C) Niels Vanspauwen (March 19th, 1998)
E-Mail: Niels.Vanspauwen@Student.Kuleuven.Ac.Be

这个控件怎么样?
 
Hi cAkk:
That's Great.
It's just what I want.do
you have the zip file,
send me one copy ,Thanks a lot.
<td width="100%" bgcolor="#F7F7F7"><font color="#0000A0">
<pre class="text"> mail a copy to me , please!
<a href="mailto:yunfengl@163.net">my mail</a></font></pre>
</td>
 
多人接受答案了。
 
后退
顶部