yebanliuxing 发表于 2009-3-17 00:37:01

菜鸟请教单元测试某个

本人比较菜,刚刚接触测试领域,在实际学习过程中,产生了许多疑问,希望大侠们能为我答疑解惑。不胜感激、
1.

在进行单元测试的时候,比如我使用Nunit进行测试,测试一个类,对这个类的5个方法进行测试,当我对方法 X 进行测试的时候,我的测试代码可以调用 那个类的方法Y吗?如果可以调用的话,那如果方法X和Y本身就是都错的,最后有可能导致测试通过的。
而如果不能够调用方法Y的话,难道要求测试的时候,自己再编码实现方法Y的功能吗? 如果那样的话,也太麻烦了吧?

2.

另外 比如我有个登录函数 有三个参数(username,password, type)

分别表示用户名 密码 用户类型,这个函数是一个网站的登录部分调用,而且网站界面上已经通过单选按钮 保证了用户类型为 “广告管理员”或者“活动管理员”二者中的一个,那么我在进行测试的时候 是否还要进行测试 如果type这个参数为其他非法值的情况呢?

3.


还有比如网站填写一些表单的 一些文本框,要求不能为空,而且在客户端通过javascript 已经进行了检验验证,那么服务器端的代码部分还有必要进行检验 文本框输入的数据是否为空呢?

VisualUnit 发表于 2009-3-17 10:38:48

1. 除非函数Y未实现、被隔离、不可控,否则应该调用Y的实际代码。单元测试的目标是当前函数X,并假设Y是正确的。如果Y不可信,应首先测试Y。如果Y未实现、被隔离、不可控,通常需要打桩,但打桩会导致失真使测试无法进行,所以工具最好有底层模拟之类的功能。
2. 3其实是一个问题。单元测试是针对代码单元的独立测试,应该实现代码单元的功能覆盖,不考虑它所处的环境,即应该对被测试代码的各种输入(正常、边界、非法)都进行测试。外部的环境是可能变化的,例如,问题2,将来登录界面可能修改,问题3. javascript在某些用户的电脑上可能执行不了等等,底层代码的功能正确性不应该依赖于上层代码。

[ 本帖最后由 VisualUnit 于 2009-3-17 13:12 编辑 ]

maguschen 发表于 2009-3-17 15:12:42

LS都回答完了……
补充一下,一切前端的检验都是不可靠的,用户可以禁止JS或者是直接模拟一个HTTP请求来达到一些目的。
页: [1]
查看完整版本: 菜鸟请教单元测试某个