admin 管理员组

文章数量: 1184232

测试

  • `---------------第一篇章---------------`
  • 0 测试工具
    • 0.1 ADB
      • ADB是什么
      • 常用命令
  • 1. 测试案例
    • 1.1 编写软件测试用例步骤
      • 1)==功能测试层面==
      • 2)==安全测试==
      • 3)==性能测试==
      • 4)==兼容性测试==
      • 5)界面、易用性、异常测试
    • 1.2 登入功能 测试案例
      • 1)分析
      • 2)功能测试用例(显性)
      • 3)功能测试用例 隐形
      • 4)安全测试用例
      • 补充SQL注入
      • 5)性能测试用例
      • 6)兼容性测试用例
    • 1.3 微信红包测试
    • 1.4 发朋友圈怎么测试,测试重点关注什么?
    • 1.5 一个输入月份的框,测试点有哪些
    • 1.6 搜索框设计
    • 1.7 一杯水怎么测
    • 1.8 图片上传怎么测
    • 1.9 充值功能怎么测试
    • 1.9 注册功能怎么测试
  • 2. 开放问题
    • 2.1 为什么投测开不投开发
    • 2.2 你对测开的理解
    • 2.3 有开发对测试的优势
  • `---------------第二篇章---------------`
  • 3. 测试理论
    • 3.1 软件、bug、产品的生命周期
    • 3.2 测试报告要点
    • 3.3 有哪些测试工具
    • 3.4 测开的工作日常
      • 流程
      • 线下测试
      • 探索性测试
      • 线上测试
    • 3.5 Bug专项
      • 开发经理不认为这是一个bug?
      • 测试出来bug怎么办
      • 判断bug是前or后端
      • bug敏感程度如何
        • 影响对Bug敏感程度的因素
        • 提高对Bug敏感程度的方法和实践
        • 具体技术和工具
    • 3.6 抓包
      • 怎么做-fiddler
      • 作用-分析是前后端那里的问题
      • 抓包原理
    • 3.7 APP出现崩溃怎么抓日志
    • 3.8 web测试和app测试的区别
  • 4. 测试方法
    • 4.1 黑盒测试
      • 定义&优缺点
      • 黑盒测试方法
    • 4.2 白盒测试
      • 定义&优缺点
      • 白盒测试方法
    • 4.3 其它测试方法
    • 4.3 接口测试
      • 测试关键点
      • 具体方法
      • 工具postman、SoapUI、Swagger
      • get post请求方式与区别
      • 1. Nginx 和 Apache 对比
      • 2. API测试中的常用协议
      • 3. API测试面临的BUG
      • 常用的HTTP方法GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
      • 接口幂等性
    • 4.3 自动化测试
      • 场景
      • 自动化测试方法
      • 工具-Postman
        • SOAP(RPC)
      • 工具-jmeter
        • ==1. **性能测试-聚合报告查看**==
      • 2. ==jmeter之压测Mysql数据库==
    • 4.4 软件测试阶段分类-单元、集成、系统、验收
      • pytest单元测试脚本
        • unittest模块\pytest框架
        • 试驱动开发(TDD)
      • 冒烟测试
      • 回归测试
  • `---------------第三篇章---------------`
  • 游戏测试
    • 4.1 测试案例
      • 0)测青鸟
      • 1)游戏上线一个角色,如何测试-卡夫卡
      • 2) 王者荣耀背包测试用例
      • 3)排位增加一个段位的测试点
      • 4)凌晨四点,崩铁游戏上线一个新的任务,通同时删除一个旧的任务你会如何测试
      • 5)王者荣耀中,差不多有几个亿的用户,每个赛季的top100名单是如何获取的
      • 6)测试一个rpg游戏的移动系统,这边用的崩铁举例子
      • 7)匹配系统和战斗体验测试
      • 8)测试任务完成状态
    • 4.2 游戏类型介绍&缩写
    • 4.3 列举玩过的三款游戏
      • 1. 王者荣耀-经历&角色&优缺点
      • 2. QQ炫舞的社区- 经历&副本
      • 4. 角色扮演游戏-最终幻想10
      • 5 .崩铁介绍-回合制游戏
      • 1)战斗
      • 2)崩环介绍
      • 3)氪金池&抽奖卷
      • 4)角色属性
        • 战斗属性和命途
        • 队伍配置
        • 常用角色
      • 5)战斗属性
      • 6)养成系统-行迹、遗器、光锥
      • 6) 游戏是赚取里程
      • 7)历程获取途径-主线任务、支线任务(完成后的隐藏活动)、每日任务、开宝箱、消耗体力
      • 总结
        • 凝滞虚影任务
        • 支线任务
        • 空间站黑塔-模拟宇宙
      • 8)崩铁世界全攻略
      • 缺点
      • 优点
    • 4.3 软件测试和游戏测试的区别
    • 4.4 开服测试
    • 4.5 游戏测试常见bug
    • 4.6 外挂
    • 4.7 游戏自动化测试
    • 4.8 详细描述抽奖类功能关于概率方面的测试方法
    • 4.9 游戏测试要点
    • 4.10 GM指令
      • 功能
      • 常用命令
    • 4.11 配置表
      • 重要性
      • 检查方法
    • 4.12 测试角度:游戏需要改进的地方
    • 4.13 假如明天崩铁更新,今天发现有个bug,需要动底层代码,然后底层代码一天解决不了,怎么办
    • 4.14 TCP和udp在游戏中的使用

---------------第一篇章---------------

0 测试工具

0.1 ADB

ADB是什么

  1. adb的全称为Android Debug Bridge。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具,默认端口为5037
  2. 借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作

常用命令

启动 adb server 命令:
adb start-server

停止 adb server 命令:
adb kill-server

查看 adb 版本命令:
adb version
示例输出:
Android Debug Bridge version 1.0.41

指定 adb server 的网络端口
adb -P <port> start-server

查询已连接设备/模拟器:
adb devices
输出示例:
List of devices attached
APH7N19529019277        device
输出格式为 [serialNumber] [state],serialNumber 即SN,state 有如下几种:
offline` —— 表示设备未连接成功或无响应。
device` —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
no device` —— 没有设备/模拟器连接。

没有设备/模拟器连接成功
List of devices attached

查看应用列表
adb shell pm list packages

查看系统应用:
adb shell pm list packages -s


查看第三方应用:
adb shell pm list packages -3

包名包含某字符串的应用:
adb shell pm list packages jingdong




1. 测试案例

1.1 编写软件测试用例步骤

选择测试工具(excel)–确定测试场景(覆盖各种场景)–编写测试用例(包括测试用例名称、测试描述、预期结果、测试数据、步骤)–确认测试用例–组织测试用例

1)功能测试层面

  1. 等价类划分法:把输入数据分成有效和无效的等价类,从每个等价类中选取代表性的值作为测试数据
  2. 边界值法:针对输入或输出范围的边界情况设计测试用例,因为边界上更容易出现错误
  • 这是两种常见的黑盒测试用例设计方法。
  • 等价类分为有效等价类和无效等价类。等价类就是把用户所有可能输入的数据划分成若干子集,然后从每一个子集上选取少量的具有代表性的数据。
    • 有效等价类就是在只范围之内。无效等价类就是空、字母特殊字符,不在范围内等‘
  • 边界值是对等价划分类算法的补充
  1. 场景法/流程分析法:模拟用户操作场景或逻辑路径,测试多个功能组合或交互
  2. 判定表法:用表格的形式展示输入条件和输出结果的组合,适用于条件或结果较多的情况
  3. 因果图法:用图形的方式表示输入条件和输出结果的因果关系,可以生成判定表
  4. 错误推断法:根据经验或直觉推测程序中可能存在的错误,有针对性地编写测试用例
  5. 正交法:基于数学概率学知识,设计最经济的实验路径,覆盖所有的因素和水平组合

2)安全测试

主要考虑以下方面

  1. 信息泄露、破坏信息的完整性
  2. 拒绝服务(合法用户不能够正常访问网络服务)
  3. 非法使用(非授权访问)、窃听
  4. 业务数据流分析
  5. 假冒、旁路控制
  6. 授权侵犯(内部攻击即局域网攻击)
  7. 计算机病毒、恶意软件
  8. 信息安全法律法规不完善

安全测试方法
软件安全测试的内容和方法涵盖了漏洞扫描、渗透测试、安全功能测试、安全性评估、代码审查、安全性规范测试和社会工程学测试等方面

方法定义
漏洞扫描通过使用自动化工具,对软件系统进行扫描,以发现其中存在的漏洞。这些漏洞可能包括代码错误、配置错误、输入验证不足等问题。
渗透测试模拟黑客攻击的方式,对软件系统进行测试,以评估其在实际攻击中的安全性。这种测试方法可以发现系统中存在的弱点和漏洞,并提供相应的修复建议。
安全功能测试身份验证、访问控制、加密等功能,可以通过测试其正确性和有效性。
安全性评估对软件系统的整体安全性进行评估,包括对系统的架构、设计和实现进行审查。通过分析系统的安全策略、安全控制和安全机制,评估其在面对各种威胁和攻击时的可靠性。
代码审查对软件系统的源代码进行审查,以发现其中存在的安全问题。通过对代码的逐行分析和检查,可以发现潜在的漏洞、缺陷和错误,并提供相应的修复建议。
安全性规范测试对软件系统的开发过程和实施过程进行审查,以确保其符合相关的安全标准和规范。例如,对于密码管理、数据隐私、安全配置等方面的测试,可以验证系统是否符合相应的安全要求。
社会工程学测试模拟攻击者利用社会工程学手段对软件系统进行攻击的方式,以评估系统在面对此类攻击时的防御能力。例如,通过发送钓鱼邮件、电话欺诈等方式,测试系统用户的安全意识和行为。

安全测试类型

类型描述
失效的身份验证机制只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie
会话管理劫持检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。
SQL注入当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
XPath注入Path注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容
XSS跨站脚本攻击恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的
CSRF跨站请求伪造击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单)
不安全的直接对象引用在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据
安全配置错误Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。
不安全的加密存储未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储
没有限制URL访问系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)
传输层保护不足在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块)
未验证的重定向(redirectUrl)和转发攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站。
敏感信息泄露许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。
功能级访问控制缺失大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。
使用含有已知漏洞的组件组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重
缓冲区溢出当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
LDAP注入利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。
篡改输入利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。

举例

  1. 如果是Web前端,先检查用户的敏感信息是否加密显示,通过fiddle抓包工具检查用户的敏感信息有没有进行加密传输,再到日志中搜索关键信息,搜索到就泄密,存在安全漏洞
  2. 把发送请求的数据篡改,比如打开fiddle工具,设置过滤器,设置断点把商场的支付订单改成1元,再发送数据,看是否1元支付成功
  3. 用sql语句注入和Xss脚本攻击,把SQL语句或Xss语句编辑成csv文件通过jmeter工具,来调用里面的数据,看其是否将sql注入当作字符处理,检查功能是不是能正常使用,系统是否崩溃,错误弹出框,界面是否变形。
  4. **权限控制(用户的校验)校验用户安全认证信息是否正确,**如没有权限的界面不能进入,不能提供操作入口或不能通过un直接去访问:例如;把所有需要权限的界面,全部复制一份出来然后退出用户再通过un链接去访问功能如果可以访问,就是bug,如有提示登录,属于正常。
  5. 还有登陆用户再退出用户后,点击浏览器的后退不能进入原来的界面

3)性能测试

作用
验证软件在各种情况下的稳定性、可靠性、响应速度和资源利用率等指标,确保软件在面对不同用户数量、不同负载情况以及不同环境下的运行情况良好

测试类型

  1. 负载测试:测试软件在正常负载情况下的性能表现,以确定软件在预期使用情况下的稳定性和可靠性
  2. 压力测试:测试软件在超出正常负载的极端条件下的性能表现,以评估其在极端负载情况下的稳定性和可靠性
  3. 性能测试:测试软件在特定条件下的性能表现,如响应时间、吞吐量和资源利用率等
  4. 可靠性测试:测试软件在长时间运行和各种条件下的稳定性和可靠性,以评估其在实际生产环境中的表现
  5. 容量测试:测试软件在不同负载情况下的容量和极限,以确定其能够支持的最大用户数或数据量

性能指标

  1. 吞吐量是指系统在单位时间内处理的请求数量。较高的吞吐量表示系统能够有效地处理大量的请求,具有良好的性能和可伸缩性。吞吐量通常以每秒请求数(Requests Per Second,RPS)或每分钟请求数(Requests Per Minute,RPM)为单位进行测量。
  2. 并发用户数:并发用户数是指同时连接到系统的用户数量。了解系统能够支持的最大并发用户数是评估系统性能和容量的重要指标。通常,通过逐步增加并发用户数来测试系统的最大并发能力,并观察系统在不同并发用户数下的响应时间和吞吐量
  3. 资源利用率:资源利用率是指系统在运行过程中所使用的各种资源的利用率,如 CPU 利用率、内存利用率、磁盘利用率和网络带宽利用率等。监测资源利用率可以帮助评估系统的性能瓶颈和优化方向,确保系统在高负载情况下仍能有效利用资源。
  4. 错误率:错误率是指系统在处理请求时产生的错误数量与总请求数量的比例。较低的错误率表示系统具有较高的稳定性和可靠性。常见的错误包括服务器错误、超时错误、连接错误等。通过监测错误率可以及早发现潜在问题,并采取相应措施加以修复。
  5. 可伸缩性:可伸缩性是指系统在面对不断增长的负载时能够有效地扩展和适应的能力。评估系统的可伸缩性可以帮助确定系统在不同负载情况下的性能表现和资源需求,并为未来的系统扩展和升级提供指导。

举例:性能拐点:随着并发用户数的增加,tps 出现下降的趋势,此时的用户数就是系统的性能拐点最大容量:CPU 的使用率上限(不能持续 100%,85%-90%)事务失败率<5%,平均响应时间<8s服务器崩溃:事务失败率很高,HTTP 状态码出现很多的 500+的状态码内存泄漏:Java/JVM 内存泄漏,査看 Java 进程的大小,来对比内存的使用,对比内是否被释放

性能测试流程
6. 需求分析:测试目的,设计业务流程。例如,确定要测试的功能模块、关注的响应时间和吞吐量目标、测试的负载模型和用户数量等
7. 制定性能测试计划:需要明确测试的范围、测试的时间表、测试的环境和工具、测试的资源需求、测试的团队成员和责任分配等。同时,还需要定义测试用例和场景,并制定测试执行和分析的流程和标准。
8. 设计性能测试用例和场景:需要根据测试的目标和需求,确定要测试的功能、负载条件和环境,以及如何模拟用户行为和生成负载。通常会使用各种工具和技术来设计和生成性能测试用例和场景,如脚本录制、脚本编写、数据生成等
9. 执行性能测试:需要按照预先设计的性能测试用例和场景,使用性能测试工具对软件系统进行负载测试、压力测试、性能测试等。同时,还需要监控和记录测试过程中的各项性能指标:软件–tps、平均响应时间、事务失败率、工具统计;硬件:CPU使用率,来监控进程内使用率
10. 分析性能测试结果
11. 优化和改进软件性能:涉及代码优化、系统配置调整、资源扩容等方面的工作

性能测试挑战&解决

挑战解决
复杂的系统架构:多层次、分布式、微服务采用模块化和分阶段的性能测试策略:系统进行分层和分模块的测试,逐步测试各个模块的性能和稳定性;利用虚拟化和容器化技术搭建测试环境,以模拟真实的生产环境,并确保测试环境的一致性和可控性
不确定的用户行为:访问模式、请求频率、操作方式等都会影响系统的负载和性能表现用场景化和数据驱动的性能测试方法:通过分析用户的行为模式和数据,设计和模拟真实的用户场景,并结合负载生成工具生成测试数据和模拟用户行为,以模拟真实的用户访问情况,并评估系统在不同负载下的性能表现
资源限制:如服务器、网络带宽、数据库连接池等都是有限过资源管理和调优来解决资源限制的问题:增加服务器配置、优化网络设置、调整数据库连接池参数
数据管理:数据的生成、加载、存储和清理都会影响系统的性能和稳定性采用数据管理和优化的方法来解决大规模数据的挑战。首先,对测试数据进行合理的生成和管理,如使用数据生成工具生成测试数据、使用数据库备份和还原等技术管理测试数据。其次,采用数据清理和优化的方法,定期清理测试数据,优化数据库索引和查询,以提高数据操作的效率和性能。

工具-JMeter(举例)、LoadRunner、Gatling

  1. 配置JMeter测试计划
  • 添加线程组,设置线程数(并发用户数)和循环次数。
  • 添加HTTP请求,配置API的URL和请求参数。
  • 添加监听器,用于收集响应时间、吞吐量等数据。
  1. 运行测试
jmeter -n -t test_plan.jmx -l results.jtl -e -o /path/to/output/folder
  1. 分析结果
  • 打开JMeter生成的HTML报告,查看响应时间、吞吐量等关键指标
  • 使用Grafana和Prometheus监控系统资源利用情况。
    弱网测试
  • 模拟弱网环境:使用网络模拟工具模拟不同类型的网络状况(如3G、4G、5G、Wi-Fi)。
  • 测试响应时间和行为:观察应用在不同网络状况下的响应时间、重试机制和错误处理。
  • 工具:Charles Proxy、Network Link Conditioner(Mac)、Clumsy(Windows)

4)兼容性测试

作用

  • 是指在不同软件、硬件、操作系统、网络环境等多个平台上测试产品的兼容性质量,以确保软件、硬件或产品在各种环境下的正常运行。
  • 主要涉及软件应用程序、网站、操作系统、数据库、浏览器等系统环境的兼容性测试
  • 测试方法:如黑盒测试、白盒测试、自动化测试、手动测试等

如何选择机型

  1. 覆盖率:测试机型应该能够覆盖主要的设备品牌和操作系统版本,以达到较高的测试覆盖率,并最大限度地测试应用程序在不同设备上的性能、稳定性和用户体验。
  2. 设备质量:选择知名品牌、多样化的设备以及最新的设备型号,以确保测试的准确性和实用性。设备质量关系到测试结果的真实性和可靠性,维护设备的难易程度等。
  3. 设备性能:测试机型的硬件性能也应该考虑在内,应该覆盖不同的处理器速度、内存和存储器,并通过合适的测试工具和测试用例来验证应用程序在不同配置设备上的性能表现。
  4. 预算:最后还需要考虑测试预算,选择实现测试目标,但又在预算范围内的测试机型
  • 浏览器:选择需要测试的浏览器及其版本,如Chrome、Firefox、Safari、Edge等
  • 操作系统:选择需要测试的操作系统及其版本,如Windows、macOS、Linux、iOS、Android等。
  • 设备:选择需要测试的设备类型,如桌面、平板、手机等。

适配器测试

  1. 验证应用在不同屏幕尺寸和分辨率下的显示效果和功能表现,确保界面布局和操作体验的一致性。
  2. 在Chrome浏览器中开启响应式设计模式,选择不同的设备模拟。
  3. 测试关键页面和功能,检查布局和交互行为。

5)界面、易用性、异常测试

1.2 登入功能 测试案例

1)分析

  1. 首先应该对“用户名”和“密码”这两个输入项分别进行等价类划分,列出对应的有效等价类和无效等价类。
  2. 对于无效等价类的识别,可以采用错误猜测法(比如,用户名包含特殊字符等)
  3. 然后基于两者可能的组合,设计出第一批测试用例
  4. 等价类划分完后,需要补充“用户名”和“密码”这两个输入项的边界值的测试用例,比如,用户名为空(NULL)、用户名长度刚刚大于允许长度、用户名包含非英文字符串等。

2)功能测试用例(显性)

  1. 输入已注册的用户名和正确的密码,验证是否登陆成功
  2. 输入已注册的用户名和不正确的密码,验证是否登陆失败
  3. 输入未注册的用户名和任意密码,验证是否登陆失败
  4. 用户名和密码两者都为空,验证是否登陆失败
  5. 用户名和密码两者之一为空,验证是否登陆失败
  6. 如果登陆功能启动了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,是否登陆成功
  7. 如果登陆功能启动了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登陆失败

3)功能测试用例 隐形

  • 用户和密码的大小写是否敏感
  • 页面上的密码框是否加密显示
  • 后台系统创建的用户第一次登入成功时,是否提示修改密码
  • 忘记用户名和忘记密码的功能是否可用
  • 前端页面是否根据设计要求限制用户名和密码长度
  • 如果登入功能需要验证码,点击验证码图片是否可以更换验证码,更换后的验证码是否可用
  • 刷心页面是否会刷新新的验证码
  • 如果验证码具有时效性,发扽别验证时效内和失效外的验证码有效性
  • 用户登入成功但会话超时,继续操作是否会重定向到用户登入界面
  • 不同级别的用户,比图管理员用户和普通用户,登入后系统的权限是都有区别
  • 页面默认焦点是否定位日在用户名的输入框中
  • 快捷键Tab和Enter等是否可以正常使用

4)安全测试用例

  1. 否加密传输到服务端,加密存储
  2. 登入成功后生成的cookie。是否是httponly,防止被脚本盗取
  3. 错误登入的次数限制,防止暴力破解
  4. 输入框防SQL注入
  5. 输入框防XSS攻击
  6. 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
  7. 不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面
  8. 密码输入框是否不支持复制和粘贴
  9. 密码输入框内输入的密码是否都可以在页面源码模式下被查看
  10. 同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期,同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性
  11. 登录接口返回的数据是否对用户信息进行加密显
  12. 登录UA获取,确保是用户本人登录

补充SQL注入

  • select * from users where user=‘&username&’ and pass=‘&password&’
  • select * from users where user=‘admin’ and pass=‘1’ or ‘a’=‘a’
  • 分为带内SQL注入:
    • 报错注入:攻击者使用特殊函数对数据库发起攻击,根据报错结果获取有关数据库结构方面的信息。
      
    • 联合注入:攻击者使用UNION SQL运算符将多个SELECT语句合并为一,获取包含所需数据的单个HTTP响应。
  • 推理SQL注入
    • 布尔盲注:攻击者向数据库发送SQL查询,根据页面返回结果(True或False)决定HTTP响应中的内容是要被更改,还是保持不变。
    • 时间盲注:攻击者向数据库发送SQL查询,根据页面响应时间长短判断返回结果(True或False)从而猜解一些未知的字段。
  • 带外SQL注入
    • DNSlog盲注:攻击者利用应用的域名访问功能发起DNS请求,根据DNSlog中记录的盲注结果提取数据。
    • HTTP标头注入:攻击者通过插入额外的HTTP请求头字段,获取真实的HTTP响应,窃取数据库数据。

5)性能测试用例

  1. 单用户登录的响应时间正常网络环境下是否小于 2 秒
  2. 单用户登录时,后台请求数量是否过多
  3. 高并发场景下用户登录的响应时间是否小于 5 秒
  4. 高并发场景下服务端的监控指标是否符合预期
  5. 高集合点并发场景下,是否存在资源死锁和不合理的资源等待
  6. 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏
  7. 防止同一用户恶意并发

6)兼容性测试用例

  1. 不同浏览器下,验证登录页面的显示以及功能正确性
  2. 相同浏览器的不同版本下,验证登录页面的显示以及功能正确性
  3. 不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性
  4. 不同分辨率的界面下,验证登录页面的显示以及功能正确性

1.3 微信红包测试

1)功能测试

单个红包

  • 红包金额为空、0、0.01、200.00、200.01、199.99、200
  • 留言输入数字、字母、汉字、特殊字符、留言长度、留言复制粘贴
  • 表情选择收藏表情、其他表、删除表情、重新选择表情
  • 选择支付方式 零钱、银行卡、添加新卡支付。其中钱数<红包钱数、其中钱数=红包钱数、其中钱数>红包钱数、使用指纹确认付款(正确的、错误的指纹)、使用密码确认付款(正确的、错误的密码)
  • 红包成功发送后 相应支付方式中钱数减少(减少金额与红包金额一致)
  • 接受者能看到红包具体信息,红包金额、留言、表情均能正确显示
  • 红包被拆开后显示已领取,领取者零钱中增加正确金额,再次领取只能查看红包信息,发红包者自己领红包
  • 红包24小时未被领取提示红包被退回,相应支付方式中钱数增加(增加金额与红包金额一致),对方不能领红包

群发红包-普通红包

  • 红包个数 为空、0、001、100、99、101
  • 红包拆开每个金额一样 均为发红包时设置的单个金额对应的钱数
  • 红包被拆时,有相应提示
  • 发红包者自己领红包
  • 红包24小时内未被拆完,剩余钱被退回,相应支付方式中钱数增加

群发红包-拼手气红包

  • 红包每个人拆开金额不同,总金额与发红包设置的总额一致
  • 红包24小时内拆完后显示最佳手气
  • 红包24小时内未被拆完不显示最佳手气

2)兼容性测试

  • 兼容性: 安卓、苹果 不同型号版本手机
  • UI测试: 界面无错别字,风格统一
  • 中断测试: 不同应用之间切换、断网、来电、短信、低电量、手机没电
  • 网络测试: 2g/3g/4g WiFi 移动联通电信 弱网 无网

1.4 发朋友圈怎么测试,测试重点关注什么?

  1. 文本输入:测试输入各种字符,表情,链接等,检查是否可以正常显示和发布
  2. 图片/视频上传:测试上传各种格式,大小,分辨率的图片和视频,检查是否可以正常显示和发布
  3. 定位功能:测试是否可以正确获取和显示信息
  4. 评论和点赞功能:测试用户是否可以对朋友圈进行评论和点赞,是否可以看到其他人的点赞和评论
  5. 删除和编辑功能:测试用户是否可以删除和编辑自己的朋友圈
  6. 隐私设置:测试用户是否可以设置谁可以看自己的朋友圈,是否可以看恶道自己被屏蔽的朋友圈
  7. 通知功能:测试发布朋友圈后,是否可以正确发送通知给好友
  8. 性能测试:测试在网络环境差、设备性能低的情况下,是否可以正常使用发朋友圈的功能
  9. 兼容性测试:测试在不同设备,不同浏览器上,发朋友圈的功能是否正常
  10. 安全性测试,检测是否存在安全漏洞,如私密朋友圈被未授权的人查看

1.5 一个输入月份的框,测试点有哪些

基础

  1. 正常值测试:输入正常的月份值,例如1-12
  2. 边界值测试:输入最大值和最小值,即1和12
  3. 错误值设置:输入非法的月份值,如0,13,-1,100
  4. 非数字测试:输入非数字字符,例如字母、符号等
  5. 空值测试:不输入任何值,直接提交
  6. 数据类型测试:输入浮点数、长整数等看是否可以接受
  7. 输入长度测试:如果有长度限制,可以测试输入超过限制的长度
  8. 用户界面设置:检查输入框的布局、字体、颜色等是否符合规范
  9. 性能测试:快速连续输入看是否会出现卡顿或者崩溃
  10. 兼容性测试:在不同的浏览器,操作系统上测试该输入框的表现

进阶

  • 质疑界面的外观、调色板和对比度(这与相关应用风格一致么?)
  • 文本框太小了,建议加长以便显示更长的输入字符串
  • 这个应用能否在同一台服务器上运行多个实例,多个用户同时使用是否会有问题。
  • 是否会根据用户的输入自动匹配内容?
  • 建议使用真实的数据,如从词典或书中选择输入内容。
  • 提出疑问:“输入的数据是否会被保存”,输入字符串可能包含地址或其他身份信息。
  • 输入HTML和JavaScrip,看是否会破坏页面渲染。
  • 尝试复制/粘贴字符串。
  • 提出疑问:“用户怎么找到该页面?”
  • 提出疑问:“有快捷键的设置么?比如输完字符后敲入回车键而不是点击提交按钮”

高级

  • 意识到计算会通过URL-encodedHTTP GET请求传递到服务器,字符串可能会在网络传输时被截断,因此,无法保证支持多长的URL。
  • 建议将此功能参数化,为什么只对字母a计算呢?
  • 考虑计算其它语言中的a(α,Alpha)。
  • 考虑到该应用是否应该国际化。
  • 考虑到输入法全角输入和半角输入是否相同。
  • 考虑编写脚本或者手工采样来探知字符串长度的上限,然后确保在此区间内功能正常。
  • 考虑背后的实现和代码。也许已经有一个计数器遍历该字符串。
  • 提出疑问:“HTTP POST方法和参数会被黑掉码?也许有安全漏洞?”
  • 用脚本创建各种有趣的排列组合和字符串特性,如长度、a的个数等,自动生成测试输入和验证。

1.6 搜索框设计

  1. 搜索按钮功能是否可以实现,验证搜索框的功是否与需求一致
  2. 搜索框内的默认内容是否与设置一致
  3. 点搜索之后,原来的内容是否清空
  4. 设置边界值测试,达到界限长度的值搜索,null搜索,异常值搜索(空值、符号组合、SQL注入)
  5. 反复输相同的数据是否会报错
  6. 设置正常有效值输入,检查搜索结果,搜索结果的完整性、条数、文字折行显示、确定页面布局美观清晰,排列合情合理
  7. 输入不存在与之匹配的条件,能否搜索出信息或者给予提示信息
  8. 注意在光标停留的地方输入信息时,光标坏人所输入信息是否会跳转到别的地方
  9. 是否有忽略空格的功能,前置空格和后置空格
  10. 查看是否可以复制粘贴
  11. 多个问题组合搜索
  12. 搜索历史

1.7 一杯水怎么测

  1. 功能测试:水杯是否可以正常装水、正常喝水、是否有盖子、是否有保温功能、是否会漏水
  2. 界面测试:外观是否完整舒适、颜色搭配是否舒适、被子外观大小是否适中,是否有图案,是否容易受损
  3. 易用性测试: 喝水是否方便等
  4. 性能测试:水装满是否会露出来,水杯最大使用次数,水杯的保温性能是否达到需求,耐热性是否满足需求, 掉落能否使用,长时间放置是否会泄漏
  5. 兼容性测试:是否可以装其它液体,果汁、汽油、酒精等
  6. 可移植性测试:关注水杯放置环境:常温环境是否正常,零下环境是否正常,放在高于正常温度的环境中是否正常
  7. 安全性测试:异常情况下是否释放有毒物质;水被装满热水是否会烫手,水杯放在零下环境中,是否会产生有毒物质,高温环境是否产生有毒物质

1.8 图片上传怎么测

  1. 功能测试:验证是否可以成功上传图片;验证不同类型的图片是否可以上传;验证不同大小的图片;多文件上传;图片名称是否允许特殊字符;验证系统能否识别伪装成图片的文件;检查上传之后图片的质量是否有变
  2. 安全测试:验证是否存在文件路径遍历漏洞(上传敏感文件);验证能都上传包含恶意代码的文件(比如嵌入脚本的文件);验证用户是否有权限上传文件
  3. 性能测试:并发上传(模拟多个用户同时上传);验证图片上传速度;
  4. 用户体验测试:验证是否上传进度(大文件);验证错误提示信息是否正确
  5. 兼容性测试:验证再不同设备下上传文件

1.9 充值功能怎么测试

  1. 充值的主体功能测试,可以采用等价类,边界值发,判定表,流程分析,状态迁移、错误推理、异常处理等来测试
  • 用边界值方法测试充值限定的额度
  • 用特殊符号在充值输入框输入(为空),具体看搜索框
  • 在搜索框中输入金额,退出再返回是否还存在
  • 多次往返充值界面,是否可以正常充值
  • 选择多个支付方式是否可以支付成功,充值成功、失败的提示
  1. 测试充值的性能,可以使用jmeter模拟大量用户同时充值,查看是否充值成功
  2. 充值安全性
  3. 跨站攻击
  4. 异常情况:网络异常、中断
  5. 界面

1.9 注册功能怎么测试

  1. 功能测试
  • 输入框功能测,根据边界值法、等价划分等黑盒方法,设置不同的输入案例
    • 有效值输入,处于设定的有效字符和字母,看能否设置成功
    • 设置边界条件,比如密码的字符比设定个数大1,小1,设置为空等
    • 特殊字符输入,比如null,希腊符号,SQL注入等
  • 查看输入异常情况下界面是否有提示
  • 名称是否可重复
  • 手机号码能否正确收到验证消息
  • 输入一半,界面退出再返回,会怎么样
  • 已经注册成功的账户再次注册是否可以
  1. 安全测试
  • 输入的账号密码是否加密传输、存储,web端打开开发者模式账号密码是否泄漏
  • 是否防止SQL注入
  • 登入成功后生成的cookie。是否是httponly,防止被脚本盗取
  • 输入框防XSS攻击
  1. 性能测试
  • 换用不同的网络,比如弱网条件下效果怎么样,2G、3G怎么样
  • 同时开启大量的窗口或者请求查看其后台的数据指标,比如QPS,TPS
  • 查看在注册时候,手机后台的耗电量,cPU利用率等
  1. 兼容性测试
  • web端换用不同的浏览器,不同的操作系统查看其兼容性
  • 手机换用ios、adore等测试
  1. UI界面测试

2. 开放问题

2.1 为什么投测开不投开发

答题公式:就业前景+个人情况分析+求职决策

  1. 【就业前景】我通过技术博客,B站等渠道了解到测开这个岗位就业需求量是比较大,有需要开发的地方就需要测试,就业前景也是比较好的,特别是大厂重视质量,一个线上问题就可能导致几千万的损失,作为测开的角色可以制定一系列的测试手段来保障好质量,避免线上问题发生,为公司减小损失。
  2. 【个人情况分析】而我自己并不是一个追求技术深度的人,但自己也想从事技术方面的工作,在过去的学习当中,我也有基本的代码能力,可以帮助我在后续保障质量的同时,开发工具提升效率,
  3. 【求职决策】综上这样的工作比较适合我,所以我选择做测开

2.2 你对测开的理解

  1. 【岗位职责】测开(测试开发)是一个融合了软件测试和软件开发技能的岗位,旨在提高软件产品的质量和测试效率。
  2. 【技能要求】测开工程师不仅需要编写测试用例和执行测试,还需要开发工具、自动化测试脚本和测试框架、性能测试等等,测开的技术栈和后端开发相似,需要掌握编程语言、Linux、数据库以及软件测试的理论等
  3. 【岗位价值】测开岗虽然有一定的成本属性,但通过测开工程师通过建设CI/CD流水线可以缩短产品交付周期,保障代码质量,减少线上问题发生,让产品从可用变得好用
  4. 【未来发展趋势】大模型的出现正在重构整个软件测试行业,相信在大模型的加持下,软件测试会更智能,目前互联网业务系统架构也越来越复杂,做测试也更有挑战性

2.3 有开发对测试的优势

  1. 只有深入理解被测试软件的架构,才能设计出有的放矢的测试用例集,去发现系统边界以及系统集成上的潜在缺陷。作为测试工程师,切忌把整个被测系统看作一个大黑盒,必须对内部的架构有清楚的认识,比如,数据库连接方式、数据库的读写分离、消息中间件 Kafka的配置、缓存系统的层级分布、第三方系统的集成等。
  2. 须深入理解被测软件的设计与实现细节,深入理解软件内部的处理逻辑。单单根据测试需求点设计的测试用例,只能覆盖“表面”的一层,往往会覆盖不到内部的处理流程、分支处理,而没有覆盖到的部分就可能出现测试遗漏。在具体实践中,测试人员可以通过代码覆盖率指标找出可能的测试遗漏点。同时,切忌以开发代码的实现为依据设计测试用例。因为开发代码实现的错误会导致测试用例也出错,所以应该根据原始需求设计测试用例。
  3. 需要引入需求覆盖率和代码覆盖率来衡量测试执行的完备性,并以此为依据来找出遗漏的测试点

---------------第二篇章---------------

3. 测试理论

3.1 软件、bug、产品的生命周期

  • 软件的生命周期:计划阶段——>需求分析——>设计阶段——>编码——>测试——>运行和维护
  • 产品的生命周期:导入期——>成长期——>成熟期——>衰退期
  • bug的生命周期:发现Bug—>提交Bug—>指派bug—>研发确认bug—>研发修复bug—>回归验证bug—>关闭bug

3.2 测试报告要点

  • 测试背景:项目背景和测试环境,什么架构上,用了什么类别的测试,依据什么文档
  • 进度执行情况:人员安排和每个模块的测试时间和版本信息
  • 用例执行情况:用例数分布、执行率,通过率
  • 缺陷统计情况:缺陷数量统计、缺陷重要级别统计、缺陷在不同版本的数量和重要级别;缺陷总数和修复数
  • 测试结论:此次测试通过与否
  • 测试建议:通过此次测试之后对测试有何建议

3.3 有哪些测试工具

  1. Postman:一个流行的API开发工具,用于构建请求、测试API并查看响应。
  2. Swagger:提供API文档生成、测试和协作的平台。
  3. JMeter:一个用于性能测试的开源工具,也可以用来测试API。
  4. SoapUI:专注于SOAP和REST API测试的工具,提供功能强大的测试用例管理。
  5. Katalon Studio:一个全面的API、Web、桌面和移动应用测试解决方案。
  6. Curl:一个命令行工具,用于发送HTTP请求和测试API。

3.4 测开的工作日常

流程

  1. 首先是参与需求评审,与rd,pm对齐需求,确保对需求理解的一致性
    • 核心业务是否需要接口测试、新老数据兼容问题、测试场景的数据构造以及测试所需的工具等
    • 此阶段是质量的基石,通过测试左移,尽早发现需求设计缺陷、技术方案风险、关联方依赖影响等方面,了解测试关注点,需求可测试性以及预留排期等问题
    • 举例:接口测试:权益核销&&退款,接口都需要对前端传入的参数进行校验;新老数据兼容,比如说小程序的发版,一般会滞后于接口发布,一定要测试旧版本的兼容性
  2. 针对需求稳定和排期制定测试计划,比如谁来测,怎么测,用什么测
  3. 根据需求文档编写测试用例,并进行用例评审
    • 测试用例设计:需要从整体入手,而不仅仅局限于待测功能本身的业务逻辑。好的测试用例,是质量保证的核心:整体完备性;等价类划分的准确性;等价类集合的完备性
    • 测试用例评审:避免三方需求不一致,减少测试执行阶段做无效工作,如执行无效用例、提交无效BUG等
    • 测试数据准备:覆盖更多的测试点、模拟更多的场景、做好更充分的测试准备
  4. 待开发提测,就和开发进行代码审查也就是常说的CR
  5. 执行按照测试计划进行测试,执行测试用例当发现bug后,确定是否是bug,然后提bug
  6. 跟进bug修复,直到开发修复完bug,复测没问题后,关闭bug
  7. 最后项目如期上线,上线后如果有线上问题测开同学要及时跟进解决
    线下测试(含灰度)

线下测试

  • 横向覆盖:对于一个场景,从开始到结束涉及到的关键节点,都要进行检查点覆盖,包括功能实现、数据读取、数据计算、数据写入等的正确性;
  • 纵向覆盖:正常场景、异常场景、补偿场景都要覆盖;
  • 探索性测试:凭个人经验进行探索性测试;
  • 回归测试:拉取回归测试集,手动测试和自动化测试相结合,在测试环境验证新功能对原有功能是否产生影响;

探索性测试

  • 根据需求描述来设计最初的测试用例,然后执行测试;在执行过程中,如果得到的输出和预期输出不完全一致,于是会猜测这种不一致是否可能是软件的缺陷造成的;为了验证想法,你会根据错误输出,设计新的测试用例,然后采用不同的输入再次检查软输出。经过几轮这样的猜测和验证,进行反复“探索”,最终确定了一个软件的缺陷。
  • 而识别缺陷的思路和测试用例的设计,并没有出现在最初的测试设计和测试用例文档中。探索性测试是一种测试风格,并且强调依据当前项目上下文选择最适合的测试技术。同样的测试风格,由不同的人来具体执行,得到的结果可能会差别巨大,一直强调测试分析能力是最重要的技能。

线上测试

  • 回归测试:拉取线上回归测试集,并结合自动化测试,保证核心流程测试通过;
  • 新功能测试:拉取新功能快速验证测试集,并确保覆盖新功能核心测试点;
  • 此阶段是版本质量终态,线上测试主要是为了确保代码部署、生产配置、生产环境对质量的影响。

测试复盘

  • 在发布上线后,对测试过程进行复盘,总结遇到的问题,对当时的解决方案进行探讨。通过复盘,从而达到指导后续工作,减少重复踩坑。并在可以在个人复盘完成后,在部门内进行信息共享。每个人负责的项目虽然不同,但是测试思想确有共通之处。通过复盘分享,可以有效提升团队整体测试经验。
  • 此阶段是测试经验累积阶段,也是容易被忽略的阶段。通过信息共享,大大降低重复踩坑的概率。

线上监控

  • 通过选取业务流程中优先级高的测试用例,作为心跳测试用例定时运行,并持续进行补充完善。

3.5 Bug专项

开发经理不认为这是一个bug?

  • 首先可能是测试人员自己的问题,是否描述该bug不太清晰,使得开发人员难以理解或者产生了歧义,这个时候要修改自己的描述,一定要清晰明了,无歧义,无冗余的步骤
  • 其次可能是需求型的bug,找产品经理沟通清楚该产品的需求,判断是测试人员还是开发人员对该需求判断有误
  • 还有可能是低概率性的Bug,出现了难以复现的bug,这个时候要结合严重性、频繁性、对用户的影响以及产品交付时间与开发共同衡量是否修复该bug,即使是选择暂不修复,也需要将该Bug详细地提交备案

测试出来bug怎么办

  1. 记录和报告
    • 详细记录:记录发现的bug,包括出现的具体情况、复现步骤、预期行为和实际行为。记录应该尽可能详细,以便开发人员能够轻松复现问题。
    • 截图/视频:提供bug出现时的截图或视频,可以帮助开发人员更快地理解和复现问题。
    • 日志文件:如果游戏有日志功能,提取相关日志文件,这些文件可能包含有助于诊断问题的信息。
  2. 分类和优先级排序
    • 严重程度:根据bug的影响程度进行分类,如严重(阻塞游戏进程)、中等(影响游戏体验但不阻塞)、轻微(细节问题)。
    • 优先级:根据bug的严重程度和影响范围,确定修复的优先级。通常严重且频繁出现的bug优先修复。
  3. 分配和修复
    • 分配任务:将bug报告分配给相应的开发人员。确保开发人员了解bug的详细信息,并有能力解决问题。
    • 修复bug:开发人员根据bug报告进行修复。可能需要修改代码、调整配置、更新资源等。
  4. 回归测试
    • 验证修复:修复完成后,进行回归测试,确保bug已经被修复,并且修复没有引入新的问题。
    • 全面测试:在验证特定bug的同时,进行全面测试,确保游戏整体的稳定性和性能。
  5. 记录和跟踪
    • 更新状态:在bug追踪系统中更新bug的状态,从“待处理”到“已修复”,并添加修复详情和版本信息。
    • 跟踪进度:持续跟踪bug的修复进度,确保所有报告的bug都能得到及时处理。

判断bug是前or后端

通常可以利用抓包工具来进行分析。可以从三个方面进行分析:请求接口,传参,响应。

  1. 请求接口url是否正确
    如果请求的接口url错误,为前端的bug
  2. 传参是否正确
    如果传参不正确,为前端的bug
  3. 请求接口url和传参都正确,查看响应是否正确
    如果响应内容不正确,为后端bug
  4. 也可以在浏览器控制台输入js代码调试进行分析

如果定位为后端的bug,可以进一步通过以下方法精确定位是哪里出bug

  1. 查看报错日志,通过日志分析问题点
  2. 查看数据库确认数据的正确性
  3. 查看缓存是否正确

如果进行接口测试,发现的bug,很大概率是后端的bug
根据返回的状态码:

  • 返回200

  • 查询数据类型的接口,返回的数据和数据库的数据是否匹配——不匹配就是开发的sql写错了

  • 操作功能型的接口,比如新增,修改,删除等,返回的结果不正确——逻辑错误

  • 输入的数据不符合要求,但是操作成功了——数据校验问题:长度,类型,等价类/边界值

  • 40*(404/405)请求的问题,我们接口请求操作的问题,不是bug

    • 404: 大部分是URL 不正确
    • 405 大部分是 传输的方式不正确,把get改为post或者post改成get
    • 50* 一般就是服务端代码bug ——查日志

前端和后端bug有什么样的特点

bug敏感程度如何

影响对Bug敏感程度的因素
  1. 代码质量:高质量的代码通常有良好的结构、清晰的逻辑和适当的注释,减少了bug的引入概率。
  2. 测试覆盖率:高测试覆盖率能够更全面地检测代码中的潜在问题,及时发现bug。
  3. 开发人员经验:有经验的开发人员通常能更快、更准确地发现和修复bug,编写更少bug的代码。
  4. 开发工具和环境:使用先进的开发工具(如IDE、静态代码分析工具)和良好的开发环境(如版本控制系统、CI/CD流水线)有助于提高对bug的检测和处理能力。
  5. 代码审查和同行评审:通过代码审查和同行评审,可以发现更多潜在的bug,提高代码质量
提高对Bug敏感程度的方法和实践
  1. 自动化测试
    • 单元测试:测试单个函数或模块的行为,确保其在各种输入条件下都能正常工作。
    • 集成测试:测试模块之间的交互,确保它们能够正确协同工作。
    • 系统测试:在接近真实使用环境下对整个系统进行测试,确保系统满足需求。
    • 回归测试:在修改代码后重新运行所有测试,确保新的改动没有引入新的bug。
  2. 静态代码分析
    • 使用静态代码分析工具(如SonarQube、ESLint)对代码进行静态分析,提前发现潜在的bug和代码质量问题。
  3. 代码审查(Code Review)
    • 进行严格的代码审查,由其他开发人员检查代码,发现潜在的问题和改进点。
  4. 持续集成和持续部署(CI/CD)
    • 通过CI/CD流水线,自动化构建、测试和部署过程,及时发现和修复问题,确保代码的高质量和稳定性。
  5. 良好的编码规范和最佳实践
    • 遵循编码规范和最佳实践,如命名规范、一致的代码风格和设计模式,减少引入bug的机会。
  6. 调试和日志记录
    • 使用调试工具(如GDB、LLDB)和良好的日志记录策略,帮助迅速定位和解决问题。
  7. 用户反馈和错误报告机制
    • 建立有效的用户反馈和错误报告机制,及时收到用户反馈,快速修复bug。
具体技术和工具
  1. 单元测试框架:JUnit、TestNG、Mockito(Java),pytest、unittest(Python),RSpec(Ruby)等。
  2. 集成测试框架:Selenium、Cucumber、Postman等。
  3. 静态代码分析工具:SonarQube、ESLint、Pylint、Checkstyle等。
  4. CI/CD工具:Jenkins、GitLab CI/CD、CircleCI、Travis CI等。
  5. 代码审查工具:GitHub Pull Requests、GitLab Merge Requests、Phabricator等。
  6. 调试工具:GDB、LLDB、Visual Studio Debugger等。
  7. 日志框架:Log4j、SLF4J、Logback(Java),Logging(Python),log4net(.NET)

3.6 抓包

怎么做-fiddler

  1. 主要用的就是 fiddler工具
  2. 如果只是抓取Web端数据的话,只要在浏览器上设置代理服务器指定代理服务器为本地的fiddler这个工具,设置好端口:8888 就可以了
  3. 如果要抓取手机端的包,首先需要保证手机与电脑(安装了 fiddler的这个电脑)在同一个网络,在手机上要设置http伏理服务器为手动,然后服务器指定为电脑的址,端口设置为8888
  4. 例外,如果要抓取https包,可能还需要在电脑上安装证书,手机端这边也要安装证书,差不多这样就可以。

作用-分析是前后端那里的问题

  1. 先看发的请求是否有问题,请求的接口ur是否有错误,参数是否有错误,如果ur或传参有问题那就是前端Bug
  2. 如果请求没有问题,看下后台返回的数据是否有问题,状态码5开头的基本都是后台问题状态码为200,响应数据与预期不一致,那也是后台Bug,不过这里有可能是数据库问题,也有可以是后台代码问题,这里首先我一般会查看下数据库的数据,如果数据库没有问题,那就需要查看下后台的日志文件,具体分析下看是后台代码哪里出问题了,然后把日志信息信息截图发,
  3. 返回的数据没有问题,请求参数,url也没有问题,那可能是前端代码是否转换有问题,那就是前端Bug

抓包原理

就是把fiddler设置为代理服务器,那么浏览器发出的所有请求都由fiddler这个工具来代理转发,也就是说通过fiddler来拦截客服端和服务端之间的数据交互,可以拦截到客户端给服务器发了什么数据,服务器给客户端响应了什么数据,然后对数据进行分析

3.7 APP出现崩溃怎么抓日志

Android平台

  1. 使用Android Studio
    步骤:
    打开Android Studio。
    连接你的Android设备或启动模拟器。
    打开“Logcat”窗口(在下方的工具栏中)。
    运行你的APP,等待崩溃发生。
    在“Logcat”窗口中查看和过滤日志信息,寻找FATAL EXCEPTION或ANR(应用无响应)相关的日志。
    将崩溃日志复制并保存。
  2. 使用ADB(Android Debug Bridge)
    步骤:
    连接你的Android设备并确保开发者选项中的“USB调试”已启用。
    打开终端或命令提示符。
    输入以下命令以抓取实时日志:adb logcat
    运行你的APP,等待崩溃发生。
    在终端中查看和复制崩溃日志,保存到文本文件中。
    你也可以使用以下命令将日志保存到文件中:adb logcat -d > crash_log.txt
  3. 使用第三方日志库
    在APP中集成第三方日志库,如Crashlytics、Sentry或Firebase。
    配置日志库,以便自动捕获并发送崩溃日志到后台服务。
    在后台管理界面查看详细的崩溃报告和日志。

iOS平台

  1. 使用Xcode
    步骤:
    打开Xcode。
    连接你的iOS设备或启动模拟器。
    打开“Devices and Simulators”窗口(菜单栏中选择Window -> Devices and Simulators)。
    选择你的设备,点击“View Device Logs”。
    运行你的APP,等待崩溃发生。
    在设备日志中找到崩溃日志,通常以Crash或Exception开头。
    将崩溃日志复制并保存。
  2. 使用Device Console
    步骤:
    打开Xcode。
    连接你的iOS设备。
    打开“Devices and Simulators”窗口(菜单栏中选择Window -> Devices and Simulators)。
    选择你的设备,点击“Open Console”。
    运行你的APP,等待崩溃发生。
    在控制台中查看和复制崩溃日志,保存到文本文件中。

举例
Firebase Crashlytics日志平台

1. 在项目中添加依赖
安卓
dependencies {
    implementation 'com.google.firebase:firebase-crashlytics:17.3.0'
}
2. 初始化Firebase
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseApp.initializeApp(this);
    }
}
3. 捕获自定义崩溃
try {
    throw new RuntimeException("This is a test crash");
} catch (Exception e) {
    Crashlytics.logException(e);
}

3.8 web测试和app测试的区别

  1. web测试中只要更新了服务器,客户端也会同步更新,保证每个客户的客户端(或者说浏览器)一样;app必须得客户端主动更新,所以app测试中修改了服务器,客户端的所有核心版本都需要进行回归测试
  2. 性能方面:web主要看响应速度,app还要看电量、流量、cpu、内存等
  3. 兼容方面:web基于浏览器,主要看电脑硬件和电脑系统;app依赖于手机或平板等移动端,关注的系统主要是安卓或者ios,还要关心分辨率、屏幕尺寸
  4. app要多一些专项测试:中断测试、界面操作、安装、卸载、更新等

4. 测试方法

4.1 黑盒测试

定义&优缺点

黑盒测试也称:数据驱动测试(由数据驱动其进行测试)包括功能测试和性能测试

  • 黑盒测试:没有办法或不用了解事物的内部结构和运行机制,而把整个事物看成一个整体黑盒测试主要是为了发现:1.是否有不正确的或者遗漏的功能;2.输入是否能输出正确的结果;3.性能上是否满足要求
  • 优点:①较为简单,不需要了解程序内部的代码及实现,与软件内部实现无关;②从用户角度出发,实际考虑用户使用的功能及可能出现的问题
  • 缺点:不可能覆盖所有的代码,覆盖率较低

黑盒测试方法

  1. 等价类划分(Equivalence Partitioning)
    将输入数据划分为等价类,选择代表性的测试用例来覆盖每个等价类。这样可以有效地减少测试用例的数量,同时保证测试覆盖。
  2. 边界值分析(Boundary Value Analysis)
    关注输入的边界值,选择接近边界的测试用例。边界值往往是导致错误的关键点,因此测试边界值可以发现潜在的问题。
  3. 决策表测试(Decision Table Testing)
    根据不同的条件和规则,创建决策表,覆盖不同的组合情况。这种方法适用于有多个条件和规则的场景。
  4. 状态转换测试(State Transition Testing)
    针对有状态的系统,定义不同的状态和状态转换规则,设计测试用例来覆盖不同的状态转换路径。
  5. 错误推测测试(Error Guessing)
    基于测试人员的经验和直觉,猜测可能存在的错误,并设计测试用例来验证这些猜测。这种方法比较主观,依赖于测试人员的经验。
  6. 功能点测试(Function Point Testing)
    根据软件的功能点,设计测试用例来验证每个功能点的正确性和完整性。
  7. 用户界面测试(User Interface Testing)
    关注软件的用户界面,测试用户界面的交互和响应是否符合预期。
    这些方法可以单独使用,也可以结合使用,根据具体的测试目标和需求选择适合的方法进行黑盒测试。
  • 优点是容易实施,不需要关注内部实现,贴近用户需求
  • 缺点是覆盖率比较低,因为不知道内部逻辑

4.2 白盒测试

定义&优缺点

  • 概念:关注程序代码的具体细节,根据软件内部代码的逻辑结构分析来进行测试。主要是通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件质量。关注代码的实现细节。主要对程序模块的所有独立执行路径至少测试一遍、对所有的逻辑判定,取“真”或“假”的两种情况都要测试一遍,循环边界和运行界限内执行循环体等等
  • 优点:增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题
  • 缺点:系统庞大时测试开销很大,难以测试所有运行路径;测试基于代码,只能验证代码是否正确,而不晓得代码设计是否合理,可能会遗漏某些功能需求

白盒测试方法

  1. 语句覆盖(Statement Coverage):使程序中每个可执行语句至少执行一次。(相当于卧底将敌军的所有细节,包括大营路线,火力配置等获取)
  2. 判定覆盖(Decision Coverage):使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。(相当于卧底将敌人大营的所有分叉路口两边画出)
  3. 条件覆盖(Condition Coverage):使每个判断中每个条件的可能取值至少满足一次。
  4. 判定/条件覆盖(Decision/Condition Coverage):所有条件可能至少执行一次取值,同时所有判断的可能结果至少执行一次。(相当于卧底将敌人的大门钥匙均获取)
  5. 条件组合覆盖(Branch Condition Combination Coverage):使得所有可能的条件取值组合至少执行一次(相当于卧底将敌人大营的大门钥匙以及大门内军官的办公室钥匙获取)
  6. 路径覆盖(Path Coverage):使得程序中所有的路径都至少执行一次 。(相当于卧底将敌人大营的所有路线画出)

4.3 其它测试方法

判定某种方法是否为黑盒测试方法,关键还是看是否针对被测对象内部结构还是针对被测对象的整体进行测试。

项目Value
静态测试在不运行程序的情况下寻找代码中可能存在的错误,或者评估程序代码
动态测试实际运行被测程序,输入相应的测试用例,检查运行结果与预期结果的差异,从而验证程序的正确性、有效性和可靠性,并且分析系统运行的效率和健壮性
α测试一个用户在开发环境下的受控测试,模拟实际操作环境
β测试多个用户在实际使用环境下进行的测试,如一些软件的公测
冒烟测试在大规模测试之前,先对软件的基本、核心、主要功能进行测试,节省资源
回归测试开发修正完代码后再回过头来做测试
随机测试跳出思维的限制,没有思想、没有步骤地随机进行测试
探索测试有思想,有步骤地测试一些复杂的、不常用地功能

4.3 接口测试

测试关键点

接口测试是软件测试的一种类型,专注于测试系统组件之间的交互点,即接口。接口测试的目的是确保接口能够正确地接收和发送数据,并且符合预期的功能和性能要求

  1. 功能测试:验证接口是否按照预期执行其功能,包括输入数据的处理和输出结果的准确性。包括测试各种请求类型(GET、POST、PUT、DELETE 等)、参数验证、返回值和状态码等
  2. 安全性测试:包括身份验证、授权、数据加密、漏洞扫描、注入攻击(如 SQL 注入、XSS)测试等
  3. 性能测试:评估接口在高负载下的表现,包括响应时间和吞吐量。包括负载测试、压力测试、容量测试和延迟测试等
  4. 可用性测试:确保接口在不同的环境和条件下都能正常工作。
  5. 兼容性测试:检查接口在不同平台、设备和浏览器上的兼容性。
  6. 集成测试:包括与数据库、第三方服务、前端应用等的交互测试
  7. 回归测试:保 API 在经过修改或更新后仍然保持原有功能的正确性
  8. 数据验证:确保接口接收和发送的数据格式正确,符合预定的数据类型和结构。
  9. 错误处理:测试接口在遇到错误输入或异常情况时的响应。
  10. 版本控制和向后兼容性:确保新版本的接口能够与旧版本的客户端或服务兼容。

具体方法

  1. 单元测试(Unit Testing):JUnit(Java)、NUnit(.NET)、unittest(Python)等
  2. 集成成测试(Integration Testing):Postman、SoapUI、RestAssured
  3. 端到端测试(End-to-End Testing):Cypress、Protractor、Selenium 等
  4. 自动化测试(Automated Testing):Postman、SoapUI、JMeter、Selenium 等

工具postman、SoapUI、Swagger

Postman:用于手动和自动化 API 测试,支持功能测试、性能测试等。
SoapUI:用于测试 SOAP 和 REST API,支持功能测试、安全测试、负载测试等。
JMeter:主要用于性能测试和负载测试,支持各种协议(HTTP、FTP、JDBC 等)。
RestAssured:用于 Java 环境下的 REST API 测试,支持集成测试和自动化测试。
Newman:Postman 的命令行工具,用于自动化测试和持续集成。
Insomnia:用于设计、测试和调试 API 的工具,支持 REST 和 GraphQL

get post请求方式与区别

post请求更安全,post请求不会作为url的一部分
post请求发送的数量更大,get请求url有长度限制
post请求能发送更多的数据类型,get请求只能发送ascii码
传参方式不同,且get产生一个tcp数据包,post产生两个

  1. 必填字段:请求参数必填项、可选项
  2. 合法性:输入输出合法、非法参数
  3. 边界:请求参数边界值等
  4. 容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
  5. 响应数据校验:断言、数据提取传递到下一级接口逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
  6. 性能:对接口模拟并发测试,逐步加压,分析瓶颈点安全性:构造恶意的字符请求,如:SOL注入、XSS、敏感信息、业务逻辑

1. Nginx 和 Apache 对比

Column 1NginxApache:
架构和处理模型Nginx 使用异步、非阻塞的事件驱动架构,这意味着它能更好地处理高并发的连接, Nginx 通过单线程处理多个连接,使用较少的资源处理更多的请求进程/线程驱动架构:Apache 主要使用多进程(或多线程)模型,每个请求都由一个独立的进程或线程处理,多种 MPM(多处理模块):Apache 提供多种 MPM(如 Prefork、Worker 和 Event),用户可以根据需求选择不同的 MPM
性能高并发处理:低资源占用:Nginx 的内存和 CPU 占用通常较低灵活性强:Apache 在处理复杂的请求和执行动态内容时表现较好;配置丰富:Apache 的配置选项非常丰富,适合需要细粒度控制的场景
可扩展性和模块支持模块:Nginx 的模块在编译时添加,动态加载支持有限;扩展:扩展性主要通过配置和第三方模块实现pache 提供丰富的动态加载模块,用户可以根据需求随时启用或禁用,过模块可以实现各种功能(如身份验证、URL 重写、日志记录等)
使用场景适合高并发、需要高效处理静态内容和反向代理的场景,适用于作为反向代理服务器、负载均衡器和 HTTP 缓存适合需要复杂配置和模块化管理的场景,适用于需要处理动态内容、多语言支持和细粒度控制的环境。

2. API测试中的常用协议

概述用途特点
HTTP/HTTPS用于大多数 Web API 的通信,如 RESTful API简单、易于实现、支持广泛的 HTTP 方法(GET、POST、PUT、DELETE 等),HTTPS 提供了数据加密和安全传输
SOAP(简单对象访问协议)是一种基于 XML 的协议,用于交换结构化信息企业级应用,尤其是需要强类型、安全性和事务支持的场景高度扩展性,支持 WS-Security、WS-ReliableMessaging 等标准,但比 REST 更复杂
WebSocket 是一种用于双向通信的协议,适合实时数据传输实时应用,如聊天室、实时数据流和游戏持久连接、低延迟、支持双向数据传输
gRPC:gRPC 是一种由 Google 开发的开源远程过程调用(RPC)框架,使用 HTTP/2 传输协议需要高性能和高效数据传输的分布式系统持多种语言,基于 Protocol Buffers(Protobuf)序列化,高效、低延迟,双向流式通信
GraphQL 是一种用于 API 查询的开放规范,由 Facebook 开发需要灵活查询、获取具体数据的场景客户端可以指定需要的数据,减少了冗余数据传输,单一端点处理多种查询
MQTTMQTT(消息队列遥测传输)是一种轻量级的发布/订阅消息传输协议物联网(IoT)应用,适合低带宽、不稳定网络环境
AMQP(高级消息队列协议)是一种消息传输协议,用于消息队列系统需要可靠消息传递和复杂路由的应用,如企业消息系统支持消息确认、路由和队列等复杂功能,提供可靠的消息传输

3. API测试面临的BUG

  1. 功能重复或缺失
  2. 可靠性问题
  3. 消息不当
  4. 不兼容的错误处理机制
  5. 多线程问题
  6. 不适合的错误

常用的HTTP方法GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS

  1. GET:用于从服务器检索数据,请求参数包含在 URL 中,通常用于获取资源而不改变服务器上的数据
  2. POST:用于向服务器发送数据,通常用于创建新资源,请求参数包含在请求体中,可能会改变服务器上的数据,提交数据,如提交表单、新建订单
  3. PUT:用于更新服务器上的现有资源。请求参数包含在请求体中,通常要求客户端提供完整的资源表示。更新数据,如更新用户信息、修改订单状态
  4. DELETE:用于删除服务器上的资源。请求参数包含在 URL 中,服务器删除指定的资源。删除数据,如删除用户、取消订单
  5. PATCH:用于部分更新服务器上的资源。请求参数包含在请求体中,只修改资源的部分内容。部分更新数据,如修改用户的单个属性
  6. HEAD:用于检索资源的元数据。与 GET 类似,但响应中没有响应体,只返回头部信息。获取资源的头部信息,如检查文件是否存在
  7. OPTIONS:获取服务器支持的请求方法,如跨域请求前的预检请求

接口幂等性

https://blog.csdn/qq_41973594/article/details/109684180#:~:text=%E4%BB%80%E4%B9%88%E6%98%AF%E6%8E%A5%E5%8F%A3%E7%9A%84%20%E5%B9%82%E7%AD%89%E6%80%A7

  1. 概念
    • 幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次
    • 调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。
    • 比如下面这些情况,如果没有实现接口幂等性会有很严重的后果:
      • 支付接口,重复支付会导致多次扣钱
      • 订单接口,同一个订单可能会多次创建。
  2. 解决方案
    • 唯一索引:可以别面脏数据的添加,当插入重读数据时数据库会抛异常,保证了数据的唯一性

    • 乐观锁,基于乐观锁的基本原理,为数据字段增加一个vision字段,当数据需要更新时,先去数据库里获取此时的version版本号
      ‘’’ select version from tablename where xxx ‘’’
      悲观锁
      乐观锁可以实现的往往用悲观锁也能实现,在获取数据时进行加锁,当同时有多个重复请求时其他请求都无法进行操作

    • 分布式锁

      • 幂等的本质是分布式锁的问题,分布式锁正常可以通过redis或zookeeper实现;在分布式环境下,锁定全局唯一资源,使请求串行化,实际表现为互斥锁,防止重复,解决幂等。
    • token机制

      • token机制的核心思想是为每一次操作生成一个唯一性的凭证,也就是token。一个token在操作的每一个阶段只有一次执行权,一旦执行成功则保存执行结果。对重复的请求,返回同一个结果。token机制的应用十分广泛。

4.3 自动化测试

场景

  • 需求变更有计划性,更新频率不高或不会大幅度改版;
  • 项目周期长(几年);
  • 脚本重复利用率高;
  • 代码、环境可量化;
  • 一个项目可以区分出某部分手动、某部分自动
  • 比如:基础性代码、接口,比较独立的API、没有业务依赖,适合自动;
  • 有角度依赖、较复杂的业务逻辑,场景多、类型不一致、因子数多、重度需要人交互,适合手动;

自动化测试方法

等价类划分法
边界值分析法
因果图设计法
判定表设计法
正交实验法

工具-Postman

  • 提供web API和HTTP请求的调试,能发任何请求的http请求,比如get,post,
  • 支持SOAP和RESTful服务的端点测试,提供简洁的用户界面和强大的自动化测试能力
SOAP(RPC)
  • SOAP 最早是针对 RPC 的一种解决方案,简单对象访问协议,很轻量,同时作为应用协议可以基于多种传输协议来传递消息(Http,SMTP等)

  • RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样

  • 常用的RPC框架

    • Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。
      gRPC:一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统
    • Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。
    • Spring Cloud:Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。Spring Cloud基于Spring Boot, 使得开发部署极其简单
  • RPC原理

    1. 服务消费方(client)调用以本地调用方式调用服务;
    2. client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
    3. client stub找到服务地址,并将消息发送到服务端;
    4. server stub收到消息后进行解码;
    5. server stub根据解码结果调用本地的服务;
    6. 本地服务执行并将结果返回给server stub;
    7. server stub将返回结果打包成消息并发送至消费方;
    8. client stub接收到消息,并进行解码;
    9. 服务消费方得到最终结果。
  • 如何做到透明化远程服务调用

    1. 对java来说就是使用代理!java代理有两种方式:1) jdk 动态代理;
    2. 2)字节码生成。尽管字节码生成方式实现的代理更为强大和高效,但代码维护不易,大部分公司实现RPC框架时还是选择动态代理方式。
  • 如何对消息进行编码和解码

    1. 确定消息数据结构
      客户端的请求消息结构一般需要包括以下内容:

      • 接口名称:在我们的例子里接口名是“HelloWorldService”,如果不传,服务端就不知道调用哪个接口了;
      • 方法名:一个接口内可能有很多方法,如果不传方法名服务端也就不知道调用哪个方法;
      • 参数类型&参数值:参数类型有很多,比如有bool、int、long、double、string、map、list,甚至如struct等,以及相应的参数值;
      • 超时时间 + requestID(标识唯一请求id)
      • 服务端返回的消息结构一般包括以下内容:状态code + 返回值;requestID
    2. 序列化

      • 序列化?序列化就是将数据结构或对象转换成二进制串的过程,也就是编码的过程
      • 反序列化?将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
        设计一个RPC(远程过程调用)框架是一个复杂的过程,涉及到网络通信、序列化与反序列化、服务发现、负载均衡、容错机制等多个方面。以下是设计RPC框架的一些基本步骤

工具-jmeter

接口测试,性能测试

  • JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。、
  • Meter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。
  • 你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。
1. 性能测试-聚合报告查看

一般情况下,性能测试中需要重点关注的数据有请求数、平均响应时间、最小响应时间、最大响应时间、吞吐量和错误率
参数说明:
2. Label:每个 JMeter 的元素(如 HTTP请求)都有一个 Name 属性,Label显示的就是 Name 属性的值
3. #样本:请求数,表示这次测试中一共发出了多少个请求。如模拟100个线程数(即100个用户),每个线程迭代10次,这里就显示10010 = 1000
4. 平均值:平均响应时间,默认情况下是单个请求的平均响应时间。
5. 中位数:50% 用户的响应时间
6. 90%/ 95%/ 99% 百分位:90%/ 95%/ 99% 用户的响应时间
7. 最小值:最小响应时间
8. 最大值:最大响应时间
9. 异常%:请求错误率,即错误请求数/请求总数
10. 吞吐量:——默认情况下表示每秒完成的请求数(Request per Second)
11. 接收KB/Sec:每秒从服务器端接收到的数据量
12. 发送KB/Sec:每秒发送到服务器端的数据量
13. 配置线程组
操作:点击线程组,配置本次性能测试相关参数:线程数,Ramp-Up时间,循环次数等参数
14. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数就是设置多少个线程数。
15. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为5,准备时长为1,那么需要1秒钟启动5个线程,也就是每秒钟启动5个线程。
16. 循环次数:每个线程发送请求的次数。如果线程数为100,循环次数为10,那么每个线程发送10次请求。总请求数为100
10=1000 。若勾选“永远”,则所有线程会一直发送请求,直到选择停止运行脚本。
17. Same user on each iteration:用于控制每次迭代是否使用相同的线程(即用户)。当该参数被勾选时,JMeter在每次迭代时都会使用相同的线程来模拟用户行为。在连续的请求中,会保持相同的用户身份(如会话、Cookie等)。
18. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需勾选循环次数为永远)
19. 启动延迟(秒):测试延迟的启动时间
20. 持续时间(秒):测试持续的时间

2. jmeter之压测Mysql数据库

  1. 操作:
    • Thread Group -> add -> sampler -> jdbc request;
    • JDBC Request > 配置元件 > JDBC Connection Configuration
    • 配置数据库【本地安装mysql并新建一个数据库】
    • jar包添加:测试计划中添加 mysql-connector-java/5.1.38.jar 文件,这步操作结束后,JDBC Connection Configuration数据库连接配置中才可以选择驱动
    • 配置讲解:JDBC Request 配置、JDBC Connection Configuration【数据库连接配置】:数据库地址、数据库账号密码、选择jdbc驱动
    • Mysql 数据库压测调试:JDBC Request > SQL Query 中输入简单的SQL语句
    • 查看结构树
    • 请求参数

4.4 软件测试阶段分类-单元、集成、系统、验收

列别定义目标方法类型策略
单元软件中的最小可测试单元,比如一个功能模块验证每个单元的功能是否正确使用测试框架,unnitest属于白盒测试的一部分逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、静态数据流分析
集成集成测试是将多个单元组合在一起进行测试,以发现集成后的问题验证各单元之间的接口和交互是否正确,确保模块组合在一起后能够正常工作从底向上或从顶向下进行测试,可能使用模拟对象或集成测试可以包括黑盒测试和白盒测试的内容postman接口测试
系统系统测试是在集成测试的基础上,对整个系统进行全面测试验证整个系统的功能、性能和兼容性,确保系统满足需求规格说明基于需求规格说明书编写测试用例,执行功能测试、性能测试、压力测试等系统测试通常是黑盒测试
验收测试验收测试是用户或客户对系统进行的正式测试,以决定系统是否可以投入使用验证系统是否满足业务需求和用户期望,确保系统可以在生产环境中运行基于业务需求和用户场景编写测试用例,执行用户验收测试、α测试和β测试等验收测试通常是黑盒测试,接近用户视角

pytest单元测试脚本

unittest模块\pytest框架
  1. 使用unittest模块
  • Python内置的unittest模块是进行单元测试的标准工具。unittest模块提供了一组工具,可以对函数和类进行自动化测试。
  • 首先,创建一个测试类,继承自unittest.TestCase。在这个类中,可以定义多个测试方法,每个方法都以test_开头。
  • 测试用例覆盖:确保测试用例覆盖了各种可能的输入情况,例如正数、负数、零等。添加更多的测试方法,以全面验证代码的功能和边界条件:self.assertEqual(add(1, 2), 3)
  • 使用unittest模块编写的测试脚本可以通过运行python -m unittest test_script.py来执行。
  1. 使用pytest框架
  • 在pytest中,不需要创建测试类,只需编写测试函数,函数名以test_开头。
  • pytest提供了fixtures机制,用于在测试函数执行前后执行特定的初始化和清理操作
  • 另外,Pytest库还提供了更简洁和灵活的测试运行方式,可以通过运行pytest test_script.py来执行测试脚本
  1. 注意事项
  • 测试覆盖率:测试覆盖率是衡量测试质量的一个重要指标。可以使用工具(如coverage.py)来检查测试覆盖率
试驱动开发(TDD)
  • 定义:测试驱动开发(TDD)是一种软件开发方法,在编写代码之前先编写测试。这种方法可以确保代码完全符合需求,并减少错误
  • 使用Mock对象:可以使用unittest.mock模块来模拟这些外部资源

冒烟测试

  • 定义:就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。
  • 如果不通过,则打回开发那边重新开发;
  • 如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。
  • 简化:门槛测试,一个开关而不是一个阶段。
  • 目的:版本验证测试BVT(Build Verification Testing)。
  • 时间:开发转测试,历时半至一个小时,很短。
  • 对象:需求覆盖,主功能路径。
  • 优点:节省测试时间,防止build失败。
  • 缺点:覆盖率还是比较低。
  • 操作:对着需求文档把新功能过一遍;把所有流程功能走一遍;用monkey跑个一两个小时;如果有历史用例的话,可以把用例分级,冒烟级、详细级、回归级等等
  • 用例:冒烟测试基本上不需要什么用例,如果有的话,就用详细用例里,覆盖需求文档级别的用例就可以了
  • 冒烟测试,是版本验证测试,主要确认新的版本是否存在致命性bug,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

回归测试

是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

联系

  1. 测试覆盖范围的层次递进:单元测试 -> 集成测试 -> 系统测试 -> 验收测试
  2. 测试目标的逐步深入:单元测试和白盒测试重点在于代码的正确性和实现;黑盒测试、系统测试和验收测试重点在于功能的正确性和满足需求
  3. 单元测试和白盒测试可以结合使用,确保代码层面的质量,集成测试、系统测试和验收测试通常是黑盒测试的应用,确保整体系统的可靠性

---------------第三篇章---------------

游戏测试

4.1 测试案例

0)测青鸟

  1. 基本移动测试
    行走和跑步:在不同地形(如平地、斜坡、台阶)上测试青鸟的行走和跑步,确保动画流畅,移动速度一致。
    转向和转弯:测试青鸟在各种转向和转弯场景中的响应速度和动画过渡。
    跳跃:测试青鸟的跳跃高度和距离,检查是否有卡顿或穿模现象。
  2. 路径规划和导航
    障碍物处理:在复杂环境中测试青鸟如何绕过障碍物,观察路径规划的智能性。
    导航到目标点:设置远距离的目标点,观察青鸟的路径选择,确保其选择最优路径
  3. 环境互动
    攀爬和跳跃:测试青鸟在需要攀爬或跳跃的环境中的表现,确保其与环境的互动自然。
    水体和游泳:如果游戏中有水体,测试青鸟的游泳行为和相关动画。
  4. 技能和特殊移动
    技能相关的位移:测试青鸟在使用技能时的位移效果,确保技能动画和位移距离准确。
    闪避和冲刺:测试青鸟的闪避和冲刺动作,观察其速度、动画流畅度和响应时间。
  5. 多角色协作
    队伍移动:在有多个角色跟随的情况下,测试青鸟的移动,确保没有卡位或碰撞现象。
    AI控制:观察青鸟在AI控制下的移动行为,确保其能够智能跟随玩家或独立行动。
  6. 用户输入响应
    输入延迟:测试不同输入设备(如键盘、手柄)对青鸟移动的影响,确保输入响应及时。
    控制精度:在精细操作(如微调位置)时,测试青鸟的控制精度。
  7. 玩家反馈
    收集反馈:邀请玩家参与测试,收集他们对青鸟移动系统的反馈,找出潜在问题和改进点。

1)游戏上线一个角色,如何测试-卡夫卡

为了测试新上线角色的性能,可以从以下几个方面入手,确保角色在各种情况下表现稳定,不影响整体游戏性能。

  1. 环境搭建
  • 测试环境:准备各种配置的测试设备,包括高端和低端设备,以全面了解角色在不同硬件环境下的表现。
  • 测试工具:使用性能测试工具,如Profiler、Fraps、RenderDoc等,来监控和记录性能数据。
  • 卡夫卡是一位熟练使用刀、剑与轻型枪械的雷属性、「虚无」命途角色
    1。卡夫卡在游戏中是一个五星雷角色,角色命途为:虚无
    2。卡夫卡的普攻对指定敌方单体造成等同于卡芙卡50%攻击力的雷属性伤害,战绩对指定敌方单体造成等同于卡芙卡70%攻击力的雷属性伤害,同时对其相邻目标造成等同于卡芙卡25%攻击力的雷属性伤害
    2。卡夫卡的所有持续伤害倍率都是基于攻击力加成,所以选择遗器和光锥时,应该优先堆攻击力和增伤34。
    技能加点建议为:战技=终结技>天赋>普攻3。
  1. 技能和动作测试
  • 技能释放测试:在不同情况下频繁释放角色的技能,监控技能释放时的帧率变化和资源占用情况。
  • 连招测试:测试角色的连招和连续动作,确保连续释放技能或攻击不会导致性能问题。
  • 特效测试:检查角色技能特效的性能,确保不会因为特效过多而导致性能下降。

具体
一、UI:技能的图标、描述、技能释放的动画效果
二、功能:技能的时间、技能的特效、技能的伤害、技能的交互、技能的音效、
三、场景:游戏场景:排位、匹配、娱乐;网络场景:2G/3G/4G/WiFi
四、专项:性能、弱网
1、技能的ui图标:局外的技能ui图标显示、局内的技能ui图标显示是否正常
2、技能的描述:局外的技能文字描述、局内的技能文字描述是否正确
3、技能的时间:局内技能的持续时间、释放时间、冷却时间是否正常
4、技能的特效:局内技能的特效显示是否正常,穿戴皮肤后的技能特效是否正常
5、技能的效果:技能的效果是否正常,如:治疗、出血、毒伤、暴击、防御、增伤、减伤。
6、技能的伤害:技能的伤害是否与技能描述的一致、局内伤害是否正常
7、技能的交互:技能和技能之间的交互是否正常,例如:B大招技能释放完,再释放A技能,可以减少B大招的冷却时间、
8、技能的施放:单次施放、多次施放是否正常
9、技能的音效:释放技能时,技能音效是否正常。
10、技能的动作:施放技能时动作是否流畅。
11、技能的升级:升级技能消耗的材料是否和实际消耗的一致、材料不足时,技能是否升级成功、材料充足时技能升级是否成功、技能升级后,伤害是否增加或减少、技能升级后的特效是否正常。快速点击技能,是否会发生异常:材料不足升级成功。
12、技能使用的场景:排位、匹配、娱乐、决斗场、
13、技能中断:释放技能是否会被友方或敌方的技能打断
14、技能的连接性:未释放完当前技能是否可以释放下一个技能。
15、装备对技能的影响:穿戴装备时、技能的释放速度、伤害数值、冷却时间是否变化正常。
16、药品对技能的影响:使用物品时,技能的释放速度、伤害数值、冷却时间是否变化正常。
17、技能的属性和连锁反应:技能的是否有属性攻击、无属性攻击;属性技能和其他属性技能产生的连锁反应:爆炸、融化、扩散、晶化、感电、蒸发、超导、点燃冻结、超载、

  1. 基本性能测试
  • 帧率测试(FPS):在不同设备上测试角色的帧率,确保角色的出现和技能释放不会导致帧率大幅下降。
  • 内存占用测试:监控角色相关的内存占用情况,确保在长时间运行和多次切换角色时不会发生内存泄漏。
  • CPU/GPU负载测试:检查角色活动对CPU和GPU的负载,确保在高负载情况下不会导致性能瓶颈。
  1. 场景测试
  • 空场景测试:在空场景中单独测试角色,确保基础性能表现。
  • 复杂场景测试:在复杂场景(如多人战斗、大量特效等)中测试角色,确保在高负载情况下的性能表现。
  1. 长时间运行测试
  • 稳定性测试:在长时间运行的情况下测试角色,观察是否存在内存泄漏、帧率下降等问题。
  • 资源管理测试:测试角色在频繁切换场景、进入退出战斗等情况下的资源释放和重新加载情况,确保资源管理良好。
  1. 边界测试
  • 极限条件测试:在极端条件下测试角色,如高温环境、大量同屏角色和技能特效等,观察性能表现。
  • 异常情况测试:模拟异常情况(如网络延迟、断线重连)下测试角色,确保在异常情况下性能表现依然稳定。
  1. 用户体验测试
  • 主观评价:邀请不同水平的玩家进行测试,收集他们对角色性能表现的主观评价,特别是在低端设备上的体验。
  • 反馈分析:根据玩家反馈,调整角色的性能表现,确保大多数玩家能够流畅运行。
  1. 自动化测试
  • 脚本化测试:编写自动化脚本,对角色进行各种场景、技能、动作的反复测试,记录性能数据并分析。
  • 负载测试:通过自动化工具模拟大量玩家同时使用角色的情况,测试服务器和客户端的性能表现。

示例:新角色性能测试流程

  1. 帧率测试:在不同配置的设备上运行游戏,记录角色静止、行走、战斗时的帧率。
    分析帧率数据,确保在低配置设备上帧率不低于设定的最低标准。
  2. 内存占用测试:在加载新角色时,监控内存占用情况,记录初始内存和长时间运行后的内存变化。频繁切换角色和场景,确保没有内存泄漏。
  3. 技能释放测试:测试角色的所有技能,记录每个技能释放时的帧率和CPU/GPU占用情况。连续释放技能,确保没有明显的性能下降。
  4. 复杂场景测试:在多人战斗场景中测试角色,记录帧率和资源占用情况。
    测试特效密集的技能,确保不会导致显著的帧率下降。长时间运行测试:
  1. 运行游戏超过2小时,定期记录帧率和内存占用情况。观察是否存在性能下降或内存泄漏。
  2. 用户体验测试:邀请玩家测试新角色,收集对角色性能表现的反馈。根据反馈调整性能优化,确保大多数玩家的流畅体验。通过上述全面的测试流程,可以有效检测和优化新角色的性能,确保在各种情况下都能稳定流畅地运

持续跟踪bug的修复进度,确保所有报告的bug都能得到及时处理。

2) 王者荣耀背包测试用例

  1. 背包界面的基本展示,进入、返回。
  • 左侧的7个标签:全部、最近获得、道具、礼包、体验卡、局内表现、铭文,这些分类按钮是否能正常点击切换,每个物品的类别是否正确。点全部是不是所有物品都显示了,每个类型的该出现在哪的就出现在哪,某个分类里不应该出现其他分类的东西。
  • 背包中每页显示多少个物品,背包为空的时候进入退出是否正常,少于一页是否能正常显示,多于一页是否能正常翻页。
  • 背包中有多个物品种类时,排序是否正常(要和策划、开发确认默认的排序是什么),反复进入、退出、用掉一两种物品,排序是否会乱。
  • 获得一个物品,检查这个物品是否正常放入背包,是否正确排序。在王者荣耀中,能够获得的物品包括:铭文、皮肤碎皮、英雄碎片、英雄体验卡、皮肤体验卡、双倍金币卡、双倍经验卡、改名卡、活动道具(喇叭、优惠券、限时播报和回城效果),每种写一条用例。
  • 使用一个物品,这个物品还有剩余,检查物品数量是否-1(以上所有物品都用一遍)
  • 使用一个物品,这个物品全部被用完了,检查背包内的物品是否消失,排在后一位的物品是否自动填补这个物品的空位。
  • 批量使用物品,但是不用完,检查物品数量,检查该物品的效果是否生效。
  • 批量使用物品,当某种物品用完时,排在后一位的物品是否自动填补空位。
  • 出售一个物品、批量卖出物品,照着使用物品的用例,把使用换成卖出再测一遍。
  • 当物品是铭文时,装备、卸下、分解铭文,检查背包里的铭文内容是否正常变化。
  • 物品叠加上限(如果有),这个要找开发确认,每一格最多叠加多少个,如果玩家有生之年能叠到上限,那么测一下达到上限时,再获得一个会怎样,是另开一格叠加,还是不再获得,必须用掉才能获得。(总之要有个处理方案,不能崩了客户端)
  • 接上,物品叠加到上限后,用掉或卖掉几个,再重新获得,能不能正常叠加。
  • 背包上限(如果有),同样找开发确认,背包一共有多少个格子,现有的道具种类能不能塞满格子,如果能塞满,那么测一下背包格子塞满的时候,再获得一种物品会怎样,是不是能正常提示背包满了?
  • 接上,背包满了之后,用掉或卖掉一种物品,再获得这种物品或者其他物品,是不是能正常获得了。

3)排位增加一个段位的测试点

测试点:
注意:
因为是针对某个点进行测试,因此主要看功能测试部分。

  1. 界面UI测试
    设计风格:是否符合大众审美,画风、故事情节、背景音乐、文字的契合度
    显示:图片的显示、文字的排版、布局等
    按钮等的可用性测试
  2. 功能测试
  • 新赛季后,原赛季中段位记录按照原有段位不变还是按照新规则划分到新的段位,如原最高段位中积分较低的玩家在新规则中可能会属于新增段位;
  • 展示全部段位晋级模式的模块中,是否都正确添加了新段位;
  • 原第4个段位晋级后,是否正确地升级到新段位,而不是最高段位;
  • 最高段位掉段后,是否正确地降级到新段位,而不是原来的第4段位;
  • 新增段位的段位礼包、奖励等是否更新;
  • 新增段位的头衔、等级显示和图标等是否在玩家主页、好友榜单、全服榜单等各个位置更新并正确显示;
  • 之前只能由最高段位或最高段位对应积分的玩家才能进入比赛或模式,新增段位玩家是否可以进入,进入规则的设置是否明确;
  • 进行排位匹配时,新增段位的玩家是否可以正常进行匹配;
  • 新增段位玩家匹配成功后、游戏开始前进行的设置或选择,如排位禁英雄,或具体游戏模式选择等是否符合排位逐级递增,复杂度和灵活度增大的规则;
  • 新增段位与其他段位玩家进行匹配时,所能邀请的其他段位范围是否符合规则,是否可以邀请规则范围外的段位的玩家,邀请失败是否有提示信息;
  1. 性能测试
  • 在游戏中,打开时间太长,或者游戏过程中出现卡顿都是会让玩家有厌倦感的。
  • 游戏中响应时间、是否出现卡顿情况,内存占有、耗电量、流量等。
  • 需要对服务器端的CPU、内存情况进行测试
  • 并发压力测试:长时间多用户在线,服务器的CPU、内存情况,
  1. 兼容性测试
  • 不同的系统、手机端和pc端、不同版本的兼容性,页面类考虑不同浏览器
  1. 安全性测试
  • 用户存档信息是否安全、完整
  • 禁止外挂
  • 合服时,信息的存储

4)凌晨四点,崩铁游戏上线一个新的任务,通同时删除一个旧的任务你会如何测试

  1. 新任务的功能测试
  • 任务创建:确保新任务可以被成功创建和接受。
  • 任务流程:执行任务的每个步骤,验证任务描述、要求、奖励等是否正确。
  • 任务完成:确保任务可以被成功完成,并正确触发奖励和状态更新。
  • 边界测试:测试任务的边界条件,如任务接受和完成的时间限制、资源限制等。
  • 异常测试:模拟任务执行中的异常情况(如网络断开、服务器重启等),确保系统能够正确处理。
  1. 旧任务的删除测试
  • 任务删除确认:确认旧任务已从任务列表中删除,且相关数据(如数据库记录)已清除。
  • 数据完整性测试:确保旧任务的删除不会影响其他任务或系统功能。
  • 回归测试:检查其他相关功能是否正常,确保任务删除不会引发新的问题。
  1. 综合测试
  • 兼容性测试:确保新任务在不同设备、操作系统和浏览器上都能正常运行。
  • 性能测试:测试新任务的性能,确保其不会导致服务器负载过高或响应时间过长。
  • 安全测试:确保新任务的上线不会引发安全漏洞,如任务数据的注入攻击、防止任务作弊等。
  1. 测试后的处理
  • 结果记录:记录所有测试结果,包括成功和失败的测试用例,分析失败原因并修复问题
  • 测试报告:编写详细的测试报告,包含测试覆盖率、发现的问题及其解决方案、下一步建议等
  • 上线前检查:在新任务正式上线前进行最后一次全面检查,确保所有功能和性能都符合预期
  1. 监控和反馈
  • 上线监控:在新任务正式上线后,密切监控系统运行状况,及时发现和处理潜在问题。
  1. 用户反馈:收集玩家的反馈,及时修复发现的问题和优化任务体验。

5)王者荣耀中,差不多有几个亿的用户,每个赛季的top100名单是如何获取的

  1. 架构设计
  • 由于玩家数量庞大,系统需要具备高可用性和扩展性。以下是一些关键点:
  • 分布式数据库:使用分布式数据库(如MySQL分片、Cassandra等)以处理大规模数据存储和查询。
  • 缓存层:使用Redis或Memcached缓存排行榜和玩家数据,以减少数据库查询负载。
  • 负载均衡:通过负载均衡器分配请求,以确保系统稳定性和高效性。
  • 数据流处理:使用实时数据流处理系统(如Apache Kafka和Apache Flink)以处理实时比赛数据和更新排行榜。
  1. 数据安全和隐私
    确保玩家数据的安全和隐私非常重要。以下是一些安全措施:
  • 数据加密:在传输和存储过程中对敏感数据进行加密。
  • 访问控制:严格控制对数据库的访问权限,确保只有授权人员和服务能够访问数据。
  • 日志监控:实时监控和记录所有数据访问和修改操作,以便检测和防范潜在的安全威胁。
  1. 详细获取的流程在于数据库的设计
  • 玩家信息表(players),存储所有玩家的信息
  • 排位赛记录表:存储每场排位赛的结果
  • 排位积分表:存储玩家当前的排位积分和段位信息
  • 排行榜表
  • 赛季信息表

6)测试一个rpg游戏的移动系统,这边用的崩铁举例子

这个RPG游戏的公测版需要进行测试,以下是一些可能需要测试的点
1.游戏的基本功能是否正常,例如角色移动、攻击、使用物品等。
2.游戏的难度是否合适,是否需要进行调整。
3.游戏的U!界面是否清晰易懂,是否需要进行优化。
4.游戏的音效和音乐是否符合游戏风格,是否需要进行调整。
5.游戏的剧情是否流畅,是否有bug或者逻辑错误。
6.游戏的网络连接是否稳定,是否会出现掉线或者延迟等问题
7.游戏的兼容性是否良好,是否可以在不同的设备上正常运行。
8.游戏的存档和读档功能是否正常,是否会出现数据丢失或者损坏等问题,
9.游戏的多人模式是否正常,是否会出现卡顿或者其他问题,
10.游戏的各种系统(例如技能系统、装备系统、任务系统等)是否正常,是否需要进行优化或者调整

7)匹配系统和战斗体验测试

  1. 测试用例编号:TC001
  2. 测试用例名称:匹配系统和战斗体验测试
  3. 测试类型:功能测试
  4. 优先级:高
  5. 前置条件:
  • 玩家账号已登录并且拥有至少一个已解锁的英雄。
  • 网络连接正常。
  1. 测试步骤:
  • 进入匹配界面

    • 打开游戏应用,进入主界面。
    • 点击“匹配”按钮,进入匹配系统。
  • 选择匹配模式

    • 在匹配界面选择“5v5排位赛”模式。
    • 点击“开始匹配”按钮。
    • 匹配玩家
  • 等待系统进行匹配,记录匹配时间。

    • 确认匹配成功后,进入英雄选择界面。
  • 选择英雄

    • 在英雄选择界面,选择一个已解锁的英雄。
    • 确认选择并等待其他玩家选择完毕。
  • 进入游戏

    • 确认所有玩家选择英雄完毕后,点击“确认”按钮。
    • 等待加载并进入游戏战斗界面。
  • 战斗体验

    • 检查游戏加载时间,确保在合理范围内(例如30秒内)。
    • 在战斗中执行以下操作:
      • 移动英雄
      • 使用普通攻击
      • 施放技能(包括主动技能和终极技能)
      • 使用召唤师技能
      • 与队友配合进行击杀
  • 观察帧率和延迟,确保游戏流畅运行

  • 结束游戏

    • 参与完整场次的战斗,直到游戏结束。
    • 记录游戏结束后的数据统计页面,确保数据显示准确。
  • 返回主界面

    • 确认游戏结束后,点击“确定”按钮,返回主界面。
    • 检查战绩显示是否正确。
  • 预期结果:

    • 玩家能够成功进入匹配界面并选择匹配模式。
    • 匹配系统能够在合理时间内(例如60秒内)匹配到玩家。
    • 玩家能够正常选择已解锁的英雄,并成功进入战斗界面。
    • 游戏加载时间合理(例如30秒内),战斗过程中无明显卡顿或延迟。
    • 战斗结束后,统计数据正确显示,玩家能够返回主界面并查看战绩。
  • 实际结果:
    (此处记录测试执行后的实际结果)

  • 备注:

    • 在不同网络环境(如Wi-Fi和4G/5G)下分别执行此测试用例,记录匹配时间和战斗中的网络延迟情况。
    • 此测试用例可重复执行,以验证不同英雄和不同匹配模式下的表现。
  • 附加测试:

    • 在测试中可观察是否存在异常退出、闪退等问题。
    • 检查游戏内购功能是否正常,确保玩家在战斗过程中可以使用购买的道具。

8)测试任务完成状态

  1. 测试用例1:测试任务完成状态
  2. 测试目标:验证角色完成任务后的状态变化
  3. 前置条件:
  • 角色已登录游戏
  • 角色在任务初始地点
  1. 测试步骤:
  2. 使用GM指令启动任务:/startquest 2001
  • 执行任务要求的操作(如打怪、收集物品)
  • 使用GM指令完成任务:/endquest 2001
  • 检查角色的任务日志和奖励物品
  1. 预期结果:
  • 任务日志显示任务已完成
  • 角色获得相应的任务奖励

4.2 游戏类型介绍&缩写

游戏类型

  1. MOBA 多人在线战术竞技游戏:王者荣耀,英雄联盟
  2. 卡牌策略类游戏:三国杀online、炉石传说等
  3. QQ炫舞:音乐舞蹈类,休闲类
  4. 回合制:梦幻西游:MMORPG
  5. 休闲益智类,消除类:开心消消乐、天天爱消除
  6. FPS 第一人称射击类游戏:反恐精英、穿越火线等
  7. TPS 第三人称射击游戏:绝地求生,吃鸡等
  8. 魔兽世界:MMORPG 大型多人在线角色扮演游戏
  9. 阴阳师:半即时回合制,RPG,卡牌,角色扮演

游戏缩写

  1. ACT: Action Game 动作游戏
  2. RPG: role playing game 角色扮演游戏
  3. STG: shooting game 射击类游戏
  4. SLG: simulation game模拟/战略类游戏
  5. FTG: Fight Technology Game 格斗游戏
  6. AVG: adventure game 冒险游戏
  7. MUG :MUSIC GAME。音乐游戏。
  8. PUZ/PZL : PUZZLE。益智解谜类游戏。
  9. RAC : RACING。赛车等竞速类游戏。
  10. RTS : REAL TIME STRATEGY。即时战略类游戏。
  11. SPG : SPORTS GAME。运动类游戏。
  12. TAB : TABLE。桌面游戏。
  13. MOBA:Multiplayer Online Battle Arena,多人在线战术竞技游戏,类DOTA游戏的统称
  14. LVG(Love Game):恋爱养成游戏
  15. RTT(Real-Time Tactics):即时战术游戏
  16. CAG(Card Game):卡片类游戏
  17. ETC :其他类游戏

4.3 列举玩过的三款游戏

1. 王者荣耀-经历&角色&优缺点

1)经历
MOBA游戏,游戏经历3年左右,集中游戏经历1年,排位最高星耀,蔡文姬(辅助英雄角色,二技能是控,包含被动技能在内有三个回血技能,堪称为“行走的泉水”)

2)蔡文姬介绍

招式技能用法
长歌行(被动)冷却值:0;消耗:0;被动:蔡文姬受到伤害时增加持续衰减3570%移速,持续2秒,同时每秒回复250530(+50%法术攻击)生命,持续2秒。该效果10秒只能触发1次玩法:蔡文姬在逃跑受到伤害的同时,对敌方的任何攻击都会触发被效果,减速敌人,能更好地进行撤退,小兵和野怪的伤害也能触发这个技能效果,可利用此效果进行支援gank留人
思无邪(1技能)冷却值:15/14.4/13.8/13.2/12.6/12;消耗:100;蔡文姬演奏乐曲,增加40%移速,同时为己方英雄每0.5秒回复60/72/84/96/108/120(+20%法术攻击)点生命,持续3秒,对非英雄单位造成50%效果。玩法:在技能范围内的友军能持续回复生命值,并提升移动速度和攻击速度,所以技能施放时尽量靠近多个友军,使得收益最大化。
胡笳乐(2技能)冷却值:10/9.6/9.2/8.8/8.4/8;消耗:70;蔡文姬发出音波在敌人间弹射,每次弹射造成270/324/378/432/486/540(+48%法术攻击)法术伤害和0.75秒晕眩,每束音波最多弹射6次,同一目标最多受到2次弹射效果,第二次弹射命中时将只造成25%的初始伤害和晕眩时间。玩法:这个技能在敌方英雄聚集的时候能发挥巨大的效果,能起到很大的控制作用,在面对追击反手释放时,命中率更高。
忘忧曲(大招)冷却值:60/55/50;消耗:120;蔡文姬释放琴音每0.5秒为范围内血量最低的友方英雄回复90/135/180(+50%法术攻击)点生命,持续5秒,同时为其增加250/375/500(+30%法术攻击)点物理和法术防御。玩法:团战时,尽量使技能范围包含更多的友军,能降低他们受到的伤害,敌人在大招范围内超过2秒能清空他们的护甲和魔抗,所以对于敌方的坦克英雄来说,这个技能会使他们相当头疼。
使用技巧(1)团战时先放出二技能控住敌方英雄,在适当时机发出撤退、进攻信号,让队友知道你的意向以配合进退,并且看准时机释放一、三技能,不要因为想留住技能而让友方被击杀,也不要因为害怕而让技能浪费。(2)尽量和输出英雄(射手)站在一起,可以辅助射手、帮助输出更好的击杀英雄。(3)随时注意友方英雄血量、位置和他/她附近的敌方英雄,以更方便快速支援。(4)多关注小地图,多清兵,不要一个疏忽让已方塔被推,而且毕竟蔡文姬基本上是靠着清兵发育的。(5)如果时间来不及,可以释放一技能加快20%的速度去支援 [1]。

3)优点
下限低,上限高,普及性好

  1. 良好的UI界面设计:精致的画风、恰到好处的背景音乐和优秀的故事情节,英雄以中国历代名人命名,有文化加持
  2. 易操作性:简单易操作,有良好的新手引导
  3. 竞技性:根据玩家水平匹配实力相当的对手,可以保持良好挑战性与竞技性
  4. 奖励或活动:有抽奖或者连续登录、节假日奖励机制,可以让玩家保持一个新鲜度,并且刺激每天玩耍
  5. 游戏平衡性:玩家之间的平衡性(优秀的匹配机制保证与水平相当的玩家竞技);游戏设置的平衡性(英雄、技能、道具的平衡性,不会一家独大或废物英雄)
  6. 普及性高:对手机性能要求不高,便携,社交效应,相关产业

4)缺点

  1. 卡顿闪退、页面不流畅等问题
  2. UI问题:画面或音乐加载不全,或人物与地图出现错误:如卡进墙里
  3. 匹配机制对胜率的过分干涉,比如连胜匹配较差队友等操作,虽然可能使整个游戏更佳平衡,但是从玩家的角度讲,游戏体验会变差;

2. QQ炫舞的社区- 经历&副本

1)经历
QQ炫舞:

  • 音乐类游戏,初级玩家,这类游戏以音乐特色区别于其他类型游戏,类似的还有节奏大师。QQ炫舞除了音乐比赛模式之外,还有多种其他类型的游戏模式,如休闲比赛类的躲猫猫和诸神黄昏,可以在社区和别的玩家一起交流、做任务,或者闲逛,加入公会性质的舞团后可以与成员一起做任务领奖品,可以种花和装修自己的家。

2)副本-出现原因

  • 早期的游戏没有副本,所以经常会出现抢怪,抢BOSS,甚至出现恶意PK,引发团战。这种行为导致大量玩家无法正常游戏。
  • 抢到BOSS的人,获得了更好的装备,战力得到提升,相互抱团,进一步垄断了地图上的优势资源。而普通玩家,等级升不快,好装备得不到,与高端玩家的差距越来越大,社会体系不平衡

4. 角色扮演游戏-最终幻想10

玩家扮演的光之战士,为了拯救世界展开冒险
1)背景设定
游戏设定于一个有三块大陆的奇幻世界。这个世界元素之力由四个元素水晶的状态决定,每个水晶支配地、水、火、风四元素中的一种。《最终幻想》的世界居住着多个种族,包括人类、侏儒、矮人、龙和机器人。多数非人类种族在游戏中只有一个“镇子”,虽然有时能在人类城镇或其他地方发现个别非人类。在游戏情节开始四百年前,一群人使用风之力制作了飞空艇和一个巨大的太空站,观者他们的国家随着风之水晶变暗而衰落。两百年后,飓风让以海洋文明为中心的神殿下沉了神殿,水之水晶变暗。地之水晶和火之水晶随后也变暗。一段时间后,贤者预言四位光之战士将拯救一度陷入黑暗的世界

2)游戏剧情

  • 游戏以主角,四名年轻光之战士出现而开始,他们携带着一个暗化的水晶。在开始,光之战士来到了科利尼亚王宫和卡欧斯神殿遗迹。在从邪恶骑士加兰多手中救出科利尼亚公主后,科利尼亚国王建好了可以让光之战士通向东方布拉伯港口镇的桥。光之战士在布拉伯港口打败了海盗,解放了这个城镇,并得到了可由自己任意使用的船。之后战士们完成了一系列任务并来到了外海。
  • 在来到几近废墟的默门多镇后,战士们击败了吸血鬼并得到了一颗宝石,并以此打开了通向贤者沙达洞窟的道路。从沙达处获得土杖后,战士们深入地之洞窟冒险,并击败了地之卡欧斯立奇。光之战士之后获得了独木舟,并到达格鲁格火山,击败了火之卡欧斯马利里斯。在从冰之洞窟拿到浮游石后,战士们得以乘坐飞空艇来到南大陆。在从试练之城拿到证明勇气的老鼠尾巴后,龙王巴哈姆特提升了战士的能力。战士们把妖精从妖精瓶中放出来后,拿到作为回报的空气之水,战士们得以击败在海底神殿水之卡欧斯克拉肯。在请学者乌尼解读一个刻有文字的石板后,战士门得知这是鲁非语。鲁非人给了战士们通向浮空城地亚马特的方法,战士们在这里击败风之卡欧斯地亚马特。随着四卡欧斯被击败,水晶恢复了光辉,卡欧斯神殿通向2000年前的入口开启。战士们在这里发现了加兰多,原来加兰多被四大卡欧斯送到了过去,而加兰多又用这种方式将卡欧斯送到了未来,用这种方式形成永生的时间回环。光之战士击败了混沌,继而打破了这种循环,返回了家乡。然而在循环终结后,光之战士改变的未来仍然是传说以外所未知的故事。

3)角色设定
游戏一开始有六个基本职业可供玩家选择,玩家必须从中创建四名角色组成队伍,确定后无法再更改。另外六个高级职业必须将“老鼠尾巴”交给巴哈姆特龙王之后才能转职

  • 战士:战斗中的赤色勇士,大部分武器及防具皆可使用。特长是力量,初期的中流砥柱。转职后成为骑士。
  • 修道士:磨炼意志修行的僧侣,擅长空手肉搏,能用的武器防具较少,不会魔法。特长是成长,缺点是防御力较弱,初期能力一般。转职后成为超级修道士。
  • 盗贼:背负盗贼之名,虽不会行窃,却擅长先制及逃跑,能使用部分武器及防具。特长是速度和幸运,缺点是攻击力较弱,初期能力一般。转职后成为忍者。
  • 赤魔术士:孤高的浪客,可使用大部分武器、防具和黑、白魔法。特长和缺点都是各项能力平均,初期综合实力最强。转职后成为赤魔道士。
  • 白魔术士:治愈系美少女,神灵的绝对信奉者,会使用中低等级的回复系、防御系白魔法,以及超度亡灵的攻击魔法。特长是智慧,缺点是攻击力低,大部分武器防具不能装备。初期队伍中的后勤部长。转职后成为白魔道士。
  • 黑魔术士:神秘的三角帽,神灵和恶魔的双重信奉者,会使用中低等级的攻击系、状态系黑魔法,特长是智慧,缺点是HP太低,大部分武器防具不能装备。初期队伍中的秘密武器。转职后成为黑魔道士。
  • 骑士:骁勇善战的重装备骑士,能使用几乎全部武器和防具,也能使用一部分低段的白魔法。拥有最高的防御力,HP和攻击力也非常出色,传统肉盾。
  • 超级修道士:修行得道的肉弹战专门家,仍然不会使用魔法,也无法装备大部分武器和防具。不过在LV30以后,除HP超高的优势外,双拳怪力见佛杀佛,典型的大器晚成。
  • 忍者:异国文化的忍者,能使用几乎全部武器和防具,也能使用一部分低段的黑魔法。拥有最高的速度和幸运,防御力较高,出手较快。
    赤魔道士:虽能使用更多的装备和魔法,但是优势已经减退,能力平均终成拖累,但不可否认,灵活的战术仍然是他最大的资本,实用性不亚于忍者。
    白魔道士:心怀悲悯的白魔法大师,能够使用全部白魔法,包括威力强大的“神圣”,后期恶战中的有力保障。HP和智慧较高,实用性很强。
    黑魔道士:除去三角帽的黑魔法大师,能够使用全部黑魔法,包括最高威力的“核融”,后期恶战中的清屏专业户。拥有最高的智慧,但HP仍然太低,实用性较强

4)角色属性
游戏属性分为等级、生命值、魔法值3种基本属性,力量、敏捷、智慧、体力、幸运、攻击力、命中率、防御力、回避率9种状态属性。各项属性均可通过提升等级、更换装备来加强

5)战斗系统
在野外地图或迷宫中移动时,玩家将会随机遇敌人进行作战。游戏的战斗为第三人称回合制,战斗每一回合开始前,玩家将通过菜单为各个角色下达攻击、发动魔法、使用道具或是逃跑指令。攻击命令的目标以组为单位选择,玩家可以指定角色攻击某一组敌人,而该角色会随机攻击此组敌人中的一个。当玩家击败全部敌人时,会得到金钱、经验值,同时还有一定几率获得怪物掉落的道具
6) 游戏模式
游戏中玩家将扮演主角在不同的大陆中冒险,体验主角的成长过程。游戏中大部分时间用来和城镇居民对话,并通过搜集信息来知道更多的地点、事件与秘密。玩家需要对这些暗示做下记录以便之后参照
7)交易系统
游戏中交易只有一种,NPC交易。玩家与各商店NPC对话,消耗“G”就能获得物品。

8)测评
该作是在任天堂8位机上所发布的《最终幻想》系列鼻祖,游戏的世界架构简单,第三人称回合制战斗画面,第一次让玩家看见了主角的样子和招式。而诸如“飞空艇”、“职业转职”等设定也为以后《最终幻想》系列甚至很多RPG游戏指定了一个发展的方向。虽然画面粗糙、世界观和任务情节比较单调。

  1. 晶球盘系统
  • 晶球盘是本作的角色养成系统,全盘总共有828个格子,角色通过消耗S.LV来移动格子(S.LV可以在战斗胜利中获得的AP点数累积获取),在没走过的格子里每移动1格消耗1点S.LV,在已经走过的格子里每移动4格消耗1点S.LV。所有的角色都是在同一个晶球盘里养成,所有的格子都是共通的,别的角色移动过的格子也能重复移动,并不会有阻碍现象出现。说到阻碍其实也有的,就是有一些特殊的格子会有LV1~LV4的图标,这些格子只能使用对应LV的黑色晶球才能解除。黑色晶球可以在特定场景的宝箱和某些BOSS战获得。这些获得场景会在流程攻略中说明。
  • 在特定的格子里会有各式各样的图标呈现,这些就是角色们的能力养成值,这些能力格子通过消耗晶球点亮,(晶球可以通过在战斗,宝箱,NPC赠送获得。)点亮后就能获得相对应的能力。其中包括增加力量,魔力,物理防御,魔法防御,提高HP,MP值,以及学习特定的技能魔法等等
  • 晶球盘的移动非常讲究,每个角色应该设计对应的路线图才能使得角色能力更优秀,比如像提达,奥龙这些攻击型角色就应该走攻击型的路线图,(就是晶球盘中剑类型图标较多的路线图),走魔法型路线图就是完全作死的节奏。建议玩家先观察一下晶球盘图标分布在确定角色要走的路线,当然走错了也不用急,只要多花点时间从战斗中累积S.LV返回到正确的路线里重新走回就好了。
  • 改盘顺序有很多种,我个人是按照A9VG的攻略,命中—>物攻–>物防–>速度–>魔防–>闪避–>魔攻–>MP–>运气–>HP 但是,魔攻晶球由于是打黑布丁,比较难刷,所以我个人建议如下:前面改盘的时候,遇到+4魔力的晶球,可以保留不要消除,这样可以少打一点魔力晶球,保证较高的魔力值后,用Yuna召唤阿尼玛(先让它学会加速和加魔法防御技能),开场就给自己加速和魔防,然后每次都用痛击技能(普通攻击下面的那一个选项),每次99999,比较容易刷.
  1. AP点获得方式
  • 下面我说一下AP点获得方式,AP点只能在战斗胜利中获得,凡是所有参与战斗的角色均可获得AP点,没有参与的角色不能获得,临时换人而不参与战斗的也不能获得,在战斗中中了石化和死亡的角色不能获得,临时逃走或被敌人打出战斗区域的角色不能获得。有部分敌人的行动无法获得AP,比如逃跑了的敌人,自爆的敌人,敌人的召唤兽都不能获得它的AP点。AP获取的点数和人数无关,也就是说每场战斗获取的AP点并不是人数越多就越少,是根据人物获得的S.LV的等级挂钩。所以在与大型BOSS战时应把每个角色都至少参与过一次战斗,胜利后所有人都会获得相应的AP点。
  1. 角色-提达
  • 配音:森田诚一
  • 年龄:17岁
  • 使用武器:剑
  • 七曜武器:最终究极武器
  • 七曜武器攻击说明:HP越高,攻击力越高。
  • 七曜武器装备属性:回避反击,魔法反击,3倍集气,9999伤害界限突破
  • 剑技(必杀技):螺旋斩,畜集&突击,能量雨,水斗球王牌
  • 必杀技发动条件:当屏幕出现时,游标会在条框里游动,只要在规定时间内按O键把游标停留在黄色区域内就能完成发动条件

人物介绍

  • 提达是普拉斯卡的护卫杰克特的儿子。正义感十足,帅气的水球队员 同时在为尤娜牺牲自己换取人们平安的做法感到忧伤, 同时对于父亲的问题总是在掩饰内心的想法,虽然恨杰克特但是却是深深爱着自己的老爸,明知打败‘辛’之后自己也会消失还是奋力而为。“提达”在冲绳方言中是太阳的意思

5 .崩铁介绍-回合制游戏

1)战斗

  • 单-攻:单体伤害,这类技能只能攻击到一名敌人,手动选择目标
  • 群攻:可以攻击全部的敌人
  • 扩散:介于单攻和群攻之间,会对主目标造成伤害,也会对相邻的目标造成伤害,伤害倍率会低于主目标
  • 强化:在原有的技能上进行强化,比如物理主角的大招可以选择单攻也可以选择扩散,对应的强化技能就是普攻和战机,强化之后的伤害倍率和原有技能的倍率无关,是有一套单独的倍率,强化更多是给自身增加效果
  • 回复:就是回血
  • 防御:比如护盾
  • 辅助:buff类技能,给队友施加增益效果,增加攻击力,增加双爆‘
  • 防害,和辅助对应,给敌人上debuff技能,可以减少对面的攻击,也可以减妨,比如佩拉会接触敌人的增益效果,魔阴身的复活buff,佩拉可以解除
  • 持续伤害,风化、裂解、触电、灼烧等都属于持续伤害,其实是debuff ,给敌人挂上的时候,轮到敌人的行动回合时,持续伤害就会自动触发一次
  • 弱点击破:物理角色会给敌人挂上裂伤,风系角色会给敌人挂上风化,雷系角色会给敌人挂上触电
  • 三月七的追击大概是全崩铁里最特殊的追加攻击了。其他角色,如:姬子只要被动叠到一定层数就会发动追加攻击、黑塔只要敌方任意怪的血量百分比小于等于50%时,就会发动追加攻击。可是三月七触发反击的条件是必须敌方任意怪攻击我方存在盾保护状态的角色时,发动追加攻击(不一定要三月七给的盾才会触发)

2)崩环介绍

  1. 玩家将扮演星穹铁道的一员,驾驶着高科技的星舰,在宇宙中穿梭,探索未知的星球,揭示隐藏的秘密,并与各种敌人战斗。
  • 游戏玩法
  1. 角色养成
    角色收集:玩家可以通过抽卡、任务等方式获得各种角色。每个角色都有独特的技能和背景故事。
    角色升级:通过战斗和任务获得经验值,提升角色等级,解锁新的技能和能力。
    装备和强化:收集装备并进行强化,提高角色的战斗力。
  2. 战略战斗
    回合制战斗:游戏采用回合制战斗系统,玩家需要根据敌人的特点和战斗环境,合理安排角色的技能和攻击顺序。
    策略组合:不同角色有不同的技能和特性,玩家需要搭配出最佳的阵容,以应对各种战斗挑战。
    技能释放:每个角色都有多种技能,包括普通攻击、必杀技和特殊技能,玩家需要根据战况选择合适的技能释放时机。
  3. 探索与任务
    星际旅行:玩家可以驾驶星舰在宇宙中探索,发现新的星球和区域,每个星球都有独特的环境和挑战。
    主线剧情:游戏有丰富的主线剧情,玩家通过完成任务,逐步揭示宇宙中的秘密和崩坏的起源。
    支线任务:除了主线任务,游戏中还有大量的支线任务,提供额外的奖励和剧情补充。
  4. 多人合作
    组队冒险:玩家可以与好友组队,共同完成任务和挑战,享受团队合作的乐趣。
    公会系统:加入或创建公会,与其他玩家一起交流和互动,共同发展壮大公会。
  5. 事件和活动
    定期活动:游戏会定期推出各种限时活动,提供丰厚的奖励和独特的游戏内容。
    节日庆典:在特定的节日期间,游戏会举办庆典活动,推出特别任务和活动,增加节日气氛。
  6. 游戏特色
    高品质画面:游戏采用精美的3D画面,角色和场景设计精致,带给玩家视觉上的享受。
    丰富的剧情:游戏有深度的剧情和背景设定,故事情节引人入胜,玩家可以沉浸在游戏世界中。
    多样的玩法:结合角色养成、策略战斗和星际探索等多种玩法,提供丰富的游戏体验。
    社交互动:游戏中有多种社交互动方式,包括组队冒险、公会系统等,增强玩家之间的互动。

3)氪金池&抽奖卷

  1. 定义:随机性、稀有度、付费选项
  2. 优点:收入来源、增强游戏体验、持续更新和增加新的氪金池内容,保证完全的兴趣
  3. 缺点:过度消费、平衡性问题(影响游戏公平)、成瘾性
  4. 如何平衡氪金池:透明性,让玩家知道每种物品的获取概率;适度监控;游戏内也可获得
  5. 游戏的氪金池分为:新手池、常驻池、up池、武器池

抽奖卷
通票和专票两种

4)角色属性

战斗属性和命途
  1. 分战斗属性和命途,命途每个都有自己的特点,设计的很成功
  • 毁灭:输出职业,有单有群
  • 智识:输出职业,群伤输出职业
  • 巡猎:输出职业,单体爆发,高速
  • 同谐:辅助buff、拉条、提速
  • 虚无:debuff职业,控场
  • 存护:肉盾,提供全体护
  • 丰饶:奶妈,复活
队伍配置
  1. 生存,一些生存角色还带辅助能力,比如符玄,霍霍,罗刹等,比较好用。
    但要注意,高难里的模拟宇宙怪物伤害非常高,有可能出现满血即斩杀线的情况,所以这种情况下有减伤/盾的生存位为最优。具体有符玄,白露,杰帕德,火主等。

  2. 辅助,就目前的同协辅助来说,我只推荐带阮梅,其他的同协加成在模拟宇宙里用处都不大,唯一值得说的就是布洛妮娅,有一个拉条功能,但模拟宇宙里也有拉条,巡猎,繁育都有,也不算特别稀有。如果没有阮梅的话,更推荐带虚无辅助,能更多地触发祝福效果来补伤害。比如瓦尔特,佩拉,银狼等。可以带上两个。

  3. 主C,主C的选择决定了流派。目前已知比较强力的流派有:
    繁育:龙丹,青雀等;
    智识:银枝,景元,姬子等;
    欢愉:克拉拉,景元等;
    虚无:卡夫卡等;
    记忆:镜流,三月七等;
    存护:杰帕德,三月七,火主等;
    丰饶:罗刹,霍霍,白露等;
    毁灭和巡猎都比较中庸,不弱但是没有特别适配的角色。
    主c,副c,辅助,盾奶

常用角色
  • 主角后期会获得第二个命途,存护
  • 三月七练到20就可以放弃了,后期没有给单体盾位置
  • 娜塔莎作为一个唯一的四星奶妈,后期非常重要
  • 丹恒可以一直升,在没有合适5星主c情况下
人物技能
三月七不同于只能套薄盾的火主,三月七的单体护盾厚实持久,兼具嘲讽,但很少有怪能一击打穿,同时她的终结技对同属性弱点的敌人,有不错的破盾和全体冻结效果,战技还能解控,在后期6星魂还能给套盾队友回血,一个能套盾、能解控、能回血的三月七,谁能不爱
娜塔莎在一个回合制团队作战的游戏中,奶妈的重要性是毋庸置疑的,更何况还是一个免费赠送、人人都机会得到的四星奶妈角色,放心大胆的培养准没错,哪怕后期出个白鹭,但依旧无法完全遮盖她的光芒,因为作为奶妈,她不仅能回血,还能解控,这样一个能解控的奶妈,可以说独一无二。
最强辅攻王,停云她的一身技能都用在了帮助队伍上,普攻积累战技点,因自身携带的行迹,所以普攻也有额外增伤的特殊能力,战技给单一队友加攻击力,加一次可以用3个回合,不耗费战技点,终结技能够快速为单一队友回复50点能量,连续两回合为队友增伤,在队伍急需回血时给奶妈充能。
“六星真神”艾丝妲她强悍的增伤能力不输停云,注意这个增伤不是针对单个队友,而是全队,不过低命艾丝妲蓄能层数容易掉,需要不停用战技补,所以对战技点的消耗有点大,但艾丝妲还有个优势,就是为全队提速,并持续两回合,这在星铁里是独一份的存在,一位能增伤、能提速的辅助,还是挺有价值练的。
青雀量子属性的青雀非常适合混沌回忆,她是通过强化普攻打出高额的群体伤害,有非常不错的对群能力,很适合用来清杂,战技可以立即抽牌,获得一个额外回合,不过缺点也很明显,一是比较费战技点,二是运气成分很重,如果释放战技摸不到想要的牌,那就比较悲催了。
丹恒最强的风属性对单输出角色,游戏开局赠送的四星角色,他的战技能百分百减速单体敌人,终结技能造成高额的风属性伤害,这个伤害对处于减速状态的敌人,还能够再提高30%,是个非常适合打大怪boss的角色,缺点是对群能力不行。

1)星琼列车

人物性格
姬子“好啦,打起精神来,这就是我们要开拓的新世界!”;配音:林簌(汉语),田中理惠(日语);充满冒险精神的科学家,少女时代在故乡遭遇了搁浅的星穹列车。
瓦尔特老成持重的前逆熵盟主,继承了“世界”之名,曾屡次拯救世界于灭亡的边缘。灾难结束后,瓦尔特一度卸下命运交付的重担,成为一名动画分镜师。然而圣方丹事件结束后,瓦尔特被迫与事件始作俑者去向星门另一侧。
丹恒清冷寡言的少年,持有名为“击云”的长枪,于列车漫长的开拓之旅中担任护卫;丹恒对自己的过往始终讳莫如深,他与列车同行正是为了摆脱自己曾亲手造就的一切
三月七精灵古怪的少女,热衷于这个年纪的女孩子应当“热衷”的所有事,比如照相。从一块漂流的恒冰中苏醒,却发现自己对身世与过往都一无所知。短暂的消沉之后,她决定以重获新生的日期为自己命名
布洛妮娅布洛妮娅从小接受着严格的教育,具备一名“继承人”所需的优雅举止与亲和力;但在看到下层区的恶劣环境后,未来的最高决策者逐渐生出了疑惑

2)贝洛伯格

人物性格
杰帕德忠诚并非天生的美德。被效忠之人也需拥有相应的资格。”配音:马洋(汉语),古川慎(日语)高洁正直的银鬃铁卫戍卫官,出身于血脉高贵的朗道家族。在时刻遭受风雪侵凌的贝洛伯格,人们的衣食住行尚能如旧

3)空间站「黑塔」

人物性格
阿兰不善言辞的空间站“黑塔”防卫科负责人。虽然不懂科研,但为了保护珍视研究的空间站科员顺利完成他们的研究,阿兰可以拼上性命。他早已习惯疼痛,并将负伤视作勋章。也只有抱着佩佩时,男孩才会放下戒备,露出难得一见的笑容
黑塔空间站“黑塔”真正的主人。身为湛蓝星智商最高的人类,只做自己感兴趣的事,一旦失去兴趣就立刻走人——空间站就是最好的例子。

4)星核猎手

人物性格
卡芙卡在星际和平公司的通缉档案里,卡芙卡只留下了名字和“爱好收集大衣”的纪录。人们对这位星核猎手所知甚少,只知道她是“命运的奴隶”艾利欧最信任的成员之一
银狼将宇宙视为游戏的超级骇客。无论怎样棘手的防御系统,银狼都能轻松破解。她与“天才俱乐部”螺丝咕姆的数据攻防战,现已成为骇客界的传说

5)仙舟「罗浮」

人物性格
景元位列帝弓七天将之一的“神策将军”,外表懒散、心思缜密。不以危局中力挽狂澜为智策,因此在常事上十分下功夫,以免节外生枝。因其细心谋划,仙舟承平日久,看似行事慵懒的景元反被送上绰号“闭目将军”
罗刹“这具棺柩非我之物。在下只是受人所托,将其遗体送回罗浮安置而已,金发俊雅的年轻人,背着巨大的棺椁。身为天外行商的他,不幸被卷入仙舟罗浮的星核危机

6)银河

人物性格
真理医生直率而自我的博识学会学者,常以奇怪的石膏头雕遮蔽面容。自幼便展露出过人的才智,如今却以「庸人」自居。坚信智慧与创造力并不为天才独有,致力于向全宇宙传播知识,医治名为愚钝的顽疾

5)战斗属性

战斗属性介绍
物理使用物理属性造成弱点击破时,会造成物理属性伤害,并施加裂伤状态。裂伤能造成物理属性持续伤害
使用火属性造成弱点击破时,会造成火属性伤害,并施加灼烧状态。灼烧能造成火属性持续伤害
使用冰属性造成弱点击破时,会造成冰属性伤害,并施加冻结状态,冻结会使敌人无法行动,造成冰属性附加伤害
使用雷属性造成弱点击破时,会造成雷属性伤害,并施加触电状态。触电能造成雷属性持续伤害
使用风属性造成弱点击破时,会造成风属性伤害,并施加风化状态。风化能造成风属性持续伤害
量子使用量子属性造成弱点击破时,会造成量子属性伤害,并施加纠缠状态。纠缠会使敌人行动延后,并在下个回合开始时对其造成额外的量子属性附加伤害,当其受到攻击时,会使该额外伤害提高
虚数使用虚数属性造成弱点击破时,会造成虚数属性伤害,并施加禁锢状态。禁锢会使敌人行动延后,同时使其速度降低

6)养成系统-行迹、遗器、光锥

行迹、遗器、光锥(会标识命途,只有该命途的角色穿上才会触发面板效果)
技能、装备、武器

6) 游戏是赚取里程

  • 游戏的主要任务就是赚取里程
  • 通过里程,能够提升开拓等级(指挥官等级)
  • 开拓等级达到一定阶段就可以提升均衡等级(大世界等级)
  • 随着均衡等级的提升,资源本的产出品质和数量都会增加,同时模拟宇宙获得的星琼奖励也会增多,角色等级的上限也会收到均衡等级的限制,打怪也会有等级压制,角色满级80级,怪物最高90级

7)历程获取途径-主线任务、支线任务(完成后的隐藏活动)、每日任务、开宝箱、消耗体力

总结

  • 空间站「黑塔」

    • 模拟宇宙
    • 寰宇蝗灾
    • 其他任务
      • 复兴之路
      • 致:黯淡星
      • 触不可及
      • 安魂弥撒
      • 封锁扇区
  • 雅利洛-Ⅵ

    • 拳台即戏台
    • 角斗士
    • 玩法任务
      「拟造花萼(金)•回忆之蕾」
      「拟造花萼(赤)•同谐之蕾」
      「侵蚀隧洞」
      「凝滞虚影」
  • 其他任务

    • 无人接听
    • 盼你在此
  • 仙舟「罗浮」

  • 丹恒的故事

    • 扶灵游贾,仗剑新卒
    • 十王敕命,劫余同行
  • 动物凶猛

  • 其他任务

    • 蝮蛇鸩鸟,万寿迢迢
    • 以盲为明,天之僇民
    • 游辞巧饰
  • 匹诺康尼

  • 钟表把戏

    • 钟表把戏:麦考先生
    • 钟表把戏:奥科萨娜
  • 小镇上的大人物

    • 十三只钟
    • 小镇上的大人物•一
  • 其他任务

    • 梦与钟表维修艺术•一
    • 想象一朵未来的玫瑰
    • 树海归于谧宁
    • 外包工
    • 零片酬导演
    • 终末鼻烟胶卷
    • 退房
凝滞虚影任务
  • 名称:空海之形•凝滞虚影
  • 地点:空间站「黑塔」 - 基座舱段
  • 开拓力:消耗30点
    你需要将开拓等级达到30级,并将均衡等级提升至2级。任务的具体步骤如下:
  1. 选择任务均衡的试炼。
  2. 通过地图来到残响的回廊。
  3. 消灭遇到的两个怪物。
  4. 吐露罩将会开启凝滞虚影任务。
    每个凝滞虚影副本都有对应的位置,第一次解锁传送功能需要到达该位置。凝滞虚影副本的掉落道具和角色突破材料都是不同的。如果你已经完成了所有支线任务,可以选择使用背包里的燃料换取体力,或者捡宝箱来获取奖励。捡宝箱是免费的,而且一些宝箱还可以开出紫色遗器,在前期非常有用
支线任务
空间站黑塔-模拟宇宙
  1. 首先是一阶段。
    这个时候只要你拿上了解除负面效果的祝福就没有问题,只要在卡芙卡将我们的其中任意一个角色被控制的一刹那,立即释放回响就可以,在没被控制之前只要带上一名奶妈可以不用着急着去释放回响,因为丰饶毕竟和别的回响不一样,它本身不具备输出能力,主要提供辅助,所以在合适的时机释放就可以了
  2. 第二阶段。
    这个阶段就比较特殊了,卡芙卡会随机给我们的两个角色施加暗示,回合一到,卡芙卡会在这两个角色里面挑随机一个角色进行控制,而一阶段是直接控制一个角色,所以我们就有时间来解除我们角色身上的这种负面效果,提前防止被控制。(被暗示的角色在头像上方会出现一个爱心一样的图标,这里我没截上呜呜呜)
  • 至于是什么时候会被控制,可以去看看左边的行动条,我们可以看到在左边最底下有一个蜘蛛一样的图标,这个行动到了如果没有及时解除负面效果就会角色被控制,所以我们不用着急,只要在它之前释放回响就可以了。这里要补充一点的是如果我们拿到了两个回响,可以在行动条里面额外出现一个回响,可以很完美地辅助我们来摆脱负面效果
  1. 第三阶段。这个阶段其实没什么好说的,就是被施加暗示的角色从两个变到了三个(这里我终于截上了hhh),只要回响运用时机合理完全是可以过的。

8)崩铁世界全攻略

  1. 1-19第1天,均衡0
  • 黑塔空间站
  • 两小时之后就可以到达雅利洛6号(会收到黑塔的直线要求去玩模拟宇宙,建议稍后玩),在这里开启体力消耗玩法:拟造花萼,(消耗体力是重要的里程来源,每六分钟恢复1点,每天240点,比原神快,转换率是1:5)
    • 这时候已经到达7级了,可以领行疆之志的10抽奖励了,拿着10抽直接all in 新手池,
    • 之后是11级,下个主线要等14级才可以开启,就可以去宝箱收集、做支线任务、模拟宇宙的任务也可以坐一坐。
    • 12级开启元神委托功能,相当于元神的探索派遣,推荐无脑选择经验书、信用点、以太,是基础资源,会一直缺;
    • 13级升级解锁大月卡,相当于季票,通行证一样的东西,会收到【列车长馈赠】的支线
    • 回到列车跟帕姆对话,领取开拓等级奖励,每升一级就可以拿到,有星琼、有通票、也有体力药
  1. 20-29第2-5天,均衡1
  • 第二天可以达到20级,均衡等级为1。会收到【均衡的试炼一】主线。此后会开放角色星际材料本,现在先不用打。20-29之间还是刷经验书。主线推完【不擅长告别】这一步,下一步主线任务【在屋外的黑暗中洗涤】需要24级,这时候继续开宝箱,做支线
  • 第三天,主线做到【从凶险和泥泞的沼泽中】大概一半左右,就会开启【力站余响】,也就是周本,周本每周能刷3次,会掉落行迹升级材料,奖励同样跟均衡等级挂钩。
  • 过完雅利洛的主线后会再次卡等级,下个任务【旅进青霄不速之邀】需要29级,到达之后就可以进仙舟了,均衡等级到达2
  1. 30-39,第6-11天,均衡2
  • 开放【凝滞虚影】,也就是角色等级突破材料行迹材料刷到3级就够了
  • 均衡2到3等级的提升率为,金币25%,经验本25%,这两个提升率一直都是一样的
  • 信用点额外有5个方法可以获得
  • 40级之前遗器本都是不出金的,角色用的仪器全部用宝箱开,能开出紫色的,可以把头部和手部升满,这两个词条固定的是生命值和攻击力,升了不亏,后续还能当狗粮喂给其它遗器。均衡五级刷遗器
  1. 40-49第11-24天,均衡等级3
  • 遗器本就能稳定出1金了,可以给主c随便刷一刷(根据主c的属性),遗器上面会显示对应属性伤害加成的
  • 其它时间刷行迹材料,给主c的技能和光锥升满
  • 剩下的体力刷凝滞虚影
  • 角色突破60级会消耗掉大量的材料,升到均衡4再刷是来不及的,而且提升率只有33%,其它材料本的提升率都比他高
  1. 50-59第25-55天,均衡4级
  • 先刷行迹材料,把两队,两个主c的行迹和光锥升满,辅助不要升普功,其他人的光锥拉到60级就行
  • 养成切记雨露均沾,由于深渊分上下两层,需要两队8个人,资源会非常紧张
  • 遗器会出1到2金,爆率大概在1.5左右,给主c刷一条金色的,只要主词条对就行
  • 继续刷经验书和信用点,到这里几乎不会再提升了
  1. 60-64,均衡等级5
  • 遗器本可以稳定双金了,可以爆刷遗器了,8个人全部换成金色的,辅助副c奶妈只要主词条对就行。主c开始追求副词条的双爆了
  1. 65-70,均衡6
  • 遗器本多了概率3金,三金概率很低
  1. 角色养成计算
  • 5星角色加光锥需要4770800信用点,三级经验书需要289本,养8个人意味着以上×8
  1. 模拟宇宙+深渊

缺点

  1. 缺点①角色相似度太高,审美差异太小了。先不求是否复合铁道穿越多文明多元宇宙多形态的背景,有些角色只是换了一件颜色区别不大的衣服,角色的面部五官都是统一的审美(希露瓦,布洛妮亚)。应该是不同星球会给我一个新的期待,新的样貌,是不是应该拓宽一下,吸引更多人群呢
  2. 缺点②回合制技能设计比较平庸,角色是常规的定位,配置队伍其实不需要做一些策略性的思考,看一下属性是否相克,等级根据场景;更多建议:技能有很多可以做的地方:可不可以做单双回合不同机制的技能,能不能做切换形态的大招,能不能对不同数量的敌人有不同的效果;buff可不可以对不同类型的队友有不同的效果,但是目前配对的策略还是很少
  • 复杂的地方:比如缺点③名词系统太过于繁琐,真的不太想记忆,但是有一些新的叫法行迹、遗器、光锥这种还是很吸引人,复合设定的
  1. 缺点④支线的剧情太无聊,导致堆积,会影响积极性:没有配音,会差一些,可以根据成本以及与主线的区分,换一种形态的解说
  2. 缺点⑤主线剧情以对话展开,有形态和运镜的变化是否可以多加一下效果,眼神几乎是没有交流的
  3. 缺点⑥惊喜感不足:比如抽卡系统,列车会提前冒紫光,已经知道结果了
  4. 缺点⑦从不玩这类游戏的角度想
  • 回合制不是主流
  • 巨大的文本很多人不会去看,重文本的游戏,感受到他的多样性和核心体验,门槛还是很高的
  • 还有很多需要思考的点才能发现的细节,还有很多不出现任务列表的任务
  • 很多梗需要更多的阅历理解
  • 不想了解游戏的世界观,游戏地图等,可能因为抽卡,新鲜但是不是持久的。相信日后会有折中的方案,这种冲撞的方式也比较常见,比如无聊的纪录片使用流量明星等
  1. 地图不能

优点

  1. 文本的质量
  • 黑塔元宇宙的记忆跑就写了很多有趣的东西,有住在巨型哺乳动物肠道内的国家,有爱人被邪教蛊惑,最后被邪教绑在柱子上烧死的普通人,有吞噬行星的巨型怪物
  • 很多互动道具:垃圾桶和路灯,互动文本很有趣,悠闲感
  • 梗的丰富性,代入感比较强
  1. 回合制
  • 特效和动作都设计的不错,镜头设计
  1. 模拟宇宙的玩法
  • 单机肉鸽游戏给人的感觉
  • 流派很多:特效流、冰冻流、护盾流
  • 观察任务的选择对剧情发展的影响·- 不在主线的支线任务,需要玩家探索,仙舟的七只走失的物流鸟,没有任何提示,全称需要自己去寻找
  1. 支线的乐趣
  • 仿生人,科幻背景色彩
  • 虎克的角色支线:结局直接抄袭的是欧亨利的麦琪的礼物
  • 好的致黯淡星,为爱之人跨越时空峡谷追求恋爱
  1. 没有PVP
  • PVP主要是利用玩家胜负、攀比的心理,利用氪金变强的性质,一步步走向不公平的恶性循环的游戏:在PVP鼓励下,平民玩家变氪金玩家,会丧失游戏体验退出游戏,为了继续吸引平民玩家,保证氪金有继续欺负的对象,会采用增加游戏内福利,氪金老发现自己的福利性价比不高,也会退坑,平面玩家再怎么玩也追不上氪金老,也会退坑,这就是恶行循环
  • 很多回合制游戏,通过间接购买的方式,比如玩家要相互交换设备提高游戏强度。玩家也可以通过时间和运气达到相同的机制
  • 崩铁没有PVP我认为是一个优点,从长期发展来看,它保证了玩家的游戏体验,但是也会有负面影响,或许需要设置一些其它规则达到与PVP相同的效果

4.3 软件测试和游戏测试的区别

游戏测试与软件测试的区别在于:

  • 软件测试主要验证和确认软件功能是否符合预期,关注正确性、稳定性和兼容性;
  • 而游戏测试更关注用户体验,如可玩性、流畅性、难度平衡和故障率等

4.4 开服测试

是指在游戏开发的最后阶段,游戏公司向公众开放游戏服务器进行测试的一种方式。目的是通过大规模玩家的参与,发现并解决游戏中的问题,确保游戏在正式发布时更加稳定和完善

  1. 封闭测试(Closed Beta Test): 只邀请少部分玩家参与测试。这些玩家可能是通过申请、抽签、邀请等方式获得测试资格的。这一阶段主要用于发现游戏中的重大问题和漏洞。
  2. 开放测试(Open Beta Test): 对所有玩家开放,不再需要申请或邀请即可参与。这一阶段的主要目的是通过大量玩家的参与,测试游戏的服务器负载、网络稳定性以及游戏内容的平衡性。
  3. 压力测试(Stress Test): 有时会在开放测试之前或期间进行,主要是为了测试服务器在高负载下的表现,以确保正式发布时服务器能承受大量玩家同时在线。

4.5 游戏测试常见bug

玩过的游戏中遇到的bug、原因、严重等级排名等

  1. 画面卡顿、APP闪退的问题,多见于对手机或电脑性能要求较高的游戏中;
  2. 地图建筑物建模粗糙,有时会看到中空的建筑物,或者玩家控制的人物卡入、掉入建筑物中;
  3. 链接跳转有问题但对游戏影响较小的情况:比如炫舞躲猫猫模式,在每局游戏结束后会直接跳出到重新选择游戏模式的界面,随后又自动跳入上一局选择的游戏模式中,中间选择其他模式时图标可点,但是不会跳转到新的游戏模式,个人认为这属于链接跳转的bug。
  4. 客户端分辨率与电脑分辨率不一致,应属于兼容性不佳的问题:比如梦幻西游的客户端可以自行设置游戏画面分辨率,且容易碰到无法选择与电脑分辨率相同选项的情况,这会导致很多问题,如退出游戏全屏后,电脑显示的分辨率也出现问题,某些时候会出现游戏画面放大后只能看到部分界面的情况,且没有调试的选项,只能退出客户端重新进入等。

手机游戏中的一般、严重、致命bug都有什么,举例

  1. 一般:画面、音效的缺失或错误,影响游戏体验,但不影响整体的游戏;
  2. 严重:闪退、卡屏、低帧、响应时间过长、网络延迟等,比较严重影响游戏体验,但忍受这些bug后仍可以进行游戏;
  3. 致命:兼容性问题、用户账户不安全、用户隐私泄露、用户数据丢失、盗号等,导致超过用户底线、无法正常游戏。

4.6 外挂

  • 定义:所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作、修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩将。
  • 外挂分类:游戏外挂的设计主要是针对于某个游戏开发的,我们可以根据它针对的游戏的类型可大致可将外挂分为两种大类。
    • 一类是将游戏中大量繁琐和无聊的攻击动作使用外挂自动完成,以帮助玩家轻松搞定攻击对象并可以快速的增加玩家的经验值。
    • 另一类是由外挂程序产生欺骗性的网络游戏封包,并将这些封包发送到网络游戏服务器,利用这些虚假信息欺骗服务器进行游戏数值的修改,达到修改角色能力数值的目的。
    • 另外,现在很多外挂程序功能强大,不仅实现了自动动作代理和封包功能,而且还提供了对网络游戏的客户端程序的数据进行修改,以达到欺骗网络游戏服务器的目的。
  • 游戏外挂中常使用的程序开发技术
    • 1、动作模拟技术:主要包括键盘模拟技术和鼠标模拟技术。
      鼠标模拟技术:Windows API函数。模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。获取当前鼠标位置使用GetCursorPos()函数,设置当前鼠标位置使用SetCursorPos()函数。
      键盘模拟技术:Windows API函数。模拟键盘动作API函数keydb_event,它可以模拟对键盘上的某个或某些键进行按下或放开的动作。
    • 2、封包技术:主要包括挡截Sock技术和挡截API技术。
      • 通过封包技术在客户端挡截游戏服务器发送来的游戏控制数据包,分析数据包并修改数据包;同时还需按照游戏数据包结构创建数据包,再模拟客户端发送给游戏服务器。
      • 封包的技术是实现第二类游戏外挂的最核心的技术。封包技术涉及的知识很广泛,实现方法也很多,如挡截WinSock、挡截API函数、挡截消息、VxD驱动程序等。在此介绍最常用的两种方法:挡截WinSock和挡截API函数。
      • 挡截WinSock仅只能挡截WinSock接口函数,而挡截API可以实现对应用程序调用的包括WinSock API函数在内的所有API函数的挡截。
  • 平衡性影响
    • 游戏类型:竞技类,明显的胜负性;非竞技类,每个人按照主线剧情走向既定的终点;
    • 外挂类型:封包挂,修改游戏参数,破坏游戏规则,直接左右胜败,严重影响玩家游戏体验;动作模拟挂,主要利己,并且对其他玩家的影响更小。

4.7 游戏自动化测试

  • 作用

    • 一是模拟手工测试中重复且繁琐的
    • 一是模拟手工测试中无法实现的测试,如性能测试中的并发或穷举等。
  • 自动化测试在游戏测试中主要的应用

    • 模拟重复且繁琐的手工测试;模拟手工测试无法或难以实现的性能测试、接口测试、穷举测试;UI测试等
  • 自动化测试流程

  1. 分析自动化测试需求,一般在手工测试之后开始;
  2. 根据项目的特点、选择合适的自动化测试工具,并搭建测试环境
  3. 测试用例设计和开发:设计测试用例;或提取手工测试的测试用例,转化为自动化测试用例
  4. 开发自动化软件测试框架和测试脚本
  5. 执行:通过工具、代码实现自动化的构造输入、自动检测输出结果是否满足预期
  6. 生成自动测试报告
  7. 持续改进、脚本优化

4.8 详细描述抽奖类功能关于概率方面的测试方法

  • 首先说一下自动化测试是什么?自动化测试从职能上讲就是去在一定的框架下去开发一些自动化测试脚本来实现QA所做不到的事情。
  • 对于抽奖的概率类问题,QA是不可能去抽几十万次甚至上百万次来验证概率问题,这时就要从其他角度来验证其正确性。
  • 首先,可以从白盒测试的角度,对底层算法原理和代码实现方面进行验证;
  • 其次,可以从自动化测试的角度,使用自动化脚本来模拟抽卡,来验证概率的正确性。

4.9 游戏测试要点

  1. UI界面测试(画风、故事情节、背景音乐、文字的契合度、图片的显示、文字的排版、布局等)
  2. 功能测试(数值、活动、存档)
  3. 可用性测试(重力感应,触屏接触点灵敏)
  4. 性能测试(游戏的响应时间很重要、卡顿情况,内存占有、耗电量、流量)
  5. 安全测试(注册登录、防止注入、防止暴力登录、一台设备多用户、一个用户多设备、存储信息完整、合服信息存储、外挂、盗号、用户隐私)
  6. 兼容性(安装与卸载,不同浏览器、系统、移动端PC端)
  7. 压力测试、强度测试(长时间多用户在线,服务器的CPU、内存情况)

4.10 GM指令

功能

GM指令是一种特殊的命令,可以让游戏管理员或测试人员在游戏中执行特定操作。这些指令通常直接输入到游戏的控制台或聊天窗口中,并立即生效。GM指令可以包括但不限于以下功能:

  1. 修改角色属性
  2. 生成物品
  3. 传送角色位置
  4. 调整游戏时间
  5. 启动或关闭特定事件
  6. 检查或修改游戏数据

常用命令

  • /additem [itemID] [数量]:给角色添加指定数量的物品。例如:/additem 1001 10 添加10个ID为1001的物品。
  • /setlevel [等级]:设置角色等级。例如:/setlevel 50 将角色等级设置为50。
  • /teleport [x] [y] [z]:传送角色到指定坐标。例如:/teleport 100 200 300。
  • /settime [时间]:设置游戏时间。例如:/settime 12:00 设置游戏时间为中午12点。
  • /startquest [questID]:启动指定任务。例如:/startquest 2001 启动ID为2001的任务。
  • /endquest [questID]:完成指定任务。例如:/endquest 2001 完成ID为2001的任务。

4.11 配置表

配置表(也称为配置文件或数据表)是关键的组件,通常用于定义游戏中的各种参数、设置和数据(如物品属性、任务信息、关卡设计等)。确保配置表的准确性和一致性是至关重要的

重要性

  1. 游戏功能无法正常运行
  2. 任务或事件触发异常
  3. 游戏平衡性被破坏
  4. 用户体验受损

检查方法

  1. 数据验证
  • 格式检查:确保配置表中的数据格式正确。例如,数值字段应为数字,日期字段应为有效日期格式等。
  • 值范围检查:验证配置表中的数值是否在预期范围内。例如,角色等级不应为负数,物品数量不应超过最大限制等。
  1. 引用检查
  • 键值唯一性检查:确保配置表中的键值是唯一的,没有重复。例如,每个物品ID应唯一。
  • 外键引用检查:确保配置表中引用的外键存在于相应的主表中。例如,任务表中的NPC ID应存在于NPC表中。
  1. 逻辑检查
  • 关联数据一致性检查:确保配置表中相关数据的一致性。例如,任务奖励的物品应存在于物品表中,且其属性正确。
  • 业务逻辑检查:验证配置表中的数据是否符合业务逻辑。例如,低等级的敌人不应掉落高级装备。
  1. 自动化检查工具
  • 使用自动化工具和脚本对配置表进行批量检查,快速发现和报告潜在问题。

4.12 测试角度:游戏需要改进的地方

从测试人员的角度提出的改进方案

  1. 优化性能
  • 多设备兼容性:确保游戏在各种设备上都能流畅运行,包括低配置设备。
    减少卡顿和加载时间:
  • 优化资源加载,减少游戏中的卡顿和长时间加载问题。
  1. 修复bug和提升稳定性
  • 定期回归测试:在每次更新后进行全面的回归测试,确保新功能不会引入新的bug。
  • 用户反馈处理:建立高效的用户反馈处理机制,及时修复玩家报告的bug。
  1. 改进用户体验
  • 界面优化:优化游戏界面,使其更加直观和易于操作。
  • 新手引导:改进新手引导流程,帮助新玩家更快上手游戏。
  1. 增强社交功能
  • 社交互动:增加更多的社交互动方式,如好友系统、聊天频道等。
  • 团队合作:增加更多团队合作任务和活动,增强玩家之间的协作和互动。
  1. 平衡性调整
  • 角色和技能平衡:定期评估和调整角色和技能的平衡性,确保游戏的公平性。
  • 难度调整:根据玩家反馈调整游戏的难度,提供更适合不同水平玩家的游戏体验。
  1. 内容更新和扩展
  • 定期更新:定期推出新的内容,包括新角色、新剧情、新活动等,保持玩家的兴趣。
  • 扩展世界:增加新的地图和探索区域,丰富游戏的世界观。
  1. 改进社群管理
  • 社群活动:组织和管理更多的社群活动,增强玩家的归属感。
  • 玩家反馈:积极听取玩家的反馈和建议,结合实际情况进行游戏改进。

4.13 假如明天崩铁更新,今天发现有个bug,需要动底层代码,然后底层代码一天解决不了,怎么办

  1. 立即评估问题
  • 确定bug会导致所有玩家无法启动游戏。
  • 影响范围广泛,严重性高。
  1. 通知相关人员
  • 通知所有相关开发人员和管理人员,召开紧急会议讨论。
  • 制定临时解决方案
  1. 由于问题严重,考虑禁用引起问题的功能模块
  2. 更新延期
  • 决定推迟更新,发布公告通知玩家,解释问题并提供新的更新时间。
  1. 加班解决
  • 组织开发团队加班,集中力量解决问题。
  • 临时增加人手加快问题解决。
  1. 应急方案
  • 准备回滚计划,确保新版本发布后问题依然存在时能够快速回滚。
  • 后续处理
  1. 解决问题后
  • 进行根本原因分析,改进测试和发布流程。
  • 向玩家提供适当补偿

4.14 TCP和udp在游戏中的使用

  1. 王者荣耀的PVP通信协议是基于udp封装的

  2. UDP协议具有低延迟的特点,非常适合实时音视频的传输,因为它没有TCP的重传机制,能减少延迟和抖动。因此,腾讯视频会议会使用UDP来传输音视频数据,以保证会议过程中音视频的实时性和流畅性。

  3. 分析

  • 不同类型的游戏因为玩法、竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样。
  • 例如,MOBA类游戏(王者荣耀)多使用帧同步为主要同步算法,竞技性也较高,无论从流畅性,还是从公平性要求来说,对响应延迟的要求都最高,根据业内经验,当客户端与服务器的网络延迟超过150ms时,会开始出现卡顿,当延迟超过250ms时,会对玩家操作造成较大影响,游戏无法公平进行。
  • 类似地,“吃鸡”游戏(如《绝地求生》)玩法对玩家坐标、动作的同步要求极高,延迟稍大导致的数据不一致对体验都会造成较大影响,其实时性要求接近MOBA类游戏。
  • 而对于传统mmorpg来说,多采用状态同步算法,以属性养成和装备获取为关注点,也有一定竞技性,出于对游戏流畅性的要求,对延迟也有一定要求,同步算法的优化程度不一样,这一要求也不一样,一般情况下为保证游戏正常进行,需要响应延迟保持在300ms以下。
  • 相比之下,对于炉石传说、斗地主、梦幻西游等回合制游戏来说,同时只有一个玩家在操作双方数据,无数据竞争,且时间粒度较粗,甚至可通过特效掩盖延迟,因此对网络延迟的要求不高,即便延迟达到500ms~1000ms,游戏也能正常进行。
  1. 一般游戏中TCP和UDP会同时用的,如果对于数据传输速度要求非常高的场景,比如FPS,MOBA等游戏过程中,用户对战时候的数据肯定是要用UDP来传输的,并且在程序层面保证传输的可靠性,包括自己做校验等;
  • 但其它模块,比如大厅里啊,买东西啊,创建房间啊等等,都是可以TCP实现的。魔兽世界用TCP是因为他对数据的即时要求并没有那么高,而且有很多的校验啊,技能读条等等,在副本中晚跑个一秒或者放技能多读一秒,影响并没有那么大,但如果是LOL,那可能团战都要输了。

本文标签: 理论 测试