最近发觉自己又回到了这个原始问题,软件测试活动到底为什么有必要进行,又如何进行呢?
是为了‘验证’或‘检查’软件功能是否完成?----写代码的肯定自己会确认功能是否完成的
是为‘监督’软件功能必须与客户需求吻合?----有需求调研人员,有市场人员啊
是为了提高软件质量?控制开发流程? ----有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的认同.譬如在线书店的用户评论对于后面想要购买相同一本书的用户是有一些建议性帮助的