要做一个软件,需要三种角色的参与。第一种角色是定义需求的,为程序经理,写软件需求规格说明书;第二种角色是开发人员,依据需求规格说明书编制软件;第三种角色是测试工程师,将需求规格说明书和软件一一对比,专门寻找问题。
    功能测试如何做了,以windows自带的记事本来说明。
假如需求规格说明书如下:
      
    编制一个字处理软件,实现以下功能:
1.文件操作
(1)用户可以新建文件;
(2)用户可以打开一个已经存在的文件;
(3)用户可以保存编辑的结果到硬盘上;
(4)用户可以把编辑的结果另存为另外一个文件;
(5)用户可以打印编辑的结果,而且,用户在打印前还可以进行页面设置;
(6)用户随时可以退出编辑。
 
2.文字编辑
.….….….….….….….…
 
3.格式设置
.….….….….….….….…
.….….….….….….….…
 
 
     作为测试工程师,对软件做功能测试,就是按照需求规格说明书的要求,一一检查软件产品,看软件产品是否正确实现了应有的功能。按上面的例子,就是要去验证,通过这个软件用户是否可以打开文件,保存文件等等,这些就是功能测试。
    但是,功能测试的难点之一就是,如何下结论说一个功能是正确的?例如,把编辑结果保存为文件这个功能,为了验证它是否正确,需要考虑多种情况:
(1)各种不同的存储路径;
(2)各种不同的文件名格式;
(3)不同的文件的长度;
(4)操作系统的不同;
(5)硬盘分区的不同情况;
(6)是否正确保存了?
(7)快捷键;
(8)硬盘空间不够的情况下如何处理;
(9)语言环境的不同;
(10)如果已经打开一个“保存”对话框,还能点击“保存”命令吗?
(11)如果要保存为文件A,而文件A正被另外一个程序锁定,这是怎么处理?
(12)如果.…
 
         因此要测试的各种可能性是无穷无尽的,要想的尽可能多,然后通过测试来给出我们的结果:绞尽脑汁是测试工程师的平常状态,是测试的难点,也是测试工程师的特长。
 
    另外,还需要在软件产品里找一找是否存在需求规格说明书里没有的功能。有可能开发人员因为误解了需求规格说明书或者单纯因为私人偏好,实现了一个或者几个不应当存在的功能。哪怕这个功能再酷,也是错误的,测试工程师能够当发现并作为问题提交上去。
 
   摘抄来源:软件测试工程师面试指导