营销型外贸网站定制,网站哪个语言好,app开发公司流程,家居网网页设计代码软件工程 软件测试测试原则测试方法静态测试动态测试黑盒测试白盒测试灰盒测试自动化测试 测试阶段单元测试集成测试系统测试性能测试验收测试其它测试AB测试Web测试链接测试表单测试 测试用例设计黑盒测试用例白盒测试用例 调试 系统维护遗留系统系统转换转换方式数据转换与迁… 软件工程 软件测试测试原则测试方法静态测试动态测试黑盒测试白盒测试灰盒测试自动化测试 测试阶段单元测试集成测试系统测试性能测试验收测试其它测试AB测试Web测试链接测试表单测试 测试用例设计黑盒测试用例白盒测试用例 调试 系统维护遗留系统系统转换转换方式数据转换与迁移 评价指标 软件测试
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 软件测试方法的分类有很多种以测试过程中程序执行状态为依据可分为静态测试 (Static Testing, ST) 和动态测试 (Dynamic Testing, DT)以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测试3类从程序执行的方式来分类可分为人工测试 (Manual Testing, MT) 和自动化测试 (Automatic Testing, AT)。
测试原则
应尽早并不断的进行测试比如V模型从设计的时候就开始测试测试工作应该避免由原开发软件的人或小组承担在设计测试方案时不仅要确定输人数据而且要根据系统功能确定预期的输出结果既包含有效、合理的测试用例也包含不合理、失效的用例检验程序是否做了该做的事且是否做了不该做的事严格按照测试计划进行妥善保存测试计划和测试用例测试用例可以重复使用或追加测试。
测试方法
静态测试
静态测试是被测程序不运行只依靠分析或检查源程序的语句、结构、过程等来检查程序是否有错误。即通过对软件的需求规格说明书、设计说明书以及源程序做结构分析和流程图分析从而来找出错误。例如不匹配的参数未定义的变量等。
动态测试
动态测试与静态测试相对应是通过运行被测试程序对得到的运行结果与预期的结果进行比较分析同时分析运行效率和健壮性能等。这种方法可简单分为3个步骤构造测试实例、执行程序以及分析结果。
黑盒测试
黑盒测试将被测程序看成是一个黑盒工作人员在不考虑任何程序内部结构和特性的条件下根据需求规格说明书设计测试实例并检查程序的功能是否能够按照规范说明准确无误的运行。其主要是对软件界面和软件功能进行测试。对于黑盒测试行为必须加以量化才能够有效的保证软件的质量。
白盒测试
白盒测试主要是借助程序内部的逻辑和相关信息通过检测内部动作是否按照设计规格说明书的设定进行检查每一条通路能否正常工作。白盒测试是从程序结构方面出发对测试用例进行设计。主要用于检查各个逻辑结构是否合理对应的模块独立路径是否正常以及内部结构是否有效。常用的白盒测试法有控制流分析、数据流分析、路径分析、程序变异等。根据测试用例的覆盖程度分为语句覆盖、判定覆盖、分支覆盖和路径覆盖等。
灰盒测试
灰盒测试介于黑盒与白盒测试之间。灰盒测试除了重视输出相对于输入的正确性也看重其内部的程序逻辑。但是它不可能像白盒测试那样详细和完整。它只是简单地靠一些象征性的现象或标志来判断其内部的运行情况因此在内部结果出现错误但输出结果正确的情况下可以采取灰盒测试方法。因为在此情况下灰盒比白盒高效比黑盒适用性广的优势就凸显出来了。
自动化测试
自动化测试就是软件测试的自动化即在预先设定的条件下自动运行被测程序并分析运行结果。总的来说这种测试方法就是将以人驱动的测试行为转化为机器执行的一种过程。
测试阶段
从阶段上划分软件测试可以分为单元测试、集成测试和系统测试系统测试中又包含了多种不同的测试种类例如功能测试、性能测试、验收测试、压力测试等。
单元测试
主要是对该软件的模块进行测试通过测试以发现该模块的功能不符合或不满足期望的情况和编码错误。 首先应通过静态测试方法比如静态分析、代码审查等对该模块的源程序进行分析按照模块的程序设计的控制流程图以满足软件覆盖率要求的逻辑测试要求。另外也可采用黑盒测试方法提出一组基本的测试用例再用白盒测试方法进行验证。对一些质量要求和可靠性要求较高的模块一般要满足所需条件的组合覆盖或者路径覆盖标准。
集成测试
集成测试通常要对已经严格按照程序设计要求和标准组装起来的模块同时进行测试明确该程序结构组装的正确性发现和接口有关的问题。在这一阶段一般采用白盒测试和黑盒测试结合的方法进行测试验证这一阶段设计的合理性以及需求功能的实现性。
系统测试
般情况下系统测试采用黑盒测试以此来检查该系统是否符合软件需求。 内容包括功能测试、性能测试、健壮性测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。为了有效保证这一阶段测试的客观性必须由独立的测试小组来进行相关的系统测试测试人员必须进行多轮回归测试。结束标志是测试工作已满足测试目标所规定的需求覆盖率并且测试所发现的缺陷都已全部归零。
性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试两者可以结合进行。
验收测试
验收测试是最后一个阶段的测试是软件产品投入正式交付前的测试工作。 验收测试是要满足用户需求或者与用户签订的合同(包括技术协议、技术协调单以及各个阶段用户参与的评审意见等)的各项要求。 系统测试是软件开发过程中一项工作而验收测试是由用户对要交付软件开展的一种测试工作。 通过验收测试后产品可进行发布。但由于无法预测用户如何使用产品所以从用户的角度出发测试人员还应进行Alpha测试或Beta测试。 Alpha 测试是在软件开发环境下由用户进行的测试或者模拟实际操作环境进而进行的测试。 Beta 测试是在实际环境中由多个用户对其进行测试并将在测试过程中发现的错误有效反馈给软件开发者。
其它测试
由于Web应用和 App 应用的大规模兴起也出现了一些新型的测试种类例如 AB 测试、 Web测试中的链接测试、表单测试等。
AB测试
AB测试是为Web或 App界面或流程制作两个 (A/B) 或多个 (A/B/n) 版本在同一时间维度分别让组成成分相同相似的访客群组目标人群随机的访问这些版本收集各群组的用户体验数据和业务数据最后分析、评估出最好版本正式采用。
Web测试
Web测试是软件测试的一部分是针对Web 应用的一类测试。 由于 Web应用与用户直接相关又通常需要承受长时间的大量操作因此Web 项目的功能和性能都必须经过可靠的验证。 通过测试可以尽可能地多发现浏览器端和服务器端程序中的错误并及时加以修正以保证应用的质量。由于Web具有分布、异构、并发和平台无关的特性因而它的测试要比普通程序复杂得多包含的测试种类也非常多。
链接测试
链接是Web应用系统的一个主要特征它是在页面之间切换和指导用户去一些未知地址页面的主要手段。链接测试可分为3个方面。 首先测试所有链接是否按指示的那样确实链接到了该链接的页面 其次测试所链接的页面是否存在 最后保证 Web应用系统上没有孤立的页面。
表单测试
当用户通过表单提交信息的时候测试表单能否正常工作。如提交按钮正常工作、确保程序能够正确处理数据、验证服务器保存信息、测试提交完整性、检验默认值、输入内容校验等。
测试用例设计
黑盒测试用例
将程序看做一个黑盒子只知道输人输出不知道内部代码由此设计出测试用例分为下面几类 等价类划分等价类划分是一种方法通过将输入值分成不同的类别从而减少测试用例的数量同时确保测试覆盖各种可能的情况。这样可以更高效地测试软件而不必为每个可能的输人值都编写一个测试用例。 边界值划分将每类的边界值作为测试用例边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值。 错误推测没有固定的方法凭经验而言来推测有可能产生问题的地方作为测试用例进行测试。 因果图由一个结果来反推原因的方法具体结果具体分析没有固定方法。
白盒测试用例
知道程序的代码逻辑按照程序的代码语句来设计覆盖代码分支的测试用例。以下图为例覆盖级别从低至高分为下面几种 语句覆盖SC逻辑代码中的所有语句都要被执行一遍覆盖层级最低因为执行了所有的语句不代表执行了所有的条件判断。如图中SACBED。 判定覆盖DC逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次。如图中SACBD、SABED。 条件覆盖CC针对每一个判断条件内(比如一个if的每一个独立条件if中的每个判定条件都要执行一遍真和假。如图中SACBED、SABED 条件判定组合覆盖CDC同时满足判定覆盖和条件覆盖。如图中SACBED、SABD。 路径覆盖逻辑代码中所有的可能性都覆盖了覆盖层级最高。如图中SABD、SACBED、SACBD、SABED。
调试
测试是发现错误调试是找出错误发生的代码和原因。 调试需要确认错误的准确位置确定错误的原因并改正改正后要进行回归测试。 调试的方法有1蛮力法2回溯法3原因排除法等。 软件的两种属性外部属性指面向管理者和用户的属性可直接测量一般为性能指标内部属性指软件产品本身的的属性如可靠性等只能间接测量。 McCabe度量法又称为环路复杂度假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n2。 假设有向图中有向边数为m节点数为n则此有向图的环路复杂度为m-n2。 注意m和n代表的含义不能混淆可以用一个最简单的环路来做特殊值记忆此公式另外针对一个程序流程图每一个分支边连线就是一条有向边每一条语句语句框就是一个顶点。
系统维护
遗留系统
遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统它通常具有以下特点
系统虽然完成企业中许多重要的业务管理工作但仍然不能完全满足要求。一般实现业务处理电子化及部分企业管理功能很少涉及经营决策。系统在性能上已经落后采用的技术已经过时。例如多采用主机/终端形式或小型机系统软件使用汇编语言或第三代程序设计语言的早期版本开发使用文件系统而不是数据库。通常是大型的软件系统已经融入企业的业务运作和决策管理机制之中维护工作十分困难。没有使用现代信息系统建设方法进行管理和开发现在基本上已经没有文档很难理解。
遗留系统维护方式如下图
系统转换
系统转换是指新系统开发完毕投入运行取代现有系统的过程。
转换方式
需要考虑多方面的问题以实现与老系统的交接有以下三种转换方式:
直接转换现有系统被新系统直接取代了风险很大适用于新系统不复杂或者现有系统已经不能使用的情况。优点是节省成本只适合小系统。并行转换新系统和老系统并行工作一段时间新系统经过试运行后再取代若新系统在试运行过程中有问题也不影响现有系统的运行风险极小在试运行过程中还可以比较新老系统的性能适用于大型系统。缺点是耗费人力和时间资源难以控制两个系统间的数据转换。分段转换分期分批逐步转换是直接和并行转换的集合将大型系统分为多个子系统依次试运行每个子系统成熟一个子系统就转换一个子系统。同样适用于大型项目只是更耗时而且现有系统和新系统间混合使用需要协调好接口等问题
数据转换与迁移
将数据从旧数据库迁移到新数据库中。 有三种方法系统切换前通过工具迁移、系统切换前采用手工录人、系统切换后通过新系统生成。
评价指标
系统维护是整个系统开发过程中耗时最长的系统的可维护性可以定义为维护人员理解改正、改动和改进这个软件的难易程度其评价指标如下:
易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。易改变性。软件产品使指定的修改可以被实现的能力实现包括编码、设计和文档的更改稳定性。软件产品避免由于软件修改而造成意外结果的能力。易测试性。软件产品使已修改软件能被确认的能力。
系统维护包括硬件维护、软件维护和数据维护其中软件维护类型如下
正确性维护发现了bug而进行的修改。适应性维护由于外部环境发生了改变被动进行的对软件的修改和升级。完善性维护:基于用户主动对软件提出更多的需求修改软件增加更多的功能使其比之前的软件功能、性能更高更加完善。预防性维护:对未来可能发生的问题进行预防性的修改。