The local_action runs the command on the local server, not on the servers you specify in the host parameter.
You can change your "Execute the script" task to
- name: Execute the script
command: sh /home/test_user/test.sh
You don't need to repeat sudo in the command line because you have defined it already in the playbook.
According to Ansible, Intro to Playbooks user parameter was renamed to remote_user in Ansible 1.4 so you should change it, too
remote_user: test_user
So, the playbook will become:
---
- name: Transfer and execute a script.
hosts: server
remote_user: test_user
sudo: yes
tasks:
- name: Transfer the script
copy: src=test.sh dest=/home/test_user mode=0777
- name: Execute the script
command: sh /home/test_user/test.sh
Hope this answer helps you!