Assuming a code repository exists, do all teams check a local copy of all the code? If so, why does the web designer need / need access to the internal code, similarly, why does the web component developer need / need access to the interface?
It depends on how big and how modular your project / assembly is. For large projects with a large code base, it is necessary to use a modular approach and binary dependencies. This will greatly improve local build time. If I am working on module A (which depends on B), I do not want to compile B during development cycles. It will slow me down, it is annoying. I prefer to use the binary dependency on B (and if I need to, I can still check B and compile it locally anyway).
How does each member of the team, regardless of the team, check their code - do they "deploy" the code to their local workstation, a separate instance in the development window, or an integrated block of developers?
Use special environments for each developer for web servers, application servers, database instances (see Use one database instance for each developer ). Team members should be able to restart, update whenever they want, without disturbing others (even if I advocate minimizing the time spent "in the container" during development, that is, preferring single tests in isolation). Thus, prefer a local workstation for anything that might need to be restarted: web server, application server, etc. Local deployment is also often easier. For a database, a remote database instance is generally good (and might be better, for example, if you have a large oracle server). Use a consolidated developer unit for a continuous integration process.
How is integration and testing performed? For example, suppose a web designer creates a page of the "registration" form, and a web component developer creates internal code for processing and inserting data into db - how to integrate the interface and internal code and tested?
First check them out separately. Mock / If necessary, mute the back-end. Then check everything. When performing integration or functional tests that interact with the database, it is good practice to always place the database in a known state before running the test (see. Good tuning does not require cleaning! ). DBUnit can help with this. Cactus is another good server-side testing tool, for example. integration testing. End-to-end testing to run aka functional tests, Selenium or WebDriver are good candidates. For acceptance testing (or BBD), I am currently studying Cucumber and I like it.