浅谈软件测试

       我们简单讨论下软件测试,到底什么是软件测试?我们先来分析下测试的基本概念,测试是由“测”和“试”两个字组成,大部分场景下这两个字都是动词,说明测试本身是一项活动。“测”可以引申为诸多行动,如度量、测量、测海测景测地测步、观测观察、测天、推测预料等;“试” 主要含义有两个,一是按照预定的想法非正式地做,如试车、试图、试航、试问、尝试、试金石等,二是考试,如试场、试卷、试题、笔试、考试、口试等;对于测和试的组合来说,广义理解测试是一项不断的测验和尝试的活动,狭义理解测试是一般发生于为检测特定的目标是否符合标准而采用专用的工具或者方法进行验证,并最终得出特定的结果。软件测试的广义解释就是在软件领域进行的一项测验和尝试的活动,狭义解释就是使用软件和测试相关知识,采用专门的工具和方法论来验证特定的目标或产品是否满足要求。
       人类从诞生之日起,在创造和发明一切东西的时候,其实一直都在测和试,导致事物不断的进化,我们也不断追求最好的东西。每一个软件,其实都是一个东西,一件物品。我们不断尝试用各种方法“去测去试”,发现其中潜藏的各种问题,以使它保持“刚刚好”的“完美”。我在想,软件测试其实就三个东西:输入,过程,输出。这个跟所有的日常生活是完全一样的。可以类比做饭,看病,娱乐等。我们以炒菜做饭为例,假如我们做一份炒肉,我们的输入其实就是炒肉的材料;过程就是我们整个炒菜的全过程,在整个过程中,我们需要工具(灶具、刀板、餐具等)、技巧(厨师的技能,对刀工、火候、用料等的掌握与运用)和方法(川菜、湘菜、鲁菜等)等;输出就是我们的炒肉,判断炒肉是否符合要求肯定有标准的,比如食品类的标准,菜系类的常用做法要求,最终需要客人(可以是品鉴专家、也可以是普通用户、也可以是特殊用户等)品尝后得出综合结论。对于软件测试来说,输入通常是等价类,边界值,长序列,突发序列,错误序列,组合序列,默认值,随机数,乱序列等。过程描述太多了,这里面最直接的还是建立测试模型,包含所有可能涉及的流程和路径,常见的模型包括启发测试模型、输入输出模型、状态机模型、实体关系模型等,类比北京到广州旅行,可以步行、骑行、坐汽车、做火车、坐飞机等,方式多样,路径更多样,怎么建立测试模型验证如此多且复杂的场景是个很大的挑战。对于输出,其判定结果有的是明确的,对就是对,错就是错,比如数字运算、规范标准、常识要求等;有的是不明确的,比如用户界面展示、最优最佳算法等;有的是概率性的结果,如AI智能,不同的结果以概率的方式呈现;对于确定结果的输出我们需要判断其正确性,也就是只有0和1的区别;对于不明确的输出则需要建立探索模式,不断试错,找到最佳的验证方式,比如百度搜索地图的最佳路径,可能有N种计算方法和结果,至于到底哪种结果是最好的,则需要根据实际情景来判断。
       测试是包含无穷思索的,也是需要不断的演变。软件的世界更是如此,越来越复杂,越来越多样。如何在软件测试的浩瀚天空中翱翔,需要我们不断强化对于宇宙的认识(软件相关领域),同时不断提高自我的技能(测试技术、工具和水平)。

猜你喜欢

转载自blog.csdn.net/zimingzim/article/details/80373638