当前位置: 首页 > news >正文

架构师知识梳理(七):软件工程-测试

测试原则和方法

系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试

测试原则

  1. 应尽早并不断的进行测试;
  2. 测试工作应该避免由原开发软件的人或小组承担;
  3. 在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果;
  4. 既包含有效、合理的测试用例,也包含不合理、失效的用例;
  5. 检验程序是否做了该做的事,且是否做了不该做的事;
  6. 严格按照测试计划进行;
  7. 妥善保存测试计划和测试用例;
  8. 测试用例可以重复使用或追加测试。

测试分类 

软件测试方法可分为静态测试动态测试

静态测试

指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试,包括桌前检查、代码审查、代码走查的方式。使用这种方法能够有效地发现30%-70%的逻辑设计和编码错误。

动态测试

指在计算机上实际运行程序进行软件测试,一般采用白盒测试黑盒测试方法。

黑盒测试法功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能

白盒测试法结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖

测试阶段

单元测试

也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或软件中的类(统称为模块),测试依据是软件详细设计说明书

集成测试

目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档

确认测试

主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:

  • 内部确认测试:主要由软件开发组织内部按照SRS(软件需求规格说明书)进行测试。
  • Alpha测试:用户在开发环境下进行测试。
  • Beta测试:用户在实际使用环境下进行测试,通过该测试后,产品才能交付用户。
  • 验收测试:针对SRS,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试。

系统测试

测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要指标有响应时间、吞吐量、并发用户数和资源利用率等。

配置项测试

测试对象是软件配置项,测试目的是检验软件配置项与SRS(软件需求规格说明书)的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。

回归测试

测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性

 测试用例设计

黑盒测试用例设计

将程序看做一个黑盒子,只知道输入输出,不知道内部代码,由此设计出测试用例,分为下面几类:

  • 等价类划分:把所有的数据按照某种特性进行归类,而后在每类的数据里选取一个即可。等价类测试用例的设计原则:设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类重复这一步,直到所有的有效等价类都被覆盖为止;设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
  • 边界值划分:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为0-150,边界值为0, 150, -1, 151四个。
  • 错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试。
  • 因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。

白盒测试用例设计

知道程序的代码逻辑,按照程序的代码语句,来设计覆盖代码分支的测试用例,覆盖级别从低至高分为下面几种:

  • 语句覆盖SC:逻辑代码中的所有语句都要被执行一遍,覆盖层级最低,因为执行了所有的语句,不代表执行了所有的条件判断
  • 判定覆盖DC:逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次。
  • 条件覆盖CC:针对每一个判断条件内的每一个独立条件都要执行一遍真和假。
  • 条件判定组合覆盖CDC:同时满足判定覆盖。
  • 路径覆盖:逻辑代码中的所有可行路径都覆盖了,覆盖层级最高

调试 

测试是发现错误,调试是找出错误的代码和原因

试需要确定错误的准确位置;确定问题的原因并设法改正;改正后要进行回归测试

调试的方法有:蛮力法、回溯法(从出错的地方开始,向回找)、原因排除法(找出所有可能的原因,逐一进行排除,具体包括演绎法、归纳法、二分法)。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【计算机毕设-大数据方向】基于Hadoop的社交媒体数据分析可视化系统的设计与实现
  • 掌握python-pptx:打造专业PPT表格
  • WEB渗透权限维持篇-MSSQL后门
  • memcmp函数的使用
  • 基于Python实现一个庆祝中秋节的小程序
  • leetcode刷题day18|二叉树Part06( 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先)
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • 演示:基于WPF的自绘的中国地铁轨道控件
  • 相图的科学应用,陶瓷材料创新
  • Centos挂载和删除nfs
  • 滑动窗口算法—字符串的排列
  • linux驱动开发-地址映射
  • uniapp小程序,使用腾讯地图获取定位
  • Vue组件:依赖注入provide和inject的使用
  • Python中的单例模式:从入门到精通
  • 2017前端实习生面试总结
  • 77. Combinations
  • github从入门到放弃(1)
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java8-模拟hadoop
  • JavaScript函数式编程(一)
  • SSH 免密登录
  • 彻底搞懂浏览器Event-loop
  • 动态魔术使用DBMS_SQL
  • 关于Flux,Vuex,Redux的思考
  • 两列自适应布局方案整理
  • 聊聊hikari连接池的leakDetectionThreshold
  • 嵌入式文件系统
  • 入门级的git使用指北
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数据可视化之 Sankey 桑基图的实现
  • 跳前端坑前,先看看这个!!
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 自动记录MySQL慢查询快照脚本
  • C# - 为值类型重定义相等性
  • !$boo在php中什么意思,php前戏
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #stm32驱动外设模块总结w5500模块
  • (175)FPGA门控时钟技术
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C)一些题4
  • (ZT)出版业改革:该死的死,该生的生
  • (分享)自己整理的一些简单awk实用语句
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (过滤器)Filter和(监听器)listener
  • (六)DockerCompose安装与配置
  • (区间dp) (经典例题) 石子合并
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (转载)从 Java 代码到 Java 堆
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 3.0 Framework已经被添加到WindowUpdate