要求:给出必要的时序图。必须明确表达出C/S或者S/S之间的数据交互,以及必要的条件判断过程。同时也需要能够表现出该功能模块涉及的每条协议,以及该协议的作用此外能够给出相关的流程图更好下面的例子是以一个NPC交易过程为例的时序图要求:给出必要的时序图。必须明确表达出C/S或者S/S之间的数据交互,以及必要的条件判断过程。协议包头需要给出协议的包头,完整的分析每个字段的长度,类型和代表的含义下面是QQFS的协议包头,不同项目可能有差异Protocol_Headname=tagCSPkgHeadclass=tagCSPkgHeadselect=m_nCmdtype=struct/structname=tagCSPkgHeadItemname=m_wHeadLentype=unsignedshortCount=1DsplyText=包头大小/Itemname=m_wBodyLentype=unsignedshortCount=1DsplyText=包体大小/Itemname=m_nCmdtype=shortCount=1DsplyText=命令字/Itemname=m_dwUpwardSeqNotype=UINTCount=1DsplyText=C/S校验/Itemname=m_szReservedtype=charCount=4DsplyText=/Itemname=m_wCheckSumtype=unsignedshortCount=1DsplyText=检验和//struct具体的协议消息需要给出该条协议的命令字,包名,以及包中各字段或结构体的长度,类型,以及代表的含义如果包中有嵌套的结构体,也需要给出结构体中的具体内容,如果结构体中再嵌套结构体,需要一一解开在协议解析中,如果有不同值代表不同分类的情况,需要解析出每个值代表的具体含义下面是举例说明,是NPC交易中的一条NPC购买协议,其中就嵌套了许多结构体NPC购买协议协议协议结构体structname=CSDT_ITEM_INFOItemname=m_dwBaseIDtype=UINTCount=1DsplyText=道具ID/Itemname=m_dwCounttype=UINTCount=1DsplyText=道具数量/Itemname=m_nBoothIndextype=shortCount=1DsplyText=摆摊索引ID/Itemname=m_bFuncTypetype=unsignedcharCount=1DsplyText=功能道具类型/Itemname=m_stItemExtraInfotype=ST_ITEM_EXTRA_INFOCount=1DsplyText=功能类型决定道具额外信息/tagSCPKG_CMD_BUY_NPC_OBJC→SNPC购买发包tagCSPKG_ACT_BUY_NPC_OBJ2002协议结构体分解CSDT_TRADEOBJ_INFOS→CNPC购买后收包/structstructname=CSDT_EQUIP_INFOItemname=m_iLockTimetype=intCount=1DsplyText=装备锁定,小于0锁定,等于0未锁定,大于0解锁时间/Itemname=m_dwBaseIDtype=UINTCount=1DsplyText=装备ID/Itemname=m_dwMaxEnduretype=UINTCount=1DsplyText=装备最大耐久/Itemname=m_dwCurEnduretype=UINTCount=1DsplyText=装备当前耐久/Itemname=m_bBindFlagtype=unsignedcharCount=1DsplyText=是否绑定/Itemname=m_bUpgradeSteptype=unsignedcharCount=1DsplyText=当前强化度/Itemname=m_bAffixAttrNumtype=unsignedcharCount=1DsplyText=随机属性个数/Itemname=m_cActiveFlagtype=charCount=1DsplyText=激活标志;-1没有五行激活;0有五行待激活;对应属性激活/Itemname=m_dwActiveIndextype=UINTCount=1DsplyText=激活索引,装备配置表里填的一个激活索引/Itemname=m_randomAttrtype=CSDT_EQUIP_RANDOMCount=3DsplyText=随机属性种类效果/Itemname=m_bActiveAttrCnttype=unsignedcharCount=1DsplyText=可以通过五行激活的属性个数/Itemname=m_stActiveEquipAttrtype=CSDT_ACTIVE_EQUIP_ATTRCount=4DsplyText=发给client的装备所需五行激活属性/Itemname=m_bEnchaseHoleNumtype=unsignedcharCount=1DsplyText=镶嵌孔数/Itemname=m_enchaseAttrtype=CSDT_EQUIP_ENCHASECount=7DsplyText=镶嵌属性种类和效果/Itemname=m_szCreatorNametype=charCount=32DsplyText=打造者名字//structProtocol_Headname=tagCSPkgHeadclass=tagCSPkgHeadselect=m_nCmdtype=struct/Itemname=m_wHeadLentype=unsignedshortCount=1DsplyText=包头大小/Itemname=m_wBodyLentype=unsignedshortCount=1DsplyText=包体大小/Itemname=m_nCmdtype=shortCount=1DsplyText=命令字/Itemname=m_dwUpwardSeqNotype=UINTCount=1DsplyText=C/S校验/Itemname=m_szReservedtype=charCount=4DsplyText=/Itemname=m_wCheckSumtype=unsignedshortCount=1DsplyText=检验和/需要给出该条协议的命令字,包名,以及包中各字段或结构体的长度,类型,以及代表的含义如果包中有嵌套的结构体,也需要给出结构体中的具体内容,如果结构体中再嵌套结构体,需要一一解开在协议解析中,如果有不同值代表不同分类的情况,需要解析出每个值代表的具体含义CMDID结构体主要内容unsignedcharm_bObjCount;unsignedcharm_szObjType[CS_MAX_BUY_OBJ_COUNT];unsignedintm_objID[CS_MAX_BUY_OBJ_COUNT];unsignedshortm_objNum[CS_MAX_BUY_OBJ_COUNT];unsignedintm_dwCostReserveMoney;储备金unsignedintm_dwPrice;封神币unsignedcharm_bObjCount;CSDT_TRADEOBJ_INFOm_buyObjInfo[CS_MAX_BUY_OBJ_COUNT];charm_cReserve;CSDT_ITEM_INFOm_stItemInfo;CSDT_EQUIP_INFOm_stEquipInfo;CSDT_TALISMAN_INFOm_stTalismanInfo;CSDT_PETCLT_FIGHTINFOm_stFightInfo;CSDT_PETCLT_HORSEINFOm_stHorseInfo;Itemname=m_dwBaseIDtype=UINTCount=1DsplyText=道具ID/Itemname=m_dwCounttype=UINTCount=1DsplyText=道具数量/Itemname=m_nBoothIndextype=shortCount=1DsplyText=摆摊索引ID/Itemname=m_bFuncTypetype=unsignedcharCount=1DsplyText=功能道具类型/Itemname=m_stItemExtraInfotype=ST_ITEM_EXTRA_INFOCount=1DsplyText=功能类型决定道具额外信息/20022001Itemname=m_iLockTimetype=intCount=1DsplyText=装备锁定,小于0锁定,等于0未锁定,大于0解锁时间/Itemname=m_dwBaseIDtype=UINTCount=1DsplyText=装备ID/Itemname=m_dwMaxEnduretype=UINTCount=1DsplyText=装备最大耐久/Itemname=m_dwCurEnduretype=UINTCount=1DsplyText=装备当前耐久/Itemname=m_bBindFlagtype=unsignedcharCount=1DsplyText=是否绑定/Itemname=m_bUpgradeSteptype=unsignedcharCount=1DsplyText=当前强化度/Itemname=m_bAffixAttrNumtype=unsignedcharCount=1DsplyText=随机属性个数/Itemname=m_cActiveFlagtype=charCount=1DsplyText=激活标志;-1没有五行激活;0有五行待激活;对应属性激活/Itemname=m_dwActiveIndextype=UINTCount=1DsplyText=激活索引,装备配置表里填的一个激活索引/Itemname=m_randomAttrtype=CSDT_EQUIP_RANDOMCount=3DsplyText=随机属性种类效果/Itemname=m_bActiveAttrCnttype=unsignedcharCount=1DsplyText=可以通过五行激活的属性个数/Itemname=m_stActiveEquipAttrtype=CSDT_ACTIVE_EQUIP_ATTRCount=4DsplyText=发给client的装备所需五行激活属性/Itemname=m_bEnchaseHoleNumtype=unsignedcharCount=1DsplyText=镶嵌孔数/Itemname=m_enchaseAttrtype=CSDT_EQUIP_ENCHASECount=7DsplyText=镶嵌属性种类和效果/Itemname=m_szCreatorNametype=charCount=32DsplyText=打造者名字/协议解析交易物类型:7为道具8为装备CS_MAX_BUY_OBJ_COUNT50分别交易详细信息:道具装备法宝战宠骑宠扣费先扣除储备金再扣除封神币测试用例设计:针对单条协议的测试可以大致分为以下几种1.数据类型测试:根据当前字段定义的数据字段的边界值进行检查,看是否会有溢出的情况出现举例:协议类型为Unsignedint,那么需要检查该字段为-1,0,65535,65536的情况2.异常值测试:输入不会出现的值,检查是否会有宕机或者返回错误提示等异常情况出现举例:某个字段有意义的输入值为1和2,那么需要检查为3的情况3.与实际逻辑不符的测试:输入与实际逻辑相违的值,检查是否有宕机或者返回错