单元测试的好处是能把代码分开来,分成比较小的一块块,这样测试覆盖的全面性就相当好。而且单元测试可以检查简单明了的逻辑。但是单元测试不应过细,最好只应用于所有有特色的逻辑,否则反而会让构造测试用例变成太累人的事情。
当然,消除 bug 之前,还有就是写程序的时候就要注意避免 bug,否则前面的质量如果差的话,haocq,debug 会是很累人的。
用Android模拟器运行 FTK
96 views 2010-07-05 李先静 Uncategorized 编辑 发表征途私服
转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli@gmail.com>
用Android模拟器运行FTK
以前写过一篇文章介绍如何在Androidr模拟器上运行FTK(http://www.limodev.cn/blog/archives /1400),那种方法有点别扭,而且要下载Android 的源代码才能编译。最近几个开发板都坏了,所以上周末研究了一下Android模拟器,自己生成文件系统,只是利用Android的模拟器来运行FTK。
Android的模拟器是基于qemu的,个人感觉qemu不好用,除了用Openmoko做的模拟器外,我还没成功用qemu来模拟运行过arm linux。Android在qemu做了不少人性化的工作,用起来比较方便。
0.请参考网上的方法安装Android SDK。
1.生成自己的init程序。
创建几个基本完美国际sf。
int init_dirs(void)
{
umask(0);
mkdir("/dev", 0755);
mkdir("/system",99听战歌, 0777);
mkdir("/dev/block",传奇私服客户端下载, 0755);
return 0;
}
创建MTD设备的结点。
int init_dev_nodes(void)
{
int ret = 0;
ret = mknod("/dev/block/mtdblock0", 0755S_IFBLK, makedev(31, 0));
printf("mknod /dev/block/mtdblock0 ret = %d errno=%d/n", ret, errno);
return 0;
}
加载system.img 分区。
int mount_filesystem(void)
{
int ret = 0;
ret = mount("/dev/block/mtdblock0", "/system", "yaffs2", 0, NULL);
printf("mount /dev/block/mtdblock0 ret = %d errno=%d/n", ret, errno);
return 0;
}
运行FTK的桌面。
int startup_desktop(const char* name)
{
struct stat st = {0};
int ret = stat(name, &st);
if(ret != 0)
{
return -1;
}
printf("starting the second init: %s./n", name);
if(fork() == 0)
{
ret = execl(name, name);
}
return ret;
}
int switch_root(void)
{
int ret = chroot("/system");
ret = startup_desktop("/opt/bin/desktop");
return ret;
}
2.生成ramdisk.img
rm -rf ramdisk
mkdir ramdisk
cd init && make; cd - >/dev/null
echo "Generating ramdisk..."
cd ramdisk && find . cpio -c -o > ../initrd; cd - >/dev/null
gzip initrd && mv initrd.gz ramdisk.img
3.生成system.img
if [ ,传奇私服1.80! -d rootfs ]
then
tar xf rootfs.tar.gz
fi
(在这里解压编译好的FTK(ftk-dist.tar.gz)到rootfsrts)
./mkyaffs2image rootfs system.img
4.拷贝生成的ramdisk.img system.img到SDK奇迹sf里。
echo "Copying files..."
for f in ramdisk.img system.img
do
echo " $f --> $ADNROID_SDK_IMAGES_DIR"
mv -f $f $ADNROID_SDK_IMAGES_DIR
done
完整源代码和脚本请到这里下载:
svn checkout http://ftke.googlecode.com/svn/trunk/android-ftk-emu android-ftk-emu
系统测试的好处则是能把 bug 放大。bug 在一个单元中可能是小 bug,到了整个系统中由于多步骤的处理,就可能被放大。这样系统测试可以测出某些单元测试不能测出来的问题。但是系统测试的覆盖率较小,某些不常用的代码段很少被测到,因此需要注意这个局限性。
代码复查有两方面。一方面是检查逻辑性。这就和读文章没什么区别,看看写得是不是对。但是,有时候眼睛会骗人的。那么就要用第二方面了:第二方面是解释执行。人的大脑除了速度不如机器、记忆精确度不如机器之外,其他机器能做的事情大脑都能做,1.85炎龙元素。因此解释执行代码也是一种强有力的检查手段,可以检查出“骗过眼睛的代码”。代码复查的特点是如果做得好的话,覆盖率达 100%。
1.76传奇私发服网
请使用1024*768分辨率浏览本站以达到游戏最佳视觉效果
打击盗版支持正版游戏 任何组织或个人未经同意,不得使用和传播盗版游戏,如有侵犯利益请来电告知说明,本站72小时内删除。