这篇文章主要是针对刚入行和准备入行软件测试的同学写的,知道软件测试这个行业,但不知道具体做什么;或者是大概知道要做什么,但不知道为什么要做,那么多的专业名词,都是什么意思。接下来我就从软件测试的概念开始讲起。
一、什么是软件测试
软件测试就是针对软件所做的测试,它的定义通常有两种。
官方定义:
a.用来促进鉴定软件的正确性、完整性、安全性和质量的过程;
b.是一种实际输出与预期输出间的审核或者比较过程;
c.使用人工和自动化手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
经典定义:
a.软件测试是为了发现错误而执行程序的过程;
b.软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
我个人觉得官方的定义更准确一些,原因是经典定义里的a,测试有时候不单是为了发现错误而执行程序,有时候是为了证明程序符合需求,达到质量而做的;针对b.设计测试用例,执行程序发现错误,这个更多的是测试过程的描述。
二、为什么要做软件测试
为什么要做软件测试呢?我的理解有以下几个原因。
a.发现被测对象与用户需求之间的差异;
b.通过测试活动发现并解决bug,从而增加用户对被测对象的质量信心(交付满足用户需求的产品);
c.通过测试活动,获取被测对象的质量信息,为决策提供数据依据(根据bug的数量跟严重级别来决定是否要上线);
d.通过测试活动,预防缺陷,从而降低项目或产品的风险(譬如安全相关的测试)
三、怎么来做软件测试
怎样开展测试活动,不可能一上来直接就在系统上点点点吧,测试需要做哪些事情,譬如需要制定测试计划,分析客户需求,设计测试用例等,先做什么然后做什么,我们需要制定一个流程,制定的这个流程就叫软件测试流程。也是平时面试中问到最多的一个问题,软件测试的流程是什么?一般的流程是:制定测试计划,需求分析,设计测试用例,执行测试用例,提交跟踪bug,回归测试,编写测试报告。但具体应该怎么做,我后面会专门写一篇关于测试流程的文章。
知道了软件测试先做什么再做什么,是不是就可以开始做了呢,等一下哈,还要有一些行为规范,它就跟员工守则一样,主要是对日常测试工作的一些行为约束跟指导,这个就是测试原则。
测试原则有哪些呢?下面是《软件评测师教程》里的描述
原则一: 所有的测试都应追溯到用户需求
由于软件设计和开发的目的就是使用户完成预定的任务,并满足用户的需求,而软件测试所揭示的缺陷和错误使软件达不到用户的目标,满足不了用户的需求。
原则二: 应该尽早地和不断地进行软件测试
因为软件生命周期的各个阶段都有可能产生错误,所以不能把软件测试仅仅看作为软件开发活动中的一个独立阶段的工作,而应该将其贯穿于开发的各个阶段中。同时还应尽可能早的开始测试,只要测试在生命周期中进行得足够早,就能够提高被测软件的质量,这就是预防性测试的基本原则。
原则三: 完全测试是不可能的,测试需要终止
在有限的时间和资源条件下,找出所有的软件缺陷是不可能的,主要有三个方面的原因:
输入量太大
输出结果太多
路径组合太多
原则四: 测试不能显示软件潜在的缺陷
也就是说测试只能证明软件中存在缺陷而不能证明软件中没有缺陷。
原则五: 充分注意测试中的集群现象
经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目或检错率成正比。根据这个规律,应对错误集群的程序段进行重点测试,以提高测试效益。
原则六: 程序员应避免检查自己写的程序
这有两个原因,一个是心理原因,一个是思维定式原因,一个使人不大愿意承认自己的错误以及思维定式导致难以发现自己的错误,因此为达到测试目的,应该避免这种情况出现。
原则七: 尽量避免测试的随意性
应该从工程的角度去理解软件测试,他是有组织、有计划、有步骤的活动
四、总结
软件测试相对来说门槛低,但里面设计的内容跟概念比较多,涉及到的技术栈也挺多,要求不精,但要会。要想做好软件测试,除了经验的积累,还要把里面的流程,概念理清楚,有一定的技术栈,这样后面才能做测试管理相关的工作,升职加薪更不在话下。