软件测试的目的到底是什么?

2010-12-31  薛紫恒 

  最近发觉自己又回到了这个原始问题,软件测试活动到底为什么有必要进行,又如何进行呢?
  是为了‘验证’或‘检查’软件功能是否完成?----写代码的肯定自己会确认功能是否完成的
  是为‘监督’软件功能必须与客户需求吻合?----有需求调研人员,有市场人员啊
  是为了提高软件质量?控制开发流程? ----有QA部门.....
  那么软件测试到底为什么有必要存在,而且如此风火呢
其实测试的存在重要作用,是其本质,我觉得测试是:为了找出软件缺陷而执行软件的过程(软件测试的艺术)
测试可以达到 提高软件可靠性与软件质量的目的,那么上面的问题就都解决了,软件测试是更为专注的工作,他专注于执行软件并发现改正缺陷,要改正缺陷,那么就必须先知道 那里存在缺陷呢?而缺陷是相对于客户的角度来说的,所以了解大众客户的使用习惯,研究客户心态就显得有必要了。
软件设计最根本关注的其实是"人",是你的用户,他们对于软件的期望是什么, 他们会怎么去使用软件.最为软件用户的人的行为模式值得关注的有下面这十二个方面:
 1.安全探索 Safe Exploration
用户能放心的对软件进行探索性使用,不会迷路,不会丢失数据,当然系统不会崩溃.
2.即时满足 Instant Gratification
现在就要完成这件事情,是现在,不是以后.软件对于用户的操作给出即时的反馈,不要让用户陷入盲目的等待或者延时当中.
3.满意即可 Satisficing
这就够了, 用户不愿意花更多的时间来做到更好.
所以一个一目了然的导航界面或者一个直接的任务操作对于这种行为模式的用户会是一个很好的体验.
4.中途变卦 Changes in Midstream
用户在操作中途改变主意了. 
软件如果能在用户改变主意的时候记住那之前用户的操作信息,这样对于中途改变主意的用户来说,回来时会更容易继续最初的任务.
5.延后选择 Deferred Choices
用户不想现在回答这些,快点完成眼下任务就好了.
譬如网站的用户注册,某编辑器中创建新项目,可以将需要用户填写的相关复杂信息留在以后(也就是用户完成当前急需的任务之后)再由用户去补充.
6.递增构建 Incremental Construction
需要改改,还是不对, 还需要再改一下. 
很多情况下用户在完成一个任务的过程中会思来想去修修改改,支持这样的操作有助于维持用户做任务的流畅性,使其不比花费额外的精力担心进退修改中信息的丢失.
7.习惯 Habituation
那个操作在别的地方可以的,怎么在这里不行?
 一些标准或者是约定俗成的界面行为规范有必要去遵守,尽量使用户不需要打破原来的习惯去操作一个"特立独行"的软件.
8.空间记忆 Spatial Memory
这个按钮一分钟前还在这里的,怎么现在不见了?
很多时候人们记忆东西是靠空间位置而不是靠名称.软件的按钮,菜单,选项等保持固定有助于用户养成空间记忆.UI设计禁忌有一条就是尽量避免动态菜单.
9.前瞻记忆 Prospective Memory
用户把东西放在这里,以后再来处理.
对于一些不紧急但是需要一段时间内完成的任务,用户习惯将它们放在一个相对次要但是又不至于忘记的地方来提醒自己稍后来完成.一个软件系统给用户进行这样的操作的灵活性,完全没必要看到一个任务闲置下来就马上判断这是一个不再需要的任务而去试图终止它.
10.简化重复工作 Streamlined Repetition
到底得重复多少遍?
发现用户一遍一遍做相同的事情,软件能够提供简化其重复操作的快捷方式.
11.只支持键盘 Keyboard Only
很多用户不喜欢用鼠标.
对于软件操作尤其是一些数据输入,支持完全的键盘操作很有必要,从来能减少用户在鼠标和键盘之间切换所花费的时间.
12.旁人建议 Other People's Advice
人是一种社会动物,具有高度的目的性,尽管有时候自己的想法很强烈,但是别人的想法也常常会影响自己.
所以,在用户进行软件操作的时候,使其能够获得别人对于该操作的相关建议性信息,这会提高用户对于软件considerable的认同.譬如在线书店的用户评论对于后面想要购买相同一本书的用户是有一些建议性帮助的
436°/4267 人阅读/10 条评论 发表评论

张平  2010-12-31

软件测试的目的:证明软件符合要求。


薛紫恒  2010-12-31

张平: 软件测试的目的:证明软件符合要求。
软件测试的目的:证明软件符合要求。
--------------------------------------
如楼上这个说法,从思想方向上就是错误的,要找出BUG,修正BUG,提高软件的可靠性更是难了


田海  2010-12-31

张平: 软件测试的目的:证明软件符合要求。
好好看看软件测试的书吧,第一页就有


张平  2011-01-04

LS二位问问你们公司领导软件测试的目的吧,光看书管用吗


薛紫恒  2011-01-04

大多一般的公司领导的确对软件测试的目的和方式都是有误解的,我们应该尝试去纠正,而不是将错就错啊

我们公司原来也没有软件测试的,后来才慢慢建立起来,最初也许是为了验证其功能是否正确,但是如果一直都停留在这个层次,那你们公司的软件质量就很难提上去了


张平  2011-01-04

最终目的是什么,你测了半天,人家改了半天,基本没啥缺陷了,可以交付使用了,这时候你的结论是什么,难道是“软件不符合要求”


薛紫恒  2011-01-04

张平: 最终目的是什么,你测了半天,人家改了半天,基本没啥缺陷了,可以交付使用了,这时候你的结论是什么,难道是“软件不符合要求”
你测了半天,人家改了半天,基本没啥缺陷了,可以交付使用了,这时候你的结论是什么,难道是“软件不符合要求”
---------------------------------------------
你测试完毕了,没有错误了,但是“软件不符合要求”,这是完全有可能的,你所测试的东西 不一定就是客户想要的东西,这涉及到需求调研 和QA质量控制,已经超出了测试的范围---虽然测试的过程也会涉及一部分这些内容,尽管只是些皮毛。


张平  2011-01-05

“可以交付使用了”


胡朴  2011-01-05

这个问题。。。。。。有必要说的这么复杂吗。。。。。


陈燕姣  2011-06-21

的确是这样的,我现在所在这家就这样,所以往往一个程序要搞N久才搞好,烦人


登录 后发表评论