Object-oriented programming in the PHP language
Content:
[1] Classes and methods in PHP
[2] How to create a guest book in PHP - examples and commentary
[3] Data storage by means of DB in PHP
[4] Web-application development in PHP
[5] Base concepts in PHP programming for beginners and professional users
[9] Constructors and destructors in PHP
[10] Modelling at a higher level of abstraction. Abstract classes and interfaces in PHP
[1] Classes and methods in PHP
First and foremost, it is necessary to understand that a class is not a set of functions or a container for variables, but abstract data type (ADT). PHP is not a strictly typified language, therefore for the beginning it is necessary to understand what are "simple" types. Integers (1, 45, 100, 378, etc.) have integer type. An array is also a type of data. For more details you can learn the documentation: http: // www.php.net/manual/ru/language.types.php. A class is also a type of data, but an object is an original variable of this type.
At a class creation it is necessary to understand a problem, which we want to present. Often a class construction is the process of modelling of the essence, which is necessary to transfer to a code. An object is a reflection of the essence that is described in a class form. In class modelling it is necessary to reveal those necessary parts of the essence, on which necessary actions will be made by means of methods. It means that necessary parts of the essence are fields of a class; they reflect data, which compile a general data type. By this an object type reminds data of an array type.
Methods carry out various actions on data. Methods should be designed in a way to work only with those data which are determined in a class. It is not recommended to define methods which influence on external data in any way. The so-called strategy of weak linkage implies that the less links there are between classes and external data, the easier it is to take a class from a system and use it again.
For example, the pack of cigarettes class consists of a packing and an array of cigarettes, so it is necessary to create methods which work only with a packing and cigarettes. There is no necessity to use methods by means of which we open a bottle of soda or even light a cigarette. Each class should realize only those actions which work with data of the class. Don't try to thrust all realization of the whole appendix into one class. For example, there is a site which consists of the main page, guest book, news pages, section of articles and links to friendly sites. Describe each section of a site by its own class or classes. The classes that reflect sections of a site can enter inheritance with each other. I.e. we represent a section as the essence, a separate type of data. Again I shall repeat, that in a class, modelling a news section, it is not necessary to define elements of other sections if there is no necessity. If it is required to present something from other sections, use inclusion. For example, on news page it is required to display headings of last articles. Define in a class of news a field of an articles class type and use methods of this type. Do not try to write the methods displaying articles headings in a class, modelling news. Define a necessary method in a corresponding class, a class that represents articles.
[2] How to create a guest book in PHP - examples and commentary
Now let's get down to concrete examples. Let's try to create the simplest guestbook.
First what we need to do is to define the parts of the needed essence. These parts will be presented by visitor's name, his e-mail and his message proper.
Firstly, we have named essential parts of our data type. Secondly, fields are named with the private access modifier, which means, that it is possible to work with class fields only with the help of the same class methods. I will tell a bit later about access modifiers. Thirdly, we have named a method __construct($name, $email, $msg). This method is the designer of a class. About constructors and destructors will be told later, and now you should remember, that constructors are always carried out automatically first, before all other methods of a class, right after memory allotment for an object. Destructors are carried out the last, directly before the object destruction.
The fourth we have used the keyword $this. $this means the reference to an object, for which this or that design is realized. Unlike other programming languages, at the reference to members of a class, it is necessary to use $this: $this-> name and $name are two different variables.
Now let#145s dwell on how to address to an object fields. Let's realize methods, which will return proper values.
Now we can read data of a class from outside.
[3] Data storage by means of DB in PHP
How to store data is the question that arises by a guest book development. Let's take advantage of MySQL database. We will add a new field of DataBase type, which is a special type for working with a DB. In the designer we'll carry out the process of initialization. We'll create methods for data acquisition from the base and filling of the base.
The method of reading (SELECT) is realized as follows:
The method of values addition is realized as follows:
The first method returns an array of GuestBook objects, the second returns TRUE, in case data are added successfully, and FALSE – if not.
In the first line of Select() method SQL base inquiry is created for all values access. In the second line the resultant table in the form of an array $dbArray is taken. The process itself will be described later. In the fifth line we create an array of GuestBook type objects, which comes back as a result. In order to address corresponding fields we have realized corresponding methods.
For the second method there is also a SQL-inquiry, but it is used to add data in the base (INSERT). If the inquiry is executed successfully, we return the truth (TRUE), otherwise - lie (FALSE).
[4] Web-application development in PHP
Developing a web-application with the help of OOP, it is necessary to remember about capability, which is always lower in comparison with the procedural approach. The Select method, returning values every time, demands reference to a new object of the DataBase type. If a thousand records is stored in the base, it will cause significant additional charge - processing of each record will demand creation of an additional DataBase object. Let's solve the problem. The first thing that comes into everybody's mind is not to initialize a field of a DataBase type, but to write the needed method, which initializes a $db field.
The parameter $db is a copy of a DataBase class. It is possible to do as follows:
But to initialize the object again and again is not an optimal way. Practice has shown that it is more optimal to divide a similar class into two: in the first one we need to realize initialization of the essence, and in the second to name necessary methods for work with a database.
The difference here is obvious. First, we receive an array of objects using Select method, but now it contains only necessary data. Now on a thousand of GuestBook objects, only one object GuestBookDb is created. There is no necessity to store DataBase data in memory a thousand times. Secondly, the Insert() method changed a little. It has a parameter - a GuestBook type object - it is necessary for entering data in the base. As a result the load on server will decrease a little.
[5] Base concepts in PHP programming for beginners and professional users
In object-oriented programming there are three basic elements: encapsulation, inheritance, and polymorphism. The article doesn't set the purpose to give all-round examination of all OOP aspects. Here is briefly considered the essence.
Encapsulation is a concealment of realization. For users of a class it is unimportant how the class is realized, but it is essential what methods are available, i.e. what interface represents a class. We have already met encapsulation twice. In the first case we have named fields of a class as closed (private), i.e. we have hidden them from the public eye. It is also possible to make methods closed (private), so they will not be available for an external user, however they can be activated inside opened (public) methods of the same class. Closed methods are necessary to simplify opened methods, by breaking a complicated task into several simple ones. First of all it is necessary for reorganization of a code, for its convenient reading and understanding. In the second case it is also the closed field $db. We have assigned an internal variable the corresponding type of data, having hidden not only realization, but also an object creation process.
We have already come across the connection of classes with each other when declaring a variable of DataBase type. We have implicitly bound classes by means of inclusion. But what is the inheritance in its more common sense?
Inheritance is an expansion of an old class up to a new one by enhancement of functionality, i.e. the new class will contain the same methods (which, by the way, can change their realization) and properties as the former class.
A new class we call a descendant class, and the former, from which the inheritance goes, an ancestor class or a base class. First of all inheritance is used for hierarchical systems construction in which descendant classes develop base classes functionality. Inheritance can also be used for a change of logic of initial realization - i.e. for modification of an existing appendix.
Let's illustrate it with an example. It is necessary to expand the list of parameters which can be entered by a user in the guest book. Besides a name, email and messages users are able to enter the URL address and ICQ number. For this purpose it is not necessary to create a new class, we simply inherit the prepared realization from the GuestBook class.
As appears from the listing, old methods do not need to be realized, this way one of the major problems of the object-oriented approach - code reuse - is solved.
Please, pay your attention to the parent-constructor realization:: __construct($name, $email, $msg); - the official documentation says when the affiliated class reloads the methods which have been named in a parent-class, PHP does not carry out an automatic methods request belonging to a parent-class. This functional is assigned to a method, which reloads in an affiliated class.
By means of a keyword "extends" inheritance is also carried out. Now has come to change class GuestBookDb for work with new type of data.
In this case there is no necessity to overload the designer since it has remained constant. We have simply redefined necessary methods, changed the functional, having left their previous names. Using inheritance we can redefine any method, but sometimes we should forbid redefinition of methods and leave initial realization. For a similar case it is necessary to use a keyword 'final'. Let's consider an example.
If we started to redefine the PrintVar () method there would be a mistake. We can also name classes with a keyword 'final' if there will be a necessity to forbid inheritance from the current class.
Polymorphism is the ability to apply methods with identical names in a group of classes connected by inheritance.
[9] Constructors and destructors in PHP
A constructor. We have already come across constructors. Constructors, which are special methods in fact, are invoked each time at a class object creation, in which the constructor is specified. There can be no constructors in a class or just only one. Usually, a constructor is used for initialization of any class field, i.e. to define the initial condition of an object, for example, by means of methods activation, private as a rule. If a constructor contains some parameters, an object also should be invoked along with corresponding parameters. In case we name a method with parameters we should invoke it with the same quantity of parameters, and as it has been already said, a constructor is a special method which is invoked at an object creation. Therefore we should create an object together with parameters. Let's create an object for the class GuestBook.
If there was no constructors or a designer didn't contain any parameters, we would create an object as follows:
We also know from the previous examples how to invoke constructors named in parental classes - parent:: __ construct ();
Destructor. A destructor is invoked at an object destruction. Destructor cannot contain parameters. As well as a designer, a destructor is also a special method with a special name.
__ destruct (). Usually, a destructor is used for memory cleaning: closing of a database connection, file closing, removal of unnecessary variables, etc. To call a destructor from a class-ancestor use the analogical way as with a constructor, - parent:: __ destruct ();
[10] Modelling at a higher level of abstraction. Abstract classes and interfaces in PHP
A programmer begins the project with an abstract model construction. We have already modelled the guest book, but at the lower level of abstraction. A class is an abstract data type, therefore the abstraction is of primary significance. We project the essence, but we do not want yet to touch upon realization, therefore we only do model sets of methods which are to work with data. At an initial stage we should only describe functionality of a class, leaving out details of realization. We should understand what we are to do on those data which we have included in the type. For the realization we need abstract classes, their abstract methods, and also interfaces.
If there are named abstract methods in a class, the class should be also declared as abstract. The abstract class can contain both usual methods and fields. It is impossible to create an object of an abstract class, but it needs to be redefined with the help of descendant classes. I.e. abstract classes serve as classes' prototypes, which inherit their basis. We should accept the rules of abstract classes. If we have named an abstract method with two parameters, in subsequent classes we should realize the same method with the same number of parameters.
Let's create an abstract class for GuestBookDb class; as for the SharedGuestBookDb class, we can inherit it from an abstract class as well as from GuestBookDb class.
Abstract classes are favourable when they contain less abstract realization as in our example. And if we need only abstraction, and it is also necessary to inherit a class from several abstract essences? As we remember we can inherit from one class only. Here come interfaces. In an interface it is possible to name without specifiers, including abstract. In the interface it is possible to define only abstraction of actions, i.e. methods which can be only public. We abstract visible realization. We should show the work of our class to other developers. Let's consider the interface in practice. We shall change a little our previous code.
We can inherit several interfaces at once. We are to improve our guestroom, add methods of updating of a database and sample of the certain record according to a concrete identification number.
We can simultaneously inherit both a class and an interface. Thus the class is inherited first. One interface can inherit another one applying a keyword 'extends'.
Here are the main peculiarities of the object-oriented script writing approach in the PHP language. We have not mentioned some topics, such as class static elements, processing of exceptions. When you learn to project classes and write OO code, these topics will be more comprehensible to you.
What is Web2.0?
If you haven't asked yourself this question so far, then it's only a matter of time. Sites that are related to web2.0 technology group are principal newsmakers today. Without going into details, it is enough just to name such projects as Google.com, Youtube.com, Linkedin.com, which relate to web2.0.
But how can you characterize/ classify those projects? Or how can you single them out among others?
Content:
[2] Deep user-oriented interaction and an emphasis on the majority opinion
[4] Web services
[5] AJAX
[6] Web-syndication
[7] Mash-up
[8] Labels (Tags)
[9] Socialization
[10] Web2.0 disadvantages
Due to technologies, developers can implement within the bounds of your web-browser multifunctional applications, which are available to users from any point connected to the Internet and give functionality comparable to standard applications.
[2] Deep user-oriented interaction and an emphasis on the majority opinion
Content of many 2.0-sites is a desert of users and not a web-site. The project itself only realizes opportunities for users. A good example is youtube.com, where all the reels are added by users themselves.
Also web2.0 uses a factor of majority opinion. In practice it is used for rating feature - users are given a possibility to estimate, what is good or bad.
Possibly the most active users of those 2 principles described above are social communities.
These are dynamic tendencies to provide an access to all sorts of aggregate data without any restrictions (in form of RSS for instance) and give possibilities to use services freely from outside (in form of API).
So, these are basic characteristics of new generation Internet projects, which are known as Web2.0. It is clear, that all things will be transforming and evolving, but today this kind of projects can be marked out as a separate one, that can be useful to many people all around the world.
[4] Web services
Web services - are programs, which are accessible from Web (HTTP protocol), and data exchange is presented in XML or JSON or REST format. As a result software can use web services instead of searching independently required functional (for example to check an e-mail inserted into the form). Unlike standard dynamic libraries such approach has a number of advantages:
- A web service is located on the server of the company-creator, that is why the newest version of data is available there and users don't have to care for updates and processing powers, which are needed for operation performance.
- Instruments for work with HTTP and XML are presented in any modern language of programming, that is why web services are moved to the category of platform-independent.
- In the notion of site socialization can also be included a possibility of individual site settings and a private zone creation for a user to feel his uniqueness.
- Encouragement, support and faith in "collective intelligence".
- At community formation a great sense has competitiveness and reputation, which allow the community to control itself and set additional goals to be on the site.
- Dependency on permanent connection availability (no connection - all the information becomes unavailable or inconvenient to use);
- Dependency on third-party companies' decisions and quality of performance;
- A weak suitability of current infrastructure to carry out complicated calculating tasks in browser;
- Brittleness of confidential data, that are stored on off-site servers.
[5] AJAX
Asynchronous JavaScript and XML - is an approach to construction of user interfaces in web applications, when a web page uploads necessary data asynchronously without reload. Ajax usage became most popular after Google had started to use it actively while creating its own sites, such as Gmail and Google Maps. Often Ajax is considered a synonym of Web2.0, which is completely incorrect. Web2.0 isn’t attached to some technology or set of technologies, equally well the possibility of asynchronous page update was provided by Flash 4 in 1999.
[6] Web-syndication
Simultaneous propagation of information including audio and video content to different pages and web sites, as a rule, with the help of RSS or Atom technologies. The principle consists in propagation of materials titles and links to them. Primarily, this technology was used in news resources and blogs, but gradually it becomes widely adopted.
[7] Mash-up
Web mash-up is a service, which uses other services as info resources, completely or partially, providing a user with new functionality for work. As a result, such a service may become a new source of information for other web mash-up services as well. Thus, forms a whole net of mutually dependent services, integrated with each other.
[8] Labels (Tags)
Key words, which describe the object under consideration or relate it to some category. These are labels, that are attributed to an object to define its place among other objects.
Appearance and fast spread of blogs also fit into Web2.0 conception, creating the so-called “writable web”.
There is also a possibility to tag the document with key words in the HTTP language.
[9] Socialization
Usage of development works, which allows to create a community.
[10] Web2.0 disadvantages
When you use third-party services it can bring you certain problems along with advantages:
SEO
Search engine optimization (SEO) is the process of enhancing internal (HTML code, structure, content) and external (quantity and quality of referral resources) parameters focused on the improvement of site's positions delivered by a search engine on a concrete inquiry. SEO also includes different kinds of search, for instance image search, local search, etc.
SEO studies how search algorithms work as well as what people search for. It includes site's coding, its structure and presentation, different problems fixing. It performs also more unique features, such as adding content to a site, ensuring that it is easily indexed with the help of search engine robots, and of course making the site's look more eye-catching.
So it's worth starting with an introduction to the work of a search system. First and foremost, a search system consists of several components: spider, crawler, indexer, database and the most important part - results engine. The task of the last component is to define which pages meet a search demand and what order it should deliver results. The criteria, according to which a system takes final decision, are permanently improving, and this is the main problem of all optimizers. The SEO conception is build on operation algorithms of various systems.
On the whole, an optimizer's activity consists of correct work on external and internal parameters, influencing search results. They single out 3 SEO-activities classes: registration in catalogues and ratings, links exchange and other activities, improving quantity of links on a page. They can vary from one search engine to another.
Professionals are engaged only in "white" optimization, which includes only legal methods for site's promotion. "Grey" optimization, acceptable in some cases, implies application of unwanted methods of optimization: usage of automated systems of links exchange or purchase of links from subject sites.
"Black" optimization is extremely unwanted, it doesn't exclude the removal of a site from a search engine data base. "Black" are considered the following methods: hidden text usage (background color, tiny size) and dorveys creation. Dorveys are automatically created pages with senseless set of key words. Dorveys are used as brokers between a search engine and a promoted site.
Seo-activity has many pitfalls: spam filters, which check pages for spam and make fair optimizer's work hard; permanently changing algorithms of a results engine work; tough penalties and a great risk using even "grey" methods of optimization. SEO is a highly dynamic activity, which demands from optimizers new instruments, methods and understanding of the mechanism.
How it works?
The leading search engines, such as Google, Yahoo! and Microsoft, use crawlers to find pages according to their search results. Search engine crawlers may consider a number of various factors crawling a site. Not every single page is indexed by search engines. Some search engines work with a paid submission service that can guarantee crawling for a certain fee or fee per click. Such kind of programs guarantee inclusion in the database, but do not ensure particular ranking within search results.
Everything is possible with PHP
Php can really do anything. Essentially, its application field is focused on writing of scripts, which work on server side. So Php is able to perform all that performs any other CGI program, for instance, to process form data, generate dynamic pages or send and accept cookies. But PHP can fulfill many more tasks.
There are 3 main fields, where Php is used:
- Scripts creating for implementing on server side. Php is used most widely exactly this way. All what you'll need are Php parser (in the form of CGI program or server module), web-server and browser. For you to track the results of Php scripts implementation in browser you need a working web-server and installed Php case you just experiment, you can use your home computer instead of server;
- Script creation for implementation in a command line. You can create a Php script, which is able to launch independently from web-server and browser. All that you will need is a Php parser. Yjis way of Php using suits perfectly for scripts, which should be executed regularly, for example, by means of cron (on Unix or Linux platforms) or Task Scheduler on Windows platforms. These scripts can also be used for simple text processing tasks;
- Creation of windows applications, which are executed on a client's side. Maybe Php isn't the best language for creation of such applications, but if you know Php very well and want to use some of its facilities for your client-applications, then you can use PHP-GTK to create such applications. In such a way you can create cross-platform applications. PHP-GTK is Php extension and isn't supplied together with Php distribution disk;
Php is available for the majority of operational systems, including Linux, many Unix modifications (such as HP-UX, Solaris and OpenBSD), Microsoft Windows, Mac OS X, RISC OS, and many others. In php is also included support of the majority of modern web-servers, such as Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlane servers, Oreilly Website Pro, Caudium, Xitami, OmniHTTPd servers and many others. For the majority of servers Php is supplied as a module, for others, which support CGI standard, Php can function as a CGI processor.
So, when choosing Php you get the freedom of choice of an operational system and a web-server. Besides, you get the choice either to use procedure-oriented programming or object-oriented programming or even their combination.
Php is able not only to deliver HTML. Php facilities include images, PDF files or even Flash reels formation, which can be created "on the fly". Php can also deliver any text data, such as XHTML and other XML-files. Php is able to perform automatic generation of such files and save them in file system of your server instead of giving to a client, in such a way organizing dynamic content cash located on a server side.
One of the most considerable Php advantages is a support of a wide data bases range. It is very simple to create a script, which uses data bases.
Today Php supports the following:
Adabas D, InterBase, PostgreSQL,
dBase, FrontBase, SQLite, Empress mSQL, Solid,
Direct MS-SQL, Sybase,
Hyperwave, MySQL, Velocis,
IBM DB2 ODBC, Unix dbm
Informix, Oracle (OCI7 и OCI8),
Ingres, Ovrimos.
There is also DBX support for work at the abstract level in Php, so that you can work with any data base that uses Php. Besides, php supports ODBC (Open Database Connection standard), so that you can work with any DB supporting that recognized world-wide standard.
Php also supports "communication" with other services using such protocols as LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (on Windows platform) and many others. Besides, you get an opportunity to work with network sockets directly. Php supports the standard of exchange of complex data structures WDDX. We can't but mention here Java objects support and the possibility of their usage as Php objects. To access remote objects you can use CORBA extension.
Of paramount importance is electronic commerce and payment realization functions - Cybercash, CyberMUT, VeriSign Payflow Pro and CCVS. And the last but not the least we should mention support of many other extensions, such as mnoGoSearch machine functions, IRC Gateway functions, functions for work with compressed files (gzip, bz2), functions of calendar calculations, translation and much more.
Software methodology and testing practice.
It hardly makes sense to tell you about the significance of testing period in the context of software development process, it has been a well-known fact for a long time that implementation of each application life cycle stage is an indispensable condition for high-quality software product emergence. But here we need to admit that through the history of software testing - it counts more than 50 years - testing has played the role of a step child, who is in charge of the most complicated, routine and second-rate work. Here is a bright example: author's rights are secured by law, you can easily know them. But what do we know about those people who test applications, and yet their share of software development is almost the third of the whole work process.
Recently the situation has changed greatly, and one can single out here 2 main tendencies. The first one - there grows understanding of the fact, that industrial test methods should be applied, special automation means in particular. The second - search for expenditure optimization facilities from the point of view of general business organization, including usage of outsourcing model.
It is worth mentioning the fact that there is plenty of literature and courses on software designing and coding, meanwhile materials on testing and adjustment are practically lacking.
Peculiarities of testing organization.
Firstly, one needs to mention, that testing issues are to be considered in the context of the whole software life cycle, beginning from technical specification and ending with application maintenance. As we know, testing stage - is a procedure of software error detection before its industrial application. It is obvious, that work content here is connected with the number of errors, in connection with that one should clearly define basic causes of their appearance:
- insufficient organizational, methodical and technical support of the development process;
- undertime of project implementation;
- project complexity, great number of requirements and their alterations as the work advances;
- insufficient developers' experience.
Testing in its turn is only a component of adjustment – software fine-tuning process before its startup. This process includes 2 basic procedures: error detection (testing) and search for their causes and their elimination. However, taking into consideration all possible interconnections of those procedures (for example, error detection requires carrying out additional testing), one should emphasize, that testing is quite a stand-alone, independent software life cycle stage. Meanwhile, rise of development quality brings directly down expenditures on errors elimination, but it doesn’t affect so much scope of testing: testing must be carried out in any case and it is desirable to do it at full scale.
It is also obvious that testing organization and procedure depend greatly on target development purpose: commercial off-the-shelf software, custom project or in-house project. Speaking about testing peculiarities in IT departments it is necessary to single out 3 main contradictory aspects. Testing volume is big. The thing is that exactly in case of in-house development they very often make changes (many people mention continuous flow of corrections on demands of department-customers). But as is generally known, the principle says that a change in one code line demands repeated carrying out of complete testing process.
Very often developers are not interested in decreasing the number of bugs while testing. Companies' management estimates the work of IT department according to its ability to keep within the budget (time and money), and programs' operation problems bother them considerably less. That's why growth of testing volume increases IT department expenditures without corresponding resources allocation from authorities.
The process of quality testing demands specialists and corresponding profile tools availability. And as we have described before, it is not advantageous for IT departments to keep in-house testers.
Common testing questions.
Increase of software testing quality (preserving reasonable level of expenditures on its implementation) should be performed by means of modern industrial methods (organizational and technical) for the implementation of those operations.
The article's limits do not allow expounding application issues of concrete tools in details. It will be more useful to consider some general questions concerning testing tasks classification. Testing runs through the entire software life cycle, beginning from designing and ending with indefinitely long operation period. These operations are directly connected with tasks of requirements and alterations' management, as the goal of testing is exactly the possibility to make sure that programs correspond to the announced requirements.
Testing is a step-by-step process. Probably, it makes sense to divide check process of operability in the course of code writing (by programmer himself) and after completion of the principal coding stage (by special testers). Here you can remember the golden rule of programming: writing of every 20-30 lines of code (all the more so completed procedures, functions) should be accompanied by check of their operability. At the same time, it is important to stress the significant difference between testing in the course of coding process and after its termination: in the first case one should continue program writing (launching other test examples) only after elimination of an error, in the second case an instruction burst of a test series with a simple results fixation is implemented.
Testing is also an iterative process. After each bug is found and fixed, it is obligatory to carry out test replication in order to make sure of program workability. Moreover, to identify the reason of a problem that has been found, there should be carried out an additional testing. Meanwhile, one should remember the fundamental conclusion made by professor Edceger Dakestroy in 1972: "Program testing can be a proof of errors presence, but it will never prove their absence!".
Different kinds of testing may be classified according to following basic characteristics (though any categorization is quite relative).
Functional and charging testing.
Operations of the first type one can label as traditional - software testing for compliance with requirements of the functional. Topicality of relatively new tasks has noticeably grown in recent years in relation to new tasks such as developed product compatibility with various software and hardware platforms, applications, et alia. The second type is usually bound to efficiency and productivity estimation tasks, but in truth, it touches upon a much larger scope of problems - program code bottlenecks detection, detection of resources "leak", etc.
Component and integration testing.
It is obvious, that the first type of testing is carried out on earlier development stages (as finished modules are created), the second - at the finish. Their principal difference consists in the fact that component testing is mainly based on "white box" methods (with due account taken of internal logic and program structure), and integration testing - on "black box" methods (knowledge of interior specifications only). In accordance with that, in the first case a substantial part of work is laid on designers and software developers, in the second - on independent testers.
Manual and automated testing.
As the complexity of a project grows, part of tasks resolved by means of automated methods (usage of scripts, ISS programs) steadily grows. Overwhelming majority of charging testing tasks can be solved exceptionally with their help.
It may have sense to mark out current system configuration testing and testing taking in account its possible development. Possible future problems analysis is often bound to ranging tasks today, for instance increase of system load in the result of user population growth. Yet here one should keep in mind wider range of questions, in particular prospects of platform change. We should stress here that ranging estimation can (and should) be done not only by means of real application testing, but also by system modeling methods on the level of general software structure (they often have forgotten about this approach in recent years).
Solution to the problem - testing centers.
As it has been already said, the leading role in testing issues play methodology and organizational component. As for tools, they play secondary role in this process, and choice of this or that product for testing tasks automation is defined in dependence of aims and specificity of a project, current preferences of a customer, budget. There is a whole spectrum of automated testing means on the market today, and now IBM Rational, Mercury, Segue, Compuware are in the lead. Among competitive software products great attention is now being paid to the most popular IBM Rational Robot system.
Though, in spite of the right methods and tools appliance importance, more topical may be the change of general testing works positioning in the common structure of development process. In particular, it implies the necessity to separate testing as a detached service, implemented on the in-house level or as part of outsourcing. Outsourcing services are quite new for the market, they easily arouse people's interest. So let's enumerate basic principles of interaction:
- accomplishment of the entire software testing work package or its stages on the stand of the Center or on the Customer's land;
- consulting services and customers' training regarding the questions of organizational testing processes within the company;
- testing audit carried out by off-site companies;
- outsourcing of technical and software-based recourses for testing implementation.
Keeping in mind the significance of testing issues, one should remember one of the classics of modern software development methods Dutch professor Edceger Dakestroy, who in the end of 60-s grounded the necessity of structural programming methods appliance based on the task of decreasing man-hours on testing.
Specific character of testing also consists in the fact, that in difference from other stages of software development, having quite formal criteria of their completion, this very process is endless in general. As you know, each last mistake that was found is in reality the last but one. The right position here is to define the necessary scope of testing, and this is a separate complex task.
Speaking about testing, we shouldn't forget about the significance of software verification (a systematic procedure checking the correctness). A slight difference between those notions consists in the fact, that testing is based upon possibilities of comparing the results received and sample ones. Though, there is quite a big class of tasks when there are no samples at all. A classical example of this variant is construction of complex mathematical models with solution of tens of thousands differential equations, but identical situations can also occur when one handles business-applications. In this case it is necessary to include in software additional functions and carry out special research for a user becomes confident that a program works correctly indeed.
Your web-site is a virtual space where your company is presented and your customers can contact you. Creating your virtual space is our job.
||phpFoX Mods & CustomizationsphpFoX Integration and Customization. Our specialists can integrate phpFoX with various programs.
Our web-studio provides unique and cost effective approaches to clarify to what extent your website interface is user-oriented.
||Custom professional PHP Programming & php DevelopmentOur web-studio presents full Custom Professional PHP Applications Development.
||Vbulletin customizationAre you ready to make a positive change on your site with the help of vBulletin? Just contact Attractivestyle LTD.
Wide experience
Attractivestyle LTD is one of the leading offshore software companies majoring in web development, web design and Web Support, providing only cost cutting, high grade solutions to any requirements! Wherever you are, USA or Europe, our company can help.
Headquartered in London, UK, Attractivestyle LTD has located its branches in the USA and Moscow. Our affiliates in all those countries have acquire a high reputation and are furnished with state-of-the-art equipment for in order to put all your projects into practice on a 24/7 basis.
Advanced communications
You can reach us by phone, e-mail, Instant Messenger, AOL, every means that is convenient for you.
Our consultations are free!
We provide only clear, concise explanations for all facets of your web site services for free.
Feedback
Our system of relations with our clients is designed to create the best conditions for every person to work with us. Attractivestyle LTD employs only qualified, competent specialists to implement the projects. Every project is guided by a project manager, who does all his best to make mutual cooperation easy and agreeable.
