静态测试和动态测试
1. 静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;不用执行程序的测试,它主要采取方案—代码走查、技术评审、代码审查的方法对软件产品进行测试。(t)称为:时刻的瞬时利息率(是无风险利率)。
2. 静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软件;
3. 通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序测试软件称为动态测试。在动态测试中,通常使用白盒测试和黑盒测试从不同的角度设计测试用例,查找软件代码中的错误;
4. 动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。
1. 动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。目前,动态测试也是公司的测试工作的主要方式。
结构分析:
静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。其中,函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;控制流图显示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。
检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。
优缺点:
代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。但是代码检查非常耗费时间,而且代码检查需要知识和经验的积累。代码检查应在编译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表等。静态测试具有的发现缺陷早、降低返工成本、覆盖重点和发现缺陷的概率高的优点以及耗时长、不能测试依赖和技术能力要求高的缺点。
测试分类:
动态测试----->白盒测试----->单元测试(一般dev编写),集成测试(主要是模块间的接口测试):细分为组装测试(进行模块测试,是单元测试的延伸)和确认测试
动态测试----->黑盒测试(功能测试)----->系统测试,验收测试:以客户试用方式进行测试(发出beta版本)
回归测试:是指修改了旧代码后,重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。
1. 白盒测试:逻辑覆盖,基本路径测试
a. 逻辑覆盖:以程序的内部逻辑结构为基础,包括语句覆盖,判定覆盖(分支覆盖),条件覆盖,判定条件覆盖
语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
判定覆盖法(分支覆盖)的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
一个判定往往代表着程序的一个分支。每个判定真假各一次!!!
条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。条件覆盖不等于判定覆盖。每个判定中的每个条件
可能取值各一次!!!
判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一
次。每个判定真假各一次+每个判定中的每个条件可能取值各一次!!!
每个判定真假各一次+每个判定中的每个条件可能取值各一次!!!每个判定真假各一次+每个判定中的每个条件可能取值各一次!!!每个判定真假各一次+每个判定中
的每个条件可能取值各一次!!!
条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条件覆盖的差别
是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。判定中每个条件所有可能,将其组合在一起。
b. 基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次。走完所有路径(是最强覆盖!!!!)
注意:满足条件覆盖不一定满足判定覆盖!满足判定覆盖不一定满足条件覆盖!
2. 黑盒测试:等价类划分法,边界值分析法,判定表方法,正交试验法,错误推测法
性能测试:压力测试、负载测试都属于性能测试。
3. 压力测试:
不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。
4. 负载测试:
确定在各种工作负载(即人员访问量等)下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间,在可以接受范围内.J2EE技术实现的系统在性能方面更是需要照顾的,一般原则是3秒以下接受,3-5秒可以接受,5秒以上就影响易用性了.
软件压力测试和软件负载测试的区别是在于他们不同的测试目的
软件压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的页面3秒钟内响应;即在性能可以接受的前提下,测试系统可以支持的最大负载。
软件负载测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;
5. GUI测试:
用户界面测试的重点
正确性
与功能测试一样,界面的元素应符合用户需求
易用性
用户操纵界面来完成任务的难易程度
视觉效果
布局、颜色等美学效果
根据图形用户界面设计的规范进行测试
6. 测试所主要关注的问题:
易用性
规范性:测试各个GUI元素
帮助设施
合理性
美观及协调性
快捷方式的组合
正确性
Push:推;我们主动发
Pull:拉;别人主动来call
A push到 B: A发给B
A pull从B: A主动调用B的方法(也可以说是B暴露出来的一些api)
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
实际工作中:
在我们测试的过程中是这样的,不是说特定的使用哪一个方式,可以说都有用到,是这样的,首先一般情况下是我们先执行测试用例进行动态测试,一旦发现问题,但又不太确定我们这是测试用例写的不够规范还是dev程序中的错误,所以此时在我们不能肯定的时候就会去排查产品的code,我觉得这个过程使用了静态测试。。。。