常常看到有言论说国内的项目质量差,不好用,很失败。是框架不成熟?技术不先进?管理人员素质差?开发方法落后?都不是,是细节导致了失败,是细节导致的低质量,可用性差。
来看看一个TextBox可能涉及到的测试项,下面所列出的测试项,在实际项目中数目还会有更多,有几条也可以合为一个,但一般的项目都会涉及到:
1. 是否必输
2. 输入长度限制是否正确
3. 特殊输入类型的检查是否正确
l 数字 :位数正确吗?
l Email:是否有效
l 货币:小数位,四舍五入正确吗?货币类型?
l 电话:格式化正确吗?
l 小数:小数位数正确吗?
l 名字:如果是老外的名字,首字母大写
4. Tab键顺序正确吗?
5. 颜色表示正确吗?(有可能分为必输项,非必输项,当前输入项)
6. 文本框长度和数据库中长度对应吗?
7. 输入的长度不足时是否自动补位?
8. 初始化时焦点的设置正确吗?
9. 初始化时Enable属性设置正确吗?
10. 初始化时的内容正确吗?
11. 当界面上进行其他操作时,文本的Enable属性设置
12. 文本框命名
13. 如果有回车替换Tab,是否正确
14. 是否可以多行
15. 字体设置正确吗?
16. 取Text属性时对空格的控制(Trim)正确吗?
我们来模拟一个简单的工资管理系统,人员信息录入界面,有以下录入项:
姓名:(中国人是汉字,老外是英文,首字母大写)
年龄:(数字)
Email:
电话:月薪:货币
可以看到,第三项里提到的几种特殊类型的文本框基本都涉及到了。
现在不看设置Enabled属性和初始化设置这几项,因为是要其他动作来触发的,再去除文本框命名和Trim,这两项也可以归到Review项里,留下十项。
现在再假定用户的输入全部是规范的,不包括任何非法,不合理数据,如果进行保存的话,保存部分的代码不会出现任何错误,不出任何异常,数据成功保存到数据库。但是大家可以算算这样一个界面,只有5个TextBox,但是在TextBox处理上隐含了多少个bug,50个?太多了,取一半,25个。现在把添,删,查,改加上,再算算,这样一个简单的单表维护界面上就隐含了多少个bug,保守点也30个!要达到50也不是没有可能的。如果我们再加上一些其他的CheckBox,ComboBox,ListBox什么的,编辑查看附件,发送什么的附加功能,测试点会膨胀到什么程度?
以上是假定不作任何其他处理,只是单纯的录入,保存。实际项目中肯定是不会这么夸张的。程序员不会让这样一个“赤裸裸”的程序运行在客户那里的。
举这样一个例子就是为了说明细节对软件产品质量的重要。不要说这些都是菜鸟才会犯的错误,不要说我现在已经是XX师了,这些问题不值一提。上面所说的相信很多人都知道,工作中也很注意,要实现更是不在话下,但是也有很多人虽然经常在作,但是从来不去作更多的关注。上面所提到的每个点都有可能因为程序员或测试人员的一个小疏忽,一个大意,一个想当然而遗漏,而产品的质量很大一部分就体现在这样的小细节里,我们的有很多项目,架构很先进,业务能走通,但是就是到了实际部署的时候错误百出,客户用不起来,其实原因就在我们的软件就只差那么一步,那么10%的东西,但是却导致了整体的失败。而这10%就是各种琐碎的细节所堆积起来的。
没有bug的程序是不存在的,但是在关注各种架构,可复用,可配置等等方面之后,请多留点精力给这些细节。在这里需要的不是高超的技术,先进的框架,新潮的名词,只需要态度。