软件测试概念

软件测试环境

测试环境 = 软件 + 硬件 + 网络
硬件包括:PC机、笔记本、服务器、各种终端等
软件包括:操作系统、兼容性

搭建测试环境
1、真实:尽量模拟用户的真实使用环境。项目软件只针对某一群体的用户,测试环境较单一;产品软件针对的是广大群众,测试环境较复杂,要多方面考虑。
2、干净:尽量不要安装与被测软件无关的软件
3、无毒
4、独立:测试环境与开发环境相互独立,避免造成干扰。

软件测试的原则

1、二八原则:80%的bug在分析、设计与评审阶段就能被指正发现与修正,16%的缺陷在系统的软件测试中发现,4%是用户长期使用过程中被发现。
有80%的缺陷是由于20%的模块造成的,应花费更多时间及测试在缺陷较多的模块上。
2、测试的标准建立在用户需求之上。
3、尽可能早的开展测试,越早发现错误,修改的代价就越小。
4、发现错误较多的程序段,应进行更深入的测试。
5、项目一旦启动,软件测试就开始。
6、对错误结果要进行一个确认的过程(测试的详细数据,截图,前置条件等)。
7、妥善保管测试过程中的所有文档。

软件测试的分类

  • 按是否执行被测软件分
    静态测试:不运行软件,测试包括代码检查、静态结构分析、代码质量度量等,主要是对软件需求说明书、设计说明书、软件源代码进行检查与分析。
    动态测试:通过运行被测程序,检查运行结果与预期结果的差异,分析原因。
  • 按测试技术分
    黑盒测试:不考虑程序内部结构和内部特性的情况下,通过软件的外部表现来发现其缺陷和错误。
    白盒测试:检测程序中的每条通路是否都能按照预定要求正确工作。
  • 按测试手段分
    手动测试和自动化测试
  • 按测试阶段分
    单元测试:通过模块测试使代码达到设计要求,主要目的是针对编码过程中可能出现的各种错误。
    集成测试:将经过单元测试的模块逐步组装成完整的程序。主要目的是检查各单元与其他程序部分之间的接口时候存在问题,各模块功能之间是否有影响。
    系统测试:系统测试是针对整个产品系统进行的测试。将已经确认的软件、计算机硬件、外设、网络等其他元素结合再一起进行测试。目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或者与之矛盾的地方,进行修正。
    验收测试:验收测试是在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的最后一步测试过程。通常由业务专家或用户进行。

软件生命周期

计划 -> 需求分析 -> 设计 -> 编码 -> 测试 -> 运行/维护

软件测试流程

回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
1、需求评审(需求可执行性、异常情况处理)
2、测试计划(测试目的、测试背景、测试范围、测试人员分配、测试开始结束时间、测试策略、测试进度安排等)
3、编写测试用例(各种方法)
4、用例评审(review)
5、提测
6、codediff(查找代码改动,明显的测试代码,比如写固定值、return等)
7、执行测试用例
8、提bug
9、追踪bug进行回归测试
10、验收测试
11、发布、上线。
12、最后可以进行bug的总结。

软件开发模型

  • 瀑布模型:软件开发的各项活动严格按照线性方式进行。已不再适合现代的软件开发模式。(问题发现较晚,增加开发风险)
  • 快速原型模型:建造一个快速原型,实现客户与系统的交互,客户对原型进行评价,进一步细化软件的需求,减少了需求不明确带来的开发风险。
  • 增量模型(演化模型):整个产品被分解成若干个构件,开发人员逐个交付满足需求的一个子集的可运行产品。好处是可以较好的适应变化,客户可以不断的看到所开发的软件,降低开发风险。缺陷是新加入的构件必须不破坏已构好的系统部分;容易退化成边做边改模型,使软件过程的控制失去整体性。
  • 螺旋模型:制定计划、风险分析、实施工程、客户评估。优点是大型软件开发项目由较好的风险控制。缺点是需要风险评估的经验;周期较长。

软件测试模型

  • V模型
    反映了测试与开发阶段之间一一对应的关系,测试在开发之后,出错后回归测试量大。
    需求分析------验收测试
    概要设计------系统测试
    详细设计------集成测试
    编码------------单元测试
  • W模型
    测试伴随整个开发周期,测试与开发同步进行,有利于尽早发现问题。
    在用户需求阶段做验收测试设计,需求分析与系统设计阶段做系统测试设计,概要设计阶段做集成测试设计,详细设计阶段做单元测试设计,编码阶段做单元测试,集成阶段做集成测试,实施阶段做系统测试,交付阶段做验收测试。

测试工具

接口功能测试工具:postman、httprequester、jemter。
功能自动化工具:qtp、robot
代码管理工具:git、svn

性能测试

1、什么是性能测试
指被测系统在一定的负载下运行,监控系统的各项指标(响应时间、cpu、内存等)是否符合需求。
2、http协议(http和https协议、get/post、怎么组成、状态码)
3、TCP三次握手、四次挥手
4、进程、线程区别联系
5、内存泄漏、内存溢出
6、死锁

自动化测试

1、自动化测试脚本的应用场景
2、自动化框架的搭建,包含哪些模块(接口自动化、功能自动化)
3、怎么设计测试用例,注意哪些点
4、怎么断言

算法

1、排序算法:
冒泡排序
快排
查找算法
二分查找
队列、栈、堆实现

linux

数据库

APP网络测试

APP的使用场景多变,如进地铁、进电梯等都会影响手机网络信号。如果没有对网络异常进行兼容处理,很可能会遇到闪退、ANR等问题。

  • 网络测试的要点:
    a、网络功能测试:网络制式测试;WIFI/4G/3G/2G;高延时;高丢包;假热点;无网
    b、无网测试:各个功能是否收到影响(会不会出现闪退、ANR的问题)
    c、网络切换测试(android可以监听系统广播):WIFI->4G/3G/2G;WIFI->无网;4G/3G/2G->WIFI;4G/3G/2G->无网;4G->2G
    d、弱网体验测试:响应时间、加载图标、异常反馈(提示文案、显示形式)
    e、异常机制:异常信息、容错机制、超时机制、重连机制

  • 弱网模拟测试(小于3G速率)
    a、弱网测试方法
    1、弱网场景测试(楼道、电梯、大巴等)2、通过软件使用网络代理,模拟不同的网络带宽、延时率、丢包率。
    b、工具
    1)charles弱网模拟。
    2)webdriver开发者工具中的Network可以在No throttling选择模式做网络模拟。
    3)IOS自带的设置–开发者选项–Network Link Conditioner可以选择进行配置。
    4)fiddler,在fiddlerScript中修改m_SimulateModem为true;修改

 if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }
 修改为如下值:
static function randInt(min, max) {
  return Math.round(Math.random()*(max-min)+min);
  }
  if (m_SimulateModem) {
  // Delay sends by 300ms per KB uploaded.
  oSession["request-trickle-delay"] = ""+randInt(1,2000);
  // Delay receives by 150ms per KB downloaded.
  oSession["response-trickle-delay"] = ""+randInt(1,2000);
  }
  • 限速的原理
    通过延迟发送数据或接收数据的时间来限制下载速度和上传速度。
    2G一般上行/下行速率约为:2.7、9.6kbs,模拟延迟时间设置为2962ms,833ms。
    3G一般上行/下行速率约为:384、2560kbs,模拟延迟时间设置为2.6ms,0.39ms。

常见题目

1、一台客户端由三百个客户与300个客户端有三百个客户对服务器施压,有什么区别?

1个客户端300个客户,会占用客户机更多的资源;线程之间可能发生干扰而产生异常;需要占更大的带宽;可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制;不用考虑分布式管理的问题。 用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户;同时还需要给予相应的权限配置和防火墙设置。

2、软件的安全性应从哪几个方面去测试?

包括程序、数据库安全测试。
1)明确不同用户权限、系统中会不会出现用户冲突、是否因为用户的权限改变而造成混乱
2)登录密码是否可见、可复制等。
3)用户退出之后是否删除了所有标记,是否可通过后退键重新进入系统。
4)数据加密、数据库的完整性、数据库备份和恢复能力。

3、什么是α测试、β测试?

α测试是由用户在开发环境下进行的测试,也可以是员工在模拟实际操作环境下进行的受控
测试,阿尔法测试不能由程序员或测试员完成。
β测试由软件的一个或多个用户在实际使用环境下进行的测试,开发者通常不再测试现场。

4、web页面出现空白页怎么定位问题
a.转包
b.看服务日志
c.用接口实际访问模拟请求
d.mock数据

5、web页面响应过慢怎么定位问题

测试人员在公司中的角色定位

1、探路人
收集整理可能会出现危险的情况,收集整理报告信息,不是决策者
2、迅速找出重要的程序问题
测试人员需要非常了解产品,首先测变更的部分和核心的功能
3、follow开发
4、多提问
5、测试人员的关注点只能在关注产品缺陷上,而不是证明产品正常。
6、不会发现所有的问题
测试人员的任务是发现并报告重要的产品缺陷,但不会发现所有的产品缺陷。
测试人员提供关于产品质量的信息,不能保证产品质量。
7、测试人员不该独立拥有控制产品发布的权利
测试只是产品质量的测试者和相关信息的提供者,而不能决定产品发布。
8、测试人员只是信息提供者而不是批评者

你可能感兴趣的:(软件测试概念)