zoukankan      html  css  js  c++  java
  • 服务端测试和客户端测试区别

    1.客户端测试

    用户可以看到的,使用界面的,web端,pc端,app,一般是在用户的机器上去做

    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框架。

    对于这种服务端后台的测试人员,除了需要掌握上述的自动化测试技术之外,还有一个沟通、协调的工作,因为后台的接口一般是同时提供给iOS/Android/WEB三个端,所以需要跟三端的测试人员协调测试进度、测试环境等事项。

    如果遇到后端服务大的重构、或者是第一次上线预计有大流量的,那还需要对后端服务做一个性能测试,用JMeter/Grinder等工具编写脚本并进行压测,看看后端服务能不能撑住大流量。有些版本性能风险小的,不必要每次都做性能测试,可以根据实际版本的情况具体分析。

    (3)对更后端的数据库、缓存系统、中间件、文件系统等进行测试。
    这种就类似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务当然也需要测试人员来保证质量。

    这类服务一般都是通过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用,所以,第一个要做的也就是接口测试,也就是用Postman等工具做手工测试、用TestNG+HttpClient或者Python的Nose框架做自动化测试。

    不过,对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的,所以,除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现,需要了解到模块的级别,对于系统框架图、时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一起讨论如何实现用例。

    如果这种基础服务用了某一个开源软件,那通常也需要测试人员能关注社区的进展,并把我们发现的Bug及解决方案等推到社区,为社区做贡献。

    除了接口测试之外,在我们公司,异常测试、稳定性测试、性能测试也是服务端测试必备的测试类型。
    异常测试会模拟各种异常情况,比如硬件异常-机器挂掉的情况下能否启动备机、硬盘挂掉的情况下是否会丢失数据;网络异常-网络忽然断掉、或者网络流量变小的情况;系统异常-操作系统忽然挂掉的情况。这些极端的情况出现的时候,我们需要验证数据有没有丢、能不能尽快启动备机对外提供服务、系统状态有没有异常等。我们会采用各种方式或者工具来模拟这些异常,比如用TrafficControl工具来控制网络流量。

    稳定性测试,就是模拟系统在7*24的运行下会不会出问题,一般会用接口测试或者性能测试用例不断地跑,在运行期间,我们会模拟各种情况,比如说负载的变化、系统的各种干扰等。可以用ChaosMonkey等工具来进行这类测试。

    性能测试,其实细分起来会有各种类型,比如负载测试、压力测试、配置测试、甚至还有线上压测、容量规划等。最常规的性能测试,一般是先规定一个系统需要承受的压力,比如说,某一个系统,1个小时之内会有1W单的单子,那基于这个需求我们分析服务器后端需要承受的压力,分析出来以后,就写性能测试脚本,然后逐渐增加压测的力度,直到超过这个预定的压力。通常在这个测试过程中会发现各种问题,比如数据库索引没有建、线程池太小、系统异常等。需要解决了之后再加大压力测试。也是用Grinder/JMeter等工具来进行性能测试,不过难的不是这些工具的使用,而是发现问题以后的定位。

    对于这种后端服务的测试人员来说,技术上的要求是挺高的,需要有较好的编程能力,需要对数据库、操作系统等机制有很好的了解才行。
     
    (4)详解
     

    转自链接:https://www.zhihu.com/question/29164912/answer/110735124

  • 相关阅读:
    Java习惯用法总结
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
    Java 20年:转角遇到Go
    史上最全最强SpringMVC详细示例实战教程
    即将改变软件开发的5个Java9新特性
    <一>c++的编程思路
    人生不可破的28个天规
    定时任务
    redis
    mycat分库分表
  • 原文地址:https://www.cnblogs.com/dashu123/p/11766779.html
Copyright © 2011-2022 走看看