软件测试近年来在国内IT行业得到了快速的推广和发展,越来越多的人开始关注他,并想成为一名优秀的软件测试工程师。其实测试一职在国外的IT行业中早已是常态化和不可获取的技术岗位,早在20世纪80年代,软件测试就被重视起来,并逐步提出了系统化的测试流程和专门的测试岗位;在国内最早被提起是在2000年后,后来软件测试专业从培训机构开始进入校园,被列为软件工程专业的一个技术方向,并在各个高校得到迅速推广,可见从一开始对于软件测试的发展前景大家都是看好的。
那么软件测试到底是什么呢?
测试是伴随着软件而生的,最早是被人们定义为发现软件缺陷的活动,跟调试是混在一起的。早期的软件都是小规模的,功能简单、复杂程度低、开发流程也没有形成系统、随意性强;而测试的目的主要是纠正已知的功能故障,测试步骤滞后、重复性错误较多,且测试工作大多都是开发人员做的,存在强烈的主观意识,缺乏对错误的敏锐感知,最终导致产品的质量得不到保障,用户需求得不到满足。
到20世纪80年代初,大型软件系统开始兴起,软件开发的复杂程度提升、用户要求越来越高,对于软件的质量也是高要求高标准。软件开发流程的开始从混乱无序逐步向系统化、结构化过渡,软件测试一词开始不断出现,测试也不在是简单的反推错误(bug)的过程,而是将他作为软件的质量保障(SQA),并有了行业标准(IEEE/ANSI)。
1983年IEEE提出的软件工程术语中给软件测试下的定义是:
使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。定义规定了测试的目的是为了检验软件系统是否满足需求,他不在是一个简单的过程或者开发完成后的后期工作,而是伴随着整个开发流程的,与开发融为一体,成为一个独立的技术专业,需要专业的技术人才来完成的工作。
软件测试主要学什么
测试与开发是密不可分的,从项目立项、项目设计、开发到最后上线,测试工程师全程参与项目的把控、管理、优化。
一名合格的全栈测试工程师需要掌握的四个阶段技能如下:
第一阶段:测试环境搭建 项目实战 、测试理论、Linux操作系统、项目管理
主要掌握测试核心理论、功能测试常用方法及项目管理常用工具。能够独立负责测试项目管理及功能测试
;在项目管理及功能测试领域独当一面,成为合格的功能测试工程师。
第二阶段:web项目测试
第三阶段:自动化测试、性能测试、移动端测试
第四阶段:企业级项目实战
项目实战贯穿整个技术阶段,项目案例多方向覆盖
软件测试的工作内容
软件测试的实际工作流程:首先是项目立项,用户需求分析——制定测试计划、测试数据和测试用例——搭建测试环境、执行测试用例——提交测试报告——跟踪bug修改情况、反复进行测试和修改——生成测试总结和报告——项目交付上线。
经典的W测试开发模型能基本能好的概括测试和开发的关系,也能体现测试在整个项目开发中的流程和重要性。
测试工具的演变:软件测试发展的前期主要是人工测试为主,测试的成本高、耗费的时间长,效率低。到大型软件开发阶段,传统的手动测试满足不了需求,人们开始研发测试小工具辅助测试,发展到现在的商业化测试工具:如捕获/回放工具、Web测试工具、性能测试工具、测试管理工具、代码测试工具等等。
到达自动化测试阶段,测试工具的盛行为软件测试人员减轻了大量的重复和繁琐的工作,测试效率更高。随着敏捷开发的提出,以预防为主成为当下软件测试的主流思想之一,测试驱动开发、自动化的持续集成和测试等技术在逐步的广泛运用,人们更倾向于事先测试来保证代码的正确性。