1.客户端测试前端
用户能够看到的,使用界面的,web端,pc端,app,通常是在用户的机器上去作web
2.服务端测试数据库
服务端测试有两种:一种是直接对WEB或者APP的服务端进行测试;另外一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。编程
(1)应用场景后端
这里以银行转帐为例。缓存
用户A经过手机银行往用户B帐户转帐。
那么客户端这边在输入金额这一块确定是须要作限制的,好比正数,小数点保留两位等。
可是服务端可能并无作限制。
因此用户能够绕开客户端界面,直接发送转帐协议,把其中的金额改为负数,这就致使用户A的金额不减反增。服务器
(2)直接对WEB或者APP的服务端进行测试网络
通常来讲,这种服务端的开发人员就是WEB/APP产品团队的开发人员,固然,测试人员跟WEB/APP的前端测试人员也是一个团队的。这种服务端就是为WEB/APP端提供一些后台的接口,好比说,用户我的信息、交易记录的读取和存储等,通常都是用HTTP接口的方式提供。这种后台的测试从流程上来讲是跟随着WEB/APP产品的发布节奏来的,在后端开发完成接口之后,测试人员就直接用TestNG+HttpClient写接口测试用例、或者用Postman等工具手工测试。若是项目紧张,通常会先用Postman等工具先手工测试,等版本发布完之后,再用TestNG+HttpClient把自动化用例补上去,或者用Python的Nose框架。app
对于这种服务端后台的测试人员,除了须要掌握上述的自动化测试技术以外,还有一个沟通、协调的工做,由于后台的接口通常是同时提供给iOS/Android/WEB三个端,因此须要跟三端的测试人员协调测试进度、测试环境等事项。框架
若是遇到后端服务大的重构、或者是第一次上线预计有大流量的,那还须要对后端服务作一个性能测试,用JMeter/Grinder等工具编写脚本并进行压测,看看后端服务能不能撑住大流量。有些版本性能风险小的,没必要要每次都作性能测试,能够根据实际版本的状况具体分析。
(3)对更后端的数据库、缓存系统、中间件、文件系统等进行测试。
这种就相似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务固然也须要测试人员来保证质量。
这类服务通常都是经过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用,因此,第一个要作的也就是接口测试,也就是用Postman等工具作手工测试、用TestNG+HttpClient或者Python的Nose框架作自动化测试。
不过,对于这类后端服务来讲,接口只是暴露给外用的部分,内部逻辑一般是很是复杂的,因此,除了针对接口作测试以外,测试人员还须要细致地了解这些服务端产品的技术框架及技术实现,须要了解到模块的级别,对于系统框架图、时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一块儿讨论如何实现用例。
若是这种基础服务用了某一个开源软件,那一般也须要测试人员能关注社区的进展,并把咱们发现的Bug及解决方案等推到社区,为社区作贡献。
除了接口测试以外,在咱们公司,异常测试、稳定性测试、性能测试也是服务端测试必备的测试类型。
异常测试会模拟各类异常状况,好比硬件异常-机器挂掉的状况下可否启动备机、硬盘挂掉的状况下是否会丢失数据;网络异常-网络突然断掉、或者网络流量变小的状况;系统异常-操做系统突然挂掉的状况。这些极端的状况出现的时候,咱们须要验证数据有没有丢、能不能尽快启动备机对外提供服务、系统状态有没有异常等。咱们会采用各类方式或者工具来模拟这些异常,好比用TrafficControl工具来控制网络流量。
稳定性测试,就是模拟系统在7*24的运行下会不会出问题,通常会用接口测试或者性能测试用例不断地跑,在运行期间,咱们会模拟各类状况,好比说负载的变化、系统的各类干扰等。能够用ChaosMonkey等工具来进行这类测试。
性能测试,其实细分起来会有各类类型,好比负载测试、压力测试、配置测试、甚至还有线上压测、容量规划等。最常规的性能测试,通常是先规定一个系统须要承受的压力,好比说,某一个系统,1个小时以内会有1W单的单子,那基于这个需求咱们分析服务器后端须要承受的压力,分析出来之后,就写性能测试脚本,而后逐渐增长压测的力度,直到超过这个预约的压力。一般在这个测试过程当中会发现各类问题,好比数据库索引没有建、线程池过小、系统异常等。须要解决了以后再加大压力测试。也是用Grinder/JMeter等工具来进行性能测试,不过难的不是这些工具的使用,而是发现问题之后的定位。
对于这种后端服务的测试人员来讲,技术上的要求是挺高的,须要有较好的编程能力,须要对数据库、操做系统等机制有很好的了解才行。