佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 1481|回复: 4

unit test

[复制链接]
发表于 19-7-2006 06:56 PM | 显示全部楼层 |阅读模式
想知道通常软件工程师或developer有没有做unit test?
通常你们是怎样做的?
用什么tool做?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 19-7-2006 11:18 PM | 显示全部楼层
怎么没人回复我?
难道没有人懂吗?
我最近做这project,
但是不是很会.
请问有谁愿意分享吗?

我用的是CppUnit来testing的
回复

使用道具 举报

发表于 20-7-2006 02:02 AM | 显示全部楼层
我還是學生,但是有嘗試使用過 unit test ,
主要是因為看了 extrem programming 然後想嘗試看看,
我之前用的是 JUnit (因為我是寫 java XD)
但是覺得還蠻麻煩設定的 (以前在 eclipse 上的版本,現在的版本似乎比較方便了)

所以我都是自己每一個class寫一個進入測試點
然後測試程式寫在裡面,
JUnit 的好處是能夠幫你比較結果,
自己寫就只能自己用眼睛看....orz,
但是自己寫可以不用管 JUnit 的規則....XD

unit test 主要是程式的測試,
因此會輸入一些資料,並且觀察它的結果,藉以判斷是否符合實際需求,
而輸入的資料當然是有選擇性的臨界資料,

例如寫了一個飲料販賣機的程式,
裡面有2個 function 叫做 setCoin(double coin),displayTotal();

哪麼我們可能的測試碼就有:

a.)
setCoin(0.5); displayTotal();

b.)
setCoin(-0.3); displayTotal();


所謂臨界資料就是有可能出錯的資料,例如 b.) 裡面的 -0.3 在販賣機的程式邏輯裡面是不合理的.
所以我們可以藉由test unit檢查出來,大概的感覺就像上面這樣,



============= 題外話分隔線 ====================


一般上的軟體工程來說,都是 設計 -> 寫程式 -> 測試
當寫完程式之後才開始對程式進行測試.

extrem programming 就有自己另外一套哲學 - 測試先行 (test first)
先對你要的程式寫一部分的測試程式,寫了之後執行一下,( 當然全部都不通過 XD)
這時候的錯誤可能是找不到這個 function.
這個時候就寫一個空殼子 function ,先讓測試通過,
然後增加測試內容,然後修改程式碼讓程式通過測試, (遵從簡單原則,只要程式碼通過測試就好,不要過度設計,寫玩了才 Refactoring)
然後增加測試內容,然後修改........直到所有測試完成..



哪麼一來,你的程式就是完全符合需求的,這個時候,測試先行的好處如下 :

1.) 驗證程式碼的正確性
2.) 先寫測試程式代表先定義這個物件的使用方式(我們常常為了命名煩惱,為了要多少個參數煩惱,為了用戶方便使用煩惱,先寫測試程式,直覺的決定怎麼使用這個物件,不要想太多...)
3.) 測試完成之後的測試碼除了可以做下一次的自動化測試之外,修改一下還能夠當成範例程式碼,連使用說明都省下了

[ 本帖最后由 莫名奇妙 于 20-7-2006 02:04 AM 编辑 ]
回复

使用道具 举报

发表于 8-8-2006 12:40 PM | 显示全部楼层
是否有人试过Jmeter2.2或TestNG in Eclipse?
回复

使用道具 举报

发表于 14-4-2008 01:14 PM | 显示全部楼层
各位师兄大家好,我是初到这里.有个问题。现在我面临如何运用nunit在我们的project上。我们的project又分成几个layer。

1。database (layer 1)
2。DB wrapper and store procedure (layer 2)
3。Object Model (layer 3)
4.Client (layer 4)

现在我的nunit都是写在client side。 可是client有地方会用到object Model.然后object Model会叫SP去做一些data table select,update and delete的动作(动作1)。可是有些object Model内会自己叫自己的object去get一些data(动作2)。

问题是如果我的nunit是写在client side, 那我在client pass in 给object model的parameter就换不回来完整的数据,因为缺了一些object model自己叫自己个get的data(动作2).

这时候我的nunit就不能写在client而只能写在object model了.因为object model自己叫自己也需要pass in一些parameter给第二层的object model.

如果勉强要写在client side也是可以,不过要把所有object model里的所有object private 都换成protected friends才能.这样不管它是第二层也好我都可以pass in parameter 以取到我要的资料.

问题如下:

1.那我不是要把所有object model的private都换成protected freinds?这样不就是违背了object model的意义?
2.如果不把它换成protected friends,那就只能写在object model side了,client不能写nunit了?(一些拉)

还有各位师兄请问你们的整个structure有没有类是我得这样?如果有,我真的很想知道你们是怎样apply nunit在这样的structure 里.因为我缺乏了真正一个real project的实际情况经验.

谢谢各位大大与师兄,帮帮小弟这个忙.我们好像都在以自己的想法做事.这样可行不通.

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-4-2026 06:40 AM , Processed in 0.070516 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表