全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2642
推到 Plurk!
推到 Facebook!

如何寫測試程式來測試其他程式?

答題得分者是:Coffee
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-13 05:03:02 IP:64.217.xxx.xxx 未訂閱
各位大大,

如果有一個已經完成的程式 APP_A, 我要如何寫另一個程式(APP_B)去測試APP_A, 我想讓APP_B自動可以輸入data到APP_A, 然後自動按APP_A中的button執行?

是否有資料或Sample?

謝謝各位.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-13 09:10:58 IP:220.141.xxx.xxx 訂閱
http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=94117
tidhttp 自動登入問題,非網頁的form
------
努力會更接近成功
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-13 13:16:25 IP:64.217.xxx.xxx 未訂閱
請問如何將此, 應用在test web form 上?

我很早之前有看過內地(至少有5年以上)寫過, 當時是為了網頁上的online game, 它可以從檔案中更改時間及網頁座標, 讓你不會斷線且每隔一段時間就自動按網頁上button.

不知有否sample示範如何輸入data 至web form?


謝謝
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-13 13:36:53 IP:220.141.xxx.xxx 訂閱
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=94381
Win32 API 使用討論區(Delphi) » 如何自動將window.open開啟的小視窗內容自動存檔
//
裏面的例子,我是從網路上取得的,我曾改成自動簽入網頁的程式,你說的並不難。
//
下面的比較完整,你先試試看
...automatically fill in web forms of a running IE instance?
http://www.swissdelphicenter.ch/torry/showcode.php?id=1607
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-07-13 13:43:54, 註解 無‧
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-13 15:05:59 IP:64.217.xxx.xxx 未訂閱
pceyes 大大你好,
容我再問深入問題.
是否可以讓程式記入哪些空格要填, 然後再由資料庫讀取資料, 一個一個自動將它填入空格, 然後按button讓它執行, 等它feddback, 在填下一筆資料.
現在我不知如何讓程式記憶哪些空格要填 (因為並不是所有空格須填資料)?
自動填data進入在網頁上空格 (如有需要, 它要自己會 scroll down)?
因為有50萬筆資料要測試, 無法一筆一筆填入, 這樣testiing time 就會拖很久.



謝謝.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-07-13 15:23:06 IP:220.141.xxx.xxx 訂閱

如果在同一頁,可以用同樣的方法(不用scoll down),但問題都在frame或另開視窗,其實還是有很多失敗的例子
尤其是如果Buttom是Img型態的,多要用Form Name或者是javascript方式,後者更覆雜。
//
以下是我現在在用的ini檔,您可以參考一下,id、pwd改放到database
//
[AutoPost]
;執行程式後首先要執行的網址
FirstWebAddress=www.gmail.com
;使用者帳號, type, name
;<INPUT type="text" name="Email">
pceyes2008,text,Email
;使用者密碼, type, name
;<INPUT type="password" name="Passwd">
PassWord=pe560529,password,Passwd
;第一種登入方式 by type name
; type, name
;<INPUT type="submit" name="signIn" value="登入"/>
SubmitByTagName=submit,signIn
;第二種登入方式 by Form Name
;<FORM name="gaia_loginform"
SubmitByFormName=
;第三種登入方式 JaveScript
SubmitByJava=
; <部份抬頭>,
SuccessFulTitle=收件匣,40
; 登入後欲轉往網址
LogonWebAddress=

//
以下是部分程式碼,寫得不好,如果您可以改得更好,請知會一下,先謝。
[code delphi]
procedure TForm1.ExectuePost;
var
ShellWindow: IShellWindows;
WB: IWebbrowser2;
spDisp: IDispatch;
IDoc1: IHTMLDocument2;
Document: Variant;
k, m: Integer;
ovElements: OleVariant;
i, lastSucc : Integer;
vEmpty : oleVariant;
begin

if sFirstWebAddress <> '' then begin
ShellExecute(Handle,
'open',
pchar(sFirstWebAddress),
nil,
nil,
SW_MAXIMIZE);
end
else begin
exit;
end;

ShellWindow := CoShellWindows.Create;
// get the running instance of Internet Explorer
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
// QueryInterface determines if an interface can be used with an object
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WaitForComplate(WB);

WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin

WB := ShellWindow.Item(k) as IWebbrowser2;
begin
Document := WB.Document;
// count forms on document and iterate through its forms
for m := 0 to Document.forms.Length - 1 do
begin

ovElements := Document.forms.Item(m).elements;
// iterate through elements
for i := 0 to ovElements.Length - 1 do
begin

// when input fieldname is found, try to fill out
try

// id
if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
(CompareText(ovElements.item(i).type, userid_sl[1]) = 0) and
(CompareText(ovElements.item(i).name, userid_sl[2]) = 0) then
begin
ovElements.item(i).Value := userid_sl[0];
end;

// password
if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
(CompareText(ovElements.item(i).type, passwrd_sl[1]) = 0) and
(CompareText(ovElements.item(i).name, passwrd_sl[2]) = 0) then
begin
ovElements.item(i).Value := passwrd_sl[0];
end;

if sSubmitByTagName<>'' then begin
WaitForComplate(WB);
// when Submit button is found, try to click
if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
(CompareText(ovElements.item(i).type, SubmitN_sl[0]) = 0) and
(CompareText(ovElements.item(i).name, SubmitN_sl[1]) = 0)
then
begin
ovElements.item(i).Click;
end;
end;

except
break;
exit;
end;

end; // for i = 0
end; // for m := 0
end; // WB := ShellWindow.Item(k) as IWebbrowser2
end; // if idoc1 <> nil
end; // if wb <> nil
end; // for k := 0 to ShellWindow.Count
[/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-07-13 15:26:17, 註解 無‧
pceyes 重新編輯於 2008-07-13 15:31:19, 註解 無‧
pceyes 重新編輯於 2008-07-13 15:33:31, 註解 無‧
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-07-14 23:14:52 IP:64.217.xxx.xxx 未訂閱
謝謝pceyes. 

我們將會考慮此方法. 請問在程式中"sFirstWebAddress"是宣告string?它有讀取合資料?
如果再有問題可否pm給你?

謝謝.
編輯記錄
ralph 重新編輯於 2008-07-14 23:18:32, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-07-15 13:32:39 IP:220.141.xxx.xxx 訂閱
"sFirstWebAddress"是宣告string?它有讀取合資料?
它是存在ini裏的,目的網址只為了用shellexetue開啟網頁用的,讀取資料在後面程式碼部分。
//
如果再有問題可否pm給你?
其實我也還沒有完全想清楚,歡迎討論。
------
努力會更接近成功
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-07-18 01:51:16 IP:64.217.xxx.xxx 未訂閱
其實目前我們在討論可行性.
我們已知IBM有一tool可能可以做此testing, 但此工具價錢太高.
我怕有一陣子沒有close此topic, 版主會不高興, 所以想先close.
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-07-18 10:58:16 IP:220.130.xxx.xxx 訂閱
只要本問題持續討論中,則不會要求結案,
若是本問題已經有相當時間未討論,請適時結案。

但是請盡量公開討論,以俾有需要的人使用此討論。

===================引 用 ralph 文 章===================
其實目前我們在討論可行性.
我們已知IBM有一tool可能可以做此testing, 但此工具價錢太高.
我怕有一陣子沒有close此topic, 版主會不高興, 所以想先close.
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
編輯記錄
Coffee 重新編輯於 2008-07-18 10:59:23, 註解 無‧
系統時間:2024-04-25 14:30:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!