软件测试理论

一、软件的分类

  软件=程序+数据+文档

  •   按照功能划分,软件分为系统软件和应用软件;

     系统软件:系统运作的基础软件,例如操作系统、各种驱动软件等;

     应用软件:用户实际使用的软件,例如office、QQ等;

  •   按照技术架构划分,软件分为单机软件、B/S架构软件、C/S架构软件;

     单机软件:不需要联网就能使用的软件,例如:office、画图工具等

     C/S架构软件:需要联网,通过客户端操作的软件,例如:QQ

     B/S架构软件:需要联网,通过浏览器进行操作的软件,例如:新浪邮箱网页版

二、软件测试的定义

   标准定义:在规定的条件下,软件测试是对软件程序进行操作,以发现软件错误,对软件质量进行评估的过程;

  IEEE 标准的定义:软件测试是使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。  

三、软件测试的目的

  软件测试的目的:

  1)尽可能多的发现软件缺陷,检验系统是否满足用户需求;

  2)分析错误产生的原因和错误的分布特征;帮助管理者发现当前软件开发过程存在的问题,以便改进;同时设计出有针对性的测试方法,提高测试的有效性;

四、软件测试的原则

  软件测试的原则:

  1)Testing shows presence of defects(测试展示软件中存在的缺陷):软件测试是为了降低软件存在缺陷的可能性,即便没有找到缺陷,也不能证明软件是完美的;

  2)Exhaustive testing is impossible(穷尽测试时不可能的):完全性的测试时不可能的;

  3)Testing early(测试尽早介入):测试人员要求在需求阶段开始介入,使缺陷在需求或设计阶段就被发现,缺陷发现的越早,修复的成本越低;

  4)Defect clustering(缺陷集群性2/8原则):80%的缺陷发现在20%的模块中,一个功能模块发现的缺陷越高,存在未被发现了的缺陷也越高;预防措施:事前预测,尽量预防;事中分析,及时调整;事后分析,下次改进;

  5)Pesticide paradox(杀虫剂悖论):一直使用相同的方法进行测试,可能无法发现新的缺陷;测试用例应当定期修订和评审,增加新的测试用例和新的测试技术和方法,提高测试效率,发现更多的bug;

  6)Testing is context dependent(测试用例依赖于测试内容):根据测试业务的不同(游戏行业、电商行业、金融行业等),测试的技术、测试的用例都不尽相同,需要根据测试的内容,设计合适的测试用例;

  7)Absence of error is a fallacy(没有缺陷是谬论):完整测试所有描述的需求并修复所有发现的缺陷,仍然会制造出难以使用的系统,它无法满足用户增长的需要和期望;

  参考文档:https://zhuanlan.zhihu.com/p/61712141

五、软件测试的分类

  • 按照测试阶段划分

  1)单元测试

  2)集成测试

  3)系统测试

  4)验收测试--α测试、β测试

  • 按照是否运行软件划分

  1)静态测试

  2)动态测试

  • 按照是否查看代码划分

  1)黑盒测试:功能测试、性能测试、自动化测试

  2)白盒测试

  3)灰盒测试

  • 其他

  1)冒烟测试

  2)回归测试

  3)随机测试

原文地址:https://www.cnblogs.com/wzl0916/p/13768016.html