分类：电脑/网络-软件
问题：软件设计应先学习什么啊？ 
回答：一个测试工程师的学习体验 我最初参加测试工作的时候，不知道什么是软件测试，集成测试和系统测试的概念经常混淆， CMM 是什么就更加不知道了。那时候最简单的开关机也是通过直接拔插电源完成，安装系统对我来说简直是有史以来人类的最高技能，对于那些拿着螺丝刀安装机器的人就认为是宇内超级高手，身具杀人于无形之绝世秘技。拿破仑说不想当将军的士兵不是好士兵，我最初的梦想就是想成为软件测试的高手，傲视天下。所以不断偷师，总结经验，自认为掌握了成为高手的几个秘技，这几年混迹 “ 江湖 “ 还算无往而不利。不敢独享，望与吾辈测试人员切磋，早日总结成功密技之大成，助新进人员早日入门，也算不愧对东北活雷锋的称号。 第一招 学会利用网络 刚参加工作面对浩瀚的网络世界，当时如刘姥姥进大观园，什么都新奇，什么都想要，从网上下载很多源程序的代码，软件技术文档之类，恨不得把所有的好东西收集到手中，其实有些在他人看起来就是垃圾一堆。当时觉得有了这些 “ 武林秘籍 “ ，成为高手指日可待。最初参加工作由于自己工作努力有幸转为开发，加入项目组后我的习惯还是没有改，反而变本加厉，手中的资源更加多，上网的时间更加频繁。 一次项目经理分配任务，觉得依靠手中的秘籍加上自己的 “ 聪明才智 “ 很快会完成，不料短短的时间，所有的一切变成了马奇诺防线。解决问题很慢，思路不清晰，项目经理在对我施压的过程中教会了我终身难忘的一招，学会利用网络寻找要解决问题的答案，从此 Google 成了我的最爱，关键字成了我变化的招数。在软件测试工作中，他帮我解决了很多疑难问题，解答了很多令我迷惑的地方。也是我帮助测试同行解决问题手段之一，很多软件测试新手，甚至老手都没有意识到自己手上就握有 “ 无敌秘籍 “ ，所以只要你耐心找，答案就在身边。 这里总结一下利用网络搜索引擎的技巧： • 组合搜索 每次搜索某个文件，如果只给出一个单词进行搜索，经常会出现成千上百万计的匹配网页。然而如果再加上一个单词，那么搜索结果会更加切题。 • 选择表述内容的词组 一般我在网页搜索引擎的时候，选择一些可以表达我要查找内容的关键词组，用来缩小搜索范围，从而找到搜索结果是最好的办法。运用词组搜索涉可以先先简单地输入一个问题作为词组搜索，如果仍然找不到合适的，那就用多个可以表达要查询内容的关键字进行查询。 • 定位信息来源 有的时候用词组搜索不到或者无法准确表达所需信息。可以用另一种方法直接到信息源，就是直接到到提供某种信息的站点去。可以用公式 “www. 公司名 .com” 去猜测某一组织的特点。从而得到所要搜索的信息的主要词组 其实网络上还有很多关于搜索技巧的文章，大家可以自行学习。千万要记住搜索引擎是帮助你成功的有力武器。 第二招 学会动手 参加软件测试工作后，随着工作经验的增长自我感觉越来越好。在公司里也逐渐受到同事领导的重视，一次针对公司的新的软件功能进行测试的时候，像往常一样 “ 随手 “ 测试出了几个 Bug ，然后 “ 仔细 “ 的填写了 Bug 单（这个 Bug 的现象已经出现了很多次了）。这时候测试经理走过来，重新复查了一下填写的 Bug 。他在重现我的 bug 的过程中，简化了我的输入变化， bug 神奇的又出现了，同样的现象，他关闭软件重新变化输入，扩展出 10 几个变化后，软件不动了，内存不断上升。终于他找到了产生软件的 Bug 的原因，然后对我说 “ 寻找 Bug 要准确定位，我们开发团队是一个整体，时间是等量的，时间不在你身上浪费，就是在他身上浪费。如果测试人员每次发现的 bug 描述不清楚，并且多个问题潜在的错误原因是一个，虽然操作可能稍微有些变化。这样开发人员在重现 bug 的时候他要调试跟踪判断，很花费时间，而且效率低。如果测试人员发现 bug 的时候多动手可以更加准确的定位 bug 步骤和原因，给开发人员最精确的步骤和准确的描述，这样整个团队才能高效，所以需要大家协作！。 “ 。 在以后的日子里，每次解决问题的时候我都记得多试验几次，多尝试。网上很多朋友还有同事问我问题的时候，其实他们只是万里长征就差一步，只要再多动手实验一次就可以达到目的了。所以多动手，多尝试。 第三招 思考自己所作的 刚开始入行的时候，总是思考如何做好软件测试。认为公司的测试流程混乱总是很郁闷，认为自己学不到东西，如何才能测试好产品，常说心动不如行动，以前看到古龙小说中经常出现的场景无名小子不断挑战高手，总结积累。我总结了有些经验是实战中得到的，所以不断尝试引入新的测试流程然后评估，这个过程虽然很痛苦，但是从中积累了不少经验。这段时间让我学习到了很多东西，接触了 ISO,CMM ，测试管理工具，自动化工具（因为公司不正规给了我很多学习的机会，后来到了比较大的软件公司后，以前的经历给了我更多的发展机会，因为大公司非常正规了，公司内部人员分工明确，所以能力的锻炼反倒少了）。由于工作中经常写报告反倒养成了总结教训的习惯，因为纸面上的东西是永远也忘不掉的。在写的过程中可以不断补充扩展，整个过程是思想升华的过程，当年达摩面壁九年就是融会贯通的典型例子，如果他不是有个思考的过程，他也不能成为一代大家。如果后来不时有人把他的绝技记录下来，也就不能有后来的少林寺七十二绝技。 所以善于思考，总结经验，也是成为高手之路的不二法决。 第四招 学会利用论坛资源 其实测试新兵和测试高手之间的区别，往往是不会利用现有资源。在论坛中我们会看到很多新手不断的提问，但是有很多问题其实都是已经别人提过了，或者已经有解决方案的。所以经常会看到 “测试高手“的身影，并且不提问题，而且还能“锄强扶弱“，是测试新丁的救命稻草。好像是高手们无所不能，其实摘掉这层耀眼的光环，他们并没想像得那么厉害，只不过通过自己的搜索找到的答案，然后帮助其他人。当然也有很多人都是通过自学，然后在论坛中交流得到了很多经验，高手其实也是因为善于思考问题，亲自动手解决问题。所以动手和利用论坛资源的过程中他们也在不断提高。 很多时候看到论坛中有人提问，问题描述不清，很多人看了很困惑。发贴题目动不动请高手帮忙，救命之类的，好像天下大乱，世界末日。虽然这个题目很招人，但是无法让那些想帮助你的人帮你，因为题目不清晰，而且高手字样吓阻了很多人。其实问问题也是个思路整理的过程，描述清晰，让人理解清楚，才能望文知意知道你的当前发生问题的环境，才能让那些想帮你的人解决问题，否则给人无从下手的感觉，解决问题效率不高。 第五招 学习和你所测试的软件产品相关的知识 要想成为好的测试人员，还要了解你要测试的软件的相关知识。要了解软件产品的架构是什么样的。要了解软件的市场需求，在接触软件之初要可以多看看用户的反馈信息，这些才是用户最关心的，也是你在测试中需要注意的问题，满足客户是最大的需要。但是了解软件需求之后要学会要多读些软件系统的技术文档，软件设计文档，这些文档可以帮助你了解产品如何工作。还有多看看公司 Bug 库中的问题，这些存在的问题可以帮助你了解软件产品那些地方存在缺陷，软件系统那些地方会出现错误。软件是运行在一个大环境中，如果对系统不熟悉，那么有些问题你不能从一个更广阔的层面考虑，学习操作系统的知识，有助于你发现缺陷，定位问题更加准确。比如软件运行在 Windows 或者 Linux ，如果你不懂操作系统，你就无法建立测试环境，有些时候时候软件的组件发生问题，就是你系统配置造成的，对系统不熟悉，你会把外在原因归结为软件本身。所以要学习关于和软件系统相关的知识，比如编程，网络，数据库等。不一定你要学习到多好的程度，只是通过这些扩展的知识面，你可以在发现问题，解决问题上不会局限在狭小的圈子里。 和一切相关的人员交流，不同的交流渠道，获取消息是不同的，角度也不同。和客户交流，你会在测试中从客户的角度发现问题；和开发人员交流，你会了解开发人员怎么实现软件功能的；和项目管理人员交流，你会知道开发进度以及遇到的困难。 ------------1：要对测试工作有热情。诚然在国内的一些公司里，测试工程师的地位不如开发人员的地位高，测试工程师的薪水比不上开发工程师的地位。但是这种情况在大型的软件公司里是不存在的。所以：不要妄自菲薄，要对测试工作有热情。 2：无论在工作，学习，还是生活中，都要做个善于总结经验的有心人。对于测试工程师要建立自己的bug库，这对自己的成长至关重要。 3：要学会利用搜索引擎。 4：多动手，多尝试。 5：多思多悟。 6：学习和你所测试的软件产品相关的知识 ，多充电。