作者 主題: 請問: 關於 .net 開發工具最近有聽說自動測試相關產品,或是有人有寫過lynx 來自動解析網頁I/O嗎?  (閱讀 7305 次)

0 會員 與 1 訪客 正在閱讀本文。

小徒兒

  • 鑽研的研究生
  • *****
  • 文章數: 622
    • 檢視個人資料
各位厲害的大大們:

小徒在此請益:

請問: 關於 .net 開發工具最近有聽說自動測試相關產品嗎?
例如說輸入測試頁面網址, 測試頁面輸入參數, 及出來的結果需為何
的自動上網測試 程式或工具.

或是有人有寫過lynx 來自動解析網頁I/O,傳特定參數進去,驗證回傳的response裏面特定的tag,含有特定的值,如果符合,便log。歡迎提供切磋或討論。

感恩!

elleryq

  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
作單元測試,還是整個寫完以後的測試?

單元測試的話,可以參考 NUnitAsp - ASP.NET unit testing <http://nunitasp.sourceforge.net/>
他可以幫你作網頁的單元測試

整個的自動測試,記得市面上也有蠻多的軟體~記得去年還今年的某幾期 Run!PC 有介紹~

用 lynx 應該也是可行~
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org

jlovet

  • 憂鬱的高中生
  • ***
  • 文章數: 126
    • 檢視個人資料
如果是要測試網頁的反應...
可以用libcurl...

小徒兒

  • 鑽研的研究生
  • *****
  • 文章數: 622
    • 檢視個人資料
Unit Test
« 回覆 #3 於: 2007-10-01 15:07 »
(1.) Download and unzip NUnitAsp. from http://nunitasp.sourceforge.net.
(2.) Unzip the NUnitAsp package into a directory of your choice, such as "C:\Program Files\NUnitAsp"
(3.) Install NUnit. NUnit may be downloaded from nunit.org.

1. create one C# class library project
2. add reference to the NunitAsp and Nunit framework
\bin\NunitAsp.dll  \bin\nunit.framework.dll of the Nunit install directory

3. Copy bin\NUnitAdapter.cs into your test project. (This file isn't required, but it makes working with NUnit easier.)

3.1 in 方案總管,加入現有項目 在同一層 加入NunitAdapter.cs

4. modify your calss to extend WebFormTestCase

代碼: [選擇]

public class CITSTest:WebFormTestCase


5. using
using System;
using NUnit.Framework;
using NUnit.Extensions.Asp;
using NUnit.Extensions.Asp.AspTester;

6. 在class 前面加上[TestFixture]
[TestFixture]
   public class CITSTest:WebFormTestCase
   {


7. 在每個method 前面加上 [Test]
[Test]
public void TestLayout()



Example Testing Class code:
代碼: [選擇]

using System;
using NUnit.Framework;
using NUnit.Extensions.Asp;
using NUnit.Extensions.Asp.AspTester;

namespace CITSTests
{
/// <summary>
/// Class1 的摘要描述。
/// </summary>
[TestFixture]
public class CITSTest:WebFormTestCase
{
[Test]
public void TestNothing()
{
//
Browser.GetPage("http://10.100.1.89/Wits/Login.aspx");
//
}
[Test]
public void TestLayout()
{
TextBoxTester name = new TextBoxTester("UserName", CurrentWebForm);
TextBoxTester comments = new TextBoxTester("Password", CurrentWebForm);
ButtonTester save = new ButtonTester("Button1", CurrentWebForm);
//DataGridTester book = new DataGridTester("book", CurrentWebForm);
ButtonTester link = new ButtonTester("Button2", CurrentWebForm);
LabelTester label = new LabelTester("Label3", CurrentWebForm);


Browser.GetPage("http://10.100.1.89/Wits/Login.aspx");



AssertVisibility(name, true);
AssertVisibility(comments, true);


//LinkButtonTester link =   new LinkButtonTester ("Button2");

name.Text ="test";
comments.Text="ipassword";

AssertEquals("Not clicked",label.Text);
link.Click();
AssertEquals("Clicked once.",label.Text);
save.Click();

//Browser.GetPage("http://10.100.1.89/Wits/Login2.aspx");

   //Browser.GetPage("http://10.100.1.89/Wits/Login3.aspx");
//Browser.GetPage("http://10.100.1.89/Wits/Login4.aspx");

LabelTester labelPage2 = new LabelTester("Label92", CurrentWebForm);
//AssertEquals("Customer Complaint",labelPage2);

Assert.AreEqual("Customer Complaintsss",labelPage2.Text);

 



}

}
}



Example Being Tested Login.aspx Web Page code:

代碼: [選擇]


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Wits
{
/// <summary>
/// WebForm4
/// </summary>
public class WebForm4 : System.Web.UI.Page


{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox UserName;
protected System.Web.UI.WebControls.TextBox Password;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Label Label1;
private int counter;

private void Page_Load(object sender, System.EventArgs e)
{
counter =1;
// 在這裡放置使用者程式碼以初始化網頁
}

#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
{
//
//
InitializeComponent();
base.OnInit(e);
}


/// </summary>
private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{

//Session["userid"]="yimingwu";
//FormsAuthentication.RedirectFromLoginPage("test", true);
if (UserName.Text == "test" & Password.Text == "ipassword")
{
Response.Redirect("http://10.100.1.89/Wits/WebForm1.aspx");
}

else

{
   Response.Write ("Incorrect Password");
}

}

private void Button2_Click(object sender, System.EventArgs e)
{
if (counter == 1)
{
Label3.Text ="Clicked once.";
}
           
if (counter == 2)
{
Label3.Text ="Clicked twice.";
}
           
counter+= 1;    


}
}
}





Example codes of being tested After Login sucessfully redirected to Webform1.aspx

代碼: [選擇]



<%@ Page language="c#" Codebehind="WebForm5.aspx.cs" AutoEventWireup="false" Inherits="Wits.WebForm5" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm5</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="arial">
<asp:Label id="Label92" style="Z-INDEX: 153; LEFT: 56px; POSITION: absolute; TOP: 56px" runat="server"
Font-Size="Smaller" Font-Bold="True" Width="136px" Height="24px">Customer Complaint</asp:Label></FONT>
</form>
</body>
</HTML>





8. run Nunit 2.4.3 的 Nunit GUI , 按下run即可知道所有的 method 測試狀況





代碼: [選擇]

資料來源 elleryq

***logging the testing result

-紀錄測試的結果
1. nunit 可以產出 xml 文件,所以你可以利用 xslt 來作轉換或是直接看 xml 文件。
  1.1 save result as xml
  1.2 open excel
  1.3 資料 xml/ xml 來源
   1.4 xml 對應 將 date time,及results 節點拉進來
   1.5 資料 xml/匯入資料

即可

因為也有 for console 用的 nunit-console,你可以直接把輸出結果導向到一個文件去GUI runner 也有相關設定,你可以參考說明文件


-在程式裡面放一些程式來 log 自己想知道的一些狀況??
可以利用 Trace.Write 或是 Console.WriteLine,結果會輸出到 nunit gui runner 上的 "Trace output" / "Console out" / "Console Error"

另外一種方法就是利用 log4net


Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

elleryq

  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
想不到m$有出類似 apache ab 的工具呢~
長見識了。

忘記是去年還今年的 run!pc 有介紹另外一個 ieunit 應該也可以 (抱歉,現在才想起來...)
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org