随机自动化测试框架

发表于:2016-10-21 11:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搜狗测试 诸葛东明    来源:51Testing软件测试网原创

分享:
  五、SogouInputUtil搜狗输入法连接器
  SogouInputUtil是连接Monkey和SogouInput键盘布局的连接器:
  1.SogouInputKeybard主要专注于维护输入法各个控件的坐标,例如拼音26键的qwery等按键的位置。
  2.SogouInputUtil将要执行的动作转换为坐标值,然后告诉给monkey模块去执行。
  3.如果希望有更多复杂的随机动作,可以派生SogouInputUtil进行编写即可,例如执行打字功能:
public class SogouInputTypeUtil extends SogouInputUtil{
private static String MSG_TAG = "SogouInputTypeUtil";
private InputDataProvider mInputDataProvider;
public SogouInputTypeUtil() {
super();
mInputDataProvider = InputDataProvider.getInstance();
}
// 9键输入单个字符
public void tap9Key_Onekey(String key ){
Point pt =  mSogouInputMethodKeyboard.getPoint( key );
if ( pt != null ){
pressXY( pt.getX() , pt.getY());
}
}
// 9键输入字符串
public void tap9Key_LangString(String str ){
String[] onekey;
onekey = str.split("");
for ( int i = 0; i < onekey.length; i++ )
{
tap9Key_Onekey( onekey[i]);
}
}
// 26键输入单个字符
public void tap26Key_Onekey(String key ){
Point pt =  mSogouInputMethodKeyboard.getPoint( key );
if ( pt != null ){
pressXY( pt.getX() , pt.getY());
}
}
// 26键输入字符串
public void tap26Key_LangString(String str ){
String[] onekey;
onekey = str.split("");
for ( int i = 0; i < onekey.length; i++ )
{
tap26Key_Onekey( onekey[i]);
}
}
// 随机点击
public void randomTap() {
int[] xy = mSogouInputMethodKeyboard.getRandomXY();
pressXY(xy[0], xy[1]);
}
// 点击空格键
public void tapBlank(){
int []xy = mSogouInputMethodKeyboard.getBlankSpaceXY();
pressXY(xy[0], xy[1]);
}
// 随机点击字符串并上屏
public void tapRandomString(){
tap9Key_LangString(mInputDataProvider.ReadInputData_9Key());
//        tap9Key_LangString("76468");
}
public void tapRandomString_Blank(){
tapRandomString();
tapBlank();
}
public void tapRandomString_Candidate(){
tapRandomString();
//Toolbar的位置其实也是候选词的位置
pressXY(mSogouInputMethodKeyboard.getKeyboardSwitchBtnX(), mSogouInputMethodKeyboard.getKeyboardSwitchBtnY());
}
}
  该模块中的执行动作,最终会调用基类SogouInputUtil中的pressXY坐标,将坐标值告诉monkey去执行。
  六、SogouInputKeyboard搜狗输入法键盘布局
  该模块主要用于维护搜狗输入法键盘各个控件的坐标值,目前实现的方法是从配置文件中读取坐标位置:
  1.配置文件保存位置:哆啦A梦assets的inputConfig目录。
  2.配置文件的格式为:
[PY26]
1=300,1320
2=540,1320
3=780,1320
4=300,1490
5=540,1490
6=780,1490
7=300,1650
8=540,1650
9=780,1650
q=70,1300
w=170,1300
e=280,1300
r=380,1300
t=500,1300
y=600,1300
u=700,1300
i=810,1300
o=920,1300
p=1020,1300
a=120,1470
s=220,1470
d=330,1470
f=440,1470
g=540,1470
h=650,1470
j=750,1470
k=850,1470
l=960,1470
z=230,1640
x=330,1640
c=430,1640
v=540,1640
b=640,1640
n=750,1640
m=860,1640
del9=990,1320
space9=540,1835
del=995,1640
space=550,1810
  七、InputDataProvider输入法测试数据提供类
  该模块主要用于向随机稳定性动作提供测试数据。
public class InputDataProvider {
private static final String NINE_SCRIPT_PATH = "/KPITestDir/Source/9key.txt";//九键语料路径
private static final String TWSIX_SCRIPT_PATH = "/KPITestDir/Source/26key.txt";
private static BufferedReader m_bufferedReader = null;
private static InputDataProvider _instance = null;
public void InputDataProvider(){
}
public static InputDataProvider getInstance() {
if (_instance == null) {
_instance = new InputDataProvider();
}
return _instance;
}
private void OpenInputData_9Key(){
if ( (m_bufferedReader != null) ){
return;
}
File sdRoot = CommonFuncClass.getSdDir();
if (sdRoot == null)
return;
try {
String path = StateValue.getDoraemonDir() + File.separator + NINE_SCRIPT_PATH;
File file = new File(path);
m_bufferedReader = new BufferedReader(new FileReader(file));
} catch (IOException e) {
e.printStackTrace();
}
}
private void CloseInputData_9Key(){
try {
if ( m_bufferedReader != null ){
m_bufferedReader.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
public String ReadInputData_9Key( ){
OpenInputData_9Key();
String sLine = null;
try {
if ( m_bufferedReader != null ){
sLine = m_bufferedReader.readLine();
sLine = sLine.substring( 0 , sLine.indexOf("\t"));
}
}catch (IOException e ){
e.printStackTrace();
}
return sLine;
}
}
  读取的数据文件位置为:哆啦A梦assets目录下的KPITestDir/Source数据,该数据内容为线上的用户输入语料。
版权声明:本文出自《51测试天地》原创测试文章系列(四十三)投稿。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
相关推荐:
22/2<12
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号