服务器在等待客户端发送客户端相关数据过来前,服务器启动时,加载配置文件,读取对应服务器下的配置文件<CONFIG>里的数据到szConfig中,然后调用LoadConfig的方法。
//LoadConfig方法作用:将配置文件里的数据,默认配置的产品ID读取到szProductID,产品的其他所有信息读取到pProductDetail中。
BOOL CConfig::LoadConfig(const CHAR *szConfig)
{
if (NULL == szConfig)
return FALSE;
TiXmlElement element("");
element.Parse(szConfig, NULL, TIXML_ENCODING_UTF8);
// 取配置信息中DefaultProduct元素的数据存在szProductID中。
const CHAR *szProductID = TiXmlGetValue(&element, "DefaultProduct");
if (!szProductID || strcmp(szProductID, "") == 0)
{
return FALSE;
}
m_strDefaultProduct = szProductID;
// szWebServicesURL 变量暂时未被使用(以前的旧代码),可以忽略
const CHAR *szWebServicesURL = TiXmlGetValue(&element, "WebServicesURL");
if (szWebServicesURL)
{
m_strWebServicesURL = szWebServicesURL;
}
//读取配置文件中Product的第一个元素的信息,将里面的值返回pProductDetail类中
TiXmlElement *pProductDetail=element.FirstChildElement("Product");
if (!pProductDetail || !ReadProductDetail(pProductDetail))
{
return FALSE;
}
return TRUE;
}
  ReadProductDetail函数的作用是将product下对应的部分数据,读取到pProductDetail的成员变量strProductID和mapVersionInfo(版本集合内).
  看完代码,得知的大致流程如下:首先服务一启动,会将每个Product下的pProductDetail保存起来,然后客户端发送szProductID,szVersion给服务器端,服务器端首先是在m_lsProduct(list)下查找出自己对应的pProductDetail信息,如果没有找到,则使用默认版本,然后根据szVersion在确定的ProductID内得到grayupdate配置的版本,如果没有找到,用默认版本信息,将得到的数据都保存在item类,返回给客户端。
  那思考之前的疑惑,解答如下:
  1、存在一个产品,有多个指定版本升级的情况,测试用例需要增加。
  2、运营线是有14个,但是根据程序内部实现方法(容器循环控制找产品ID),是没必要配置14个的,测试4个,4个产品都能依次正常通过测试,能保证14个没问题。
  3、交互过程,接口输入输出已表明。
  4、等于的时候是什么情况,得与开发沟通。
  修正测试点如下: