什么是用户体验测试?
用户体验是软件产品的使用者对产品的印象、感觉,同时也是用户既有的软件使用习惯和业务思维模型的综合反映。软件产品的用户体验好,则能让用户感到使用方便、易用、符合思维习惯。
用户体验测试就是基于用户的使用习惯和思维模式出发,结合实际的业务场景,对软件产品的外观、操作方式等方面进行检查。在MSF的组队模型中,就专门有一个角色被称为“用户体验工程师”(User Experience),如图1所示。但是大部分公司不会设置一个专门的用户体验角色,而是由测试人员来担任这项工作。
图1 MSF的组队模型
自动化的用户体验测试
用户体验测试也叫可用性测试(Usability Testing)。可用性测试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。要保证在足够详细的程度下,用户界面易于使用;对输入值可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能够引导用户去解决问题;软件文档全面、正规、确切。
本文不会涉及这么广泛的内容,而是专注于如何利用自动化测试工具来实现某些用户体验方面的检查,例如检查默认焦点的位置,检查Tab顺序是否正确,检查字体设置等。
检查默认焦点位置
在进行界面易用性测试和用户体验测试时,我们会要求在打开某个界面时,默认把焦点定位到某个控件,方便用户做后续的操作,例如默认定位到某个输入框,方便用户能马上输入数据。
如果用人工的方式进行检查的话,需要打开每个界面,观察当前光标的位置,检查是否定位到合适的位置上,这样会比较耗费时间。而如果采用自动化的测试方法,则可以利用控件的Focused属性当前是否为True,来判断焦点是否落在控件上。
每一个控件都会有Focused属性,可以使用Windows API函数中的GetFocus函数来获取当前焦点所在的控件,例如下面的C#代码可用于取得当前焦点所在控件的句柄:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace GetFocusTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 使用GetFocus函数获取当前焦点所在控件的句柄
Automation auto = new Automation();
IntPtr hand = auto.FindFocusWindow();
// 以十六进制显示
MessageBox.Show(hand.ToString("X"));
}
}
public class Automation
{
// 导入Windows API中的GetFocus函数
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr GetFocus();
// 获取当前焦点所在的控件
public IntPtr FindFocusWindow()
{
// 返回控件句柄
return GetFocus();
}
}
}
由代码可知,单击Button1按钮后,获取到的当前焦点所在控件必然是Button1按钮自身,这个可以使用Spy++来进一步验证,如图2所示。
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。